Title: [106899] trunk/Source/WebCore
Revision
106899
Author
[email protected]
Date
2012-02-06 20:16:50 -0800 (Mon, 06 Feb 2012)

Log Message

Avoid Page::updateViewportArguments() if the causing frame is not the main frame
https://bugs.webkit.org/show_bug.cgi?id=77387

Reviewed by Kenneth Rohde Christiansen.

* dom/Document.cpp:
(WebCore::Document::processViewport):
(WebCore::Document::updateViewportArguments):
(WebCore::Document::setInPageCache):
* dom/Document.h:
(Document):
* html/HTMLBodyElement.cpp:
(WebCore::HTMLBodyElement::insertedIntoDocument):
* page/Frame.cpp:
(WebCore::Frame::setDocument):
* page/Page.cpp:
(WebCore::Page::viewportArguments):
(WebCore):
* page/Page.h:
(Page):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (106898 => 106899)


--- trunk/Source/WebCore/ChangeLog	2012-02-07 04:05:21 UTC (rev 106898)
+++ trunk/Source/WebCore/ChangeLog	2012-02-07 04:16:50 UTC (rev 106899)
@@ -1,3 +1,26 @@
+2012-02-06  Xianzhu Wang  <[email protected]>
+
+        Avoid Page::updateViewportArguments() if the causing frame is not the main frame
+        https://bugs.webkit.org/show_bug.cgi?id=77387
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        * dom/Document.cpp:
+        (WebCore::Document::processViewport):
+        (WebCore::Document::updateViewportArguments):
+        (WebCore::Document::setInPageCache):
+        * dom/Document.h:
+        (Document):
+        * html/HTMLBodyElement.cpp:
+        (WebCore::HTMLBodyElement::insertedIntoDocument):
+        * page/Frame.cpp:
+        (WebCore::Frame::setDocument):
+        * page/Page.cpp:
+        (WebCore::Page::viewportArguments):
+        (WebCore):
+        * page/Page.h:
+        (Page):
+
 2012-02-06  Martin Robinson  <[email protected]>
 
         Fix some miscellaneous 'make dist' error for WebKitGTK+.

Modified: trunk/Source/WebCore/dom/Document.cpp (106898 => 106899)


--- trunk/Source/WebCore/dom/Document.cpp	2012-02-07 04:05:21 UTC (rev 106898)
+++ trunk/Source/WebCore/dom/Document.cpp	2012-02-07 04:16:50 UTC (rev 106899)
@@ -2794,11 +2794,13 @@
     m_viewportArguments = ViewportArguments(ViewportArguments::ViewportMeta);
     processArguments(features, (void*)&m_viewportArguments, &setViewportFeature);
 
-    Frame* frame = this->frame();
-    if (!frame || !frame->page())
-        return;
+    updateViewportArguments();
+}
 
-    frame->page()->updateViewportArguments();
+void Document::updateViewportArguments()
+{
+    if (page() && page()->mainFrame() == frame())
+        page()->chrome()->dispatchViewportPropertiesDidChange(m_viewportArguments);
 }
 
 void Document::processReferrerPolicy(const String& policy)
@@ -4076,8 +4078,7 @@
         setRenderer(m_savedRenderer);
         m_savedRenderer = 0;
 
-        if (frame() && frame()->page())
-            frame()->page()->updateViewportArguments();
+        updateViewportArguments();
 
         if (childNeedsStyleRecalc())
             scheduleStyleRecalc();

Modified: trunk/Source/WebCore/dom/Document.h (106898 => 106899)


--- trunk/Source/WebCore/dom/Document.h	2012-02-07 04:05:21 UTC (rev 106898)
+++ trunk/Source/WebCore/dom/Document.h	2012-02-07 04:16:50 UTC (rev 106899)
@@ -803,6 +803,7 @@
      */
     void processHttpEquiv(const String& equiv, const String& content);
     void processViewport(const String& features);
+    void updateViewportArguments();
     void processReferrerPolicy(const String& policy);
 
     // Returns the owning element in the parent document.

Modified: trunk/Source/WebCore/html/HTMLBodyElement.cpp (106898 => 106899)


--- trunk/Source/WebCore/html/HTMLBodyElement.cpp	2012-02-07 04:05:21 UTC (rev 106898)
+++ trunk/Source/WebCore/html/HTMLBodyElement.cpp	2012-02-07 04:16:50 UTC (rev 106899)
@@ -163,6 +163,8 @@
 {
     HTMLElement::insertedIntoDocument();
 
+    ASSERT(document());
+
     // FIXME: Perhaps this code should be in attach() instead of here.
     Element* ownerElement = document()->ownerElement();
     if (ownerElement && (ownerElement->hasTagName(frameTag) || ownerElement->hasTagName(iframeTag))) {
@@ -180,8 +182,7 @@
     if (FrameView* view = document()->view())
         view->scheduleRelayout();
 
-    if (document() && document()->page())
-        document()->page()->updateViewportArguments();
+    document()->updateViewportArguments();
 }
 
 bool HTMLBodyElement::isURLAttribute(Attribute *attr) const

Modified: trunk/Source/WebCore/page/Frame.cpp (106898 => 106899)


--- trunk/Source/WebCore/page/Frame.cpp	2012-02-07 04:05:21 UTC (rev 106898)
+++ trunk/Source/WebCore/page/Frame.cpp	2012-02-07 04:16:50 UTC (rev 106899)
@@ -290,11 +290,11 @@
     // Update the cached 'document' property, which is now stale.
     m_script.updateDocument();
 
-    if (m_page) {
-        m_page->updateViewportArguments();
-        if (m_page->mainFrame() == this)
-            notifyChromeClientWheelEventHandlerCountChanged();
-    }
+    if (m_doc)
+        m_doc->updateViewportArguments();
+
+    if (m_page && m_page->mainFrame() == this)
+        notifyChromeClientWheelEventHandlerCountChanged();
 }
 
 #if ENABLE(ORIENTATION_EVENTS)

Modified: trunk/Source/WebCore/page/Page.cpp (106898 => 106899)


--- trunk/Source/WebCore/page/Page.cpp	2012-02-07 04:05:21 UTC (rev 106898)
+++ trunk/Source/WebCore/page/Page.cpp	2012-02-07 04:16:50 UTC (rev 106899)
@@ -240,6 +240,11 @@
 #endif
 }
 
+ViewportArguments Page::viewportArguments() const
+{
+    return mainFrame() && mainFrame()->document() ? mainFrame()->document()->viewportArguments() : ViewportArguments();
+}
+
 #if ENABLE(THREADED_SCROLLING)
 ScrollingCoordinator* Page::scrollingCoordinator()
 {
@@ -430,15 +435,6 @@
         frame->document()->styleSelectorChanged(DeferRecalcStyle);
 }
 
-void Page::updateViewportArguments()
-{
-    if (!mainFrame() || !mainFrame()->document())
-        return;
-
-    m_viewportArguments = mainFrame()->document()->viewportArguments();
-    chrome()->dispatchViewportPropertiesDidChange(m_viewportArguments);
-}
-
 void Page::refreshPlugins(bool reload)
 {
     if (!allPages)

Modified: trunk/Source/WebCore/page/Page.h (106898 => 106899)


--- trunk/Source/WebCore/page/Page.h	2012-02-07 04:05:21 UTC (rev 106898)
+++ trunk/Source/WebCore/page/Page.h	2012-02-07 04:16:50 UTC (rev 106899)
@@ -133,8 +133,7 @@
 
         RenderTheme* theme() const { return m_theme.get(); };
 
-        ViewportArguments viewportArguments() const { return m_viewportArguments; }
-        void updateViewportArguments();
+        ViewportArguments viewportArguments() const;
 
         static void refreshPlugins(bool reload);
         PluginData* pluginData() const;
@@ -464,8 +463,6 @@
 
         ViewMode m_viewMode;
 
-        ViewportArguments m_viewportArguments;
-
         double m_minimumTimerInterval;
 
         OwnPtr<ScrollableAreaSet> m_scrollableAreaSet;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to