Rename DOMWindow::clear to something more descriptive
authorabarth@webkit.org <abarth@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 17 Aug 2012 00:29:35 +0000 (00:29 +0000)
committerabarth@webkit.org <abarth@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 17 Aug 2012 00:29:35 +0000 (00:29 +0000)
https://bugs.webkit.org/show_bug.cgi?id=93993

Reviewed by Eric Seidel.

As requested by Eric Seidel. In WebKit, we typically use "clear" to
mean zeroing out a pointer (e.g., OwnPtr::clear). For DOMWindow, it's
more like we're resetting the DOMWindow to a known state (i.e., its
initial state), modulo a wrinkle w.r.t. the PageCache. The new name
attempts to clarify the situation.

* dom/Document.cpp:
(WebCore::Document::~Document):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::clear):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::~DOMWindow):
(WebCore::DOMWindow::frameDestroyed):
(WebCore::DOMWindow::resetUnlessSuspendedForPageCache):
(WebCore::DOMWindow::resetDOMWindowProperties):
* page/DOMWindow.h:
(DOMWindow):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@125832 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/dom/Document.cpp
Source/WebCore/loader/FrameLoader.cpp
Source/WebCore/page/DOMWindow.cpp
Source/WebCore/page/DOMWindow.h

index 49edd4e..e67b9f4 100644 (file)
@@ -1,3 +1,28 @@
+2012-08-16  Adam Barth  <abarth@webkit.org>
+
+        Rename DOMWindow::clear to something more descriptive
+        https://bugs.webkit.org/show_bug.cgi?id=93993
+
+        Reviewed by Eric Seidel.
+
+        As requested by Eric Seidel. In WebKit, we typically use "clear" to
+        mean zeroing out a pointer (e.g., OwnPtr::clear). For DOMWindow, it's
+        more like we're resetting the DOMWindow to a known state (i.e., its
+        initial state), modulo a wrinkle w.r.t. the PageCache. The new name
+        attempts to clarify the situation.
+
+        * dom/Document.cpp:
+        (WebCore::Document::~Document):
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::clear):
+        * page/DOMWindow.cpp:
+        (WebCore::DOMWindow::~DOMWindow):
+        (WebCore::DOMWindow::frameDestroyed):
+        (WebCore::DOMWindow::resetUnlessSuspendedForPageCache):
+        (WebCore::DOMWindow::resetDOMWindowProperties):
+        * page/DOMWindow.h:
+        (DOMWindow):
+
 2012-08-16  Sheriff Bot  <webkit.review.bot@gmail.com>
 
         Unreviewed, rolling out r125717.
index af9fc48..91f9210 100644 (file)
@@ -612,9 +612,9 @@ Document::~Document()
     ASSERT(!m_parentTreeScope);
     ASSERT(!m_guardRefCount);
 
-    // FIXME: Should we clear m_domWindow when we detach from the Frame?
+    // FIXME: Should we reset m_domWindow when we detach from the Frame?
     if (m_domWindow)
-        m_domWindow->clear();
+        m_domWindow->resetUnlessSuspendedForPageCache();
 
     m_scriptRunner.clear();
 
index 02a1267..edd6f88 100644 (file)
@@ -561,7 +561,7 @@ void FrameLoader::clear(Document* newDocument, bool clearWindowProperties, bool
     // Do this after detaching the document so that the unload event works.
     if (clearWindowProperties) {
         InspectorInstrumentation::frameWindowDiscarded(m_frame, m_frame->document()->domWindow());
-        m_frame->document()->domWindow()->clear();
+        m_frame->document()->domWindow()->resetUnlessSuspendedForPageCache();
         m_frame->script()->clearWindowShell(newDocument->domWindow(), m_frame->document()->inPageCache());
     }
 
index 627ff85..257f8f2 100644 (file)
@@ -437,9 +437,9 @@ DOMWindow::~DOMWindow()
     else
         willDestroyDocumentInFrame();
 
-    // As the ASSERTs above indicate, this clear should only be necesary if this DOMWindow is suspended for the page cache.
+    // As the ASSERTs above indicate, this reset should only be necessary if this DOMWindow is suspended for the page cache.
     // But we don't want to risk any of these objects hanging around after we've been destroyed.
-    clearDOMWindowProperties();
+    resetDOMWindowProperties();
 
     removeAllUnloadEventListeners(this);
     removeAllBeforeUnloadEventListeners(this);
@@ -474,7 +474,7 @@ void DOMWindow::frameDestroyed()
 {
     willDestroyDocumentInFrame();
     FrameDestructionObserver::frameDestroyed();
-    clearDOMWindowProperties();
+    resetDOMWindowProperties();
 }
 
 void DOMWindow::willDetachPage()
@@ -522,16 +522,12 @@ void DOMWindow::unregisterProperty(DOMWindowProperty* property)
     m_properties.remove(property);
 }
 
-void DOMWindow::clear()
+void DOMWindow::resetUnlessSuspendedForPageCache()
 {
-    // The main frame will always try to clear its DOMWindow when a new load is committed, even if that
-    // DOMWindow is suspended in the page cache.
-    // In those cases we need to make sure we don't actually clear it.
     if (m_suspendedForPageCache)
         return;
-    
     willDestroyDocumentInFrame();
-    clearDOMWindowProperties();
+    resetDOMWindowProperties();
 }
 
 void DOMWindow::suspendForPageCache()
@@ -567,7 +563,7 @@ void DOMWindow::reconnectDOMWindowProperties()
         properties[i]->reconnectFrameFromPageCache(m_frame);
 }
 
-void DOMWindow::clearDOMWindowProperties()
+void DOMWindow::resetDOMWindowProperties()
 {
     m_properties.clear();
 
index a7c216a..8739618 100644 (file)
@@ -109,7 +109,7 @@ namespace WebCore {
         void registerProperty(DOMWindowProperty*);
         void unregisterProperty(DOMWindowProperty*);
 
-        void clear();
+        void resetUnlessSuspendedForPageCache();
         void suspendForPageCache();
         void resumeFromPageCache();
 
@@ -422,7 +422,7 @@ namespace WebCore {
             PrepareDialogFunction = 0, void* functionContext = 0);
         bool isInsecureScriptAccess(DOMWindow* activeWindow, const String& urlString);
 
-        void clearDOMWindowProperties();
+        void resetDOMWindowProperties();
         void disconnectDOMWindowProperties();
         void reconnectDOMWindowProperties();
         void willDestroyDocumentInFrame();