Remove redundant updateViewportArguments() call when page is restored from page cache.
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 29 Mar 2012 12:53:08 +0000 (12:53 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 29 Mar 2012 12:53:08 +0000 (12:53 +0000)
https://bugs.webkit.org/show_bug.cgi?id=82500

Patch by Zalan Bujtas <zbujtas@gmail.com> on 2012-03-29
Reviewed by Kenneth Rohde Christiansen.

.:

Add manual test for history navigation with viewport width check.

* ManualTests/viewport-width-test-after-history-navigation.html: Added.

Source/WebCore:

Document::updateViewportArguments() is called twice, while restoring a page from page cache.
First, it is called when the document is set on the mainframe and later, it is called
when page cache finished the restoration. Since viewport arguments don't change between
the 2 calls, it's safe to remove the second.

Manual test added. Viewport value updates heavily depend on UI process code.

* dom/Document.cpp:
(WebCore::Document::documentDidResumeFromPageCache):

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

ChangeLog
ManualTests/viewport-width-test-after-history-navigation.html [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/dom/Document.cpp

index e00a487..18d0b92 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2012-03-29  Zalan Bujtas  <zbujtas@gmail.com>
+
+        Remove redundant updateViewportArguments() call when page is restored from page cache.
+        https://bugs.webkit.org/show_bug.cgi?id=82500
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        Add manual test for history navigation with viewport width check.
+
+        * ManualTests/viewport-width-test-after-history-navigation.html: Added.
+
 2012-03-28  Kevin Ollivier  <kevino@theolliviers.com>
 
         [wx] Unreviewed. Build fix, move WTF back into JSCore target
diff --git a/ManualTests/viewport-width-test-after-history-navigation.html b/ManualTests/viewport-width-test-after-history-navigation.html
new file mode 100644 (file)
index 0000000..4c265bd
--- /dev/null
@@ -0,0 +1,40 @@
+<html>
+<head>
+    <meta name="viewport" content="width=700">
+    <script>
+        var originalViewportWidth;
+
+        function checkViewportWidthAfterHistoryNavigation() {
+            if (originalViewportWidth == window.innerWidth)
+                document.body.innerHTML = "<div style='color:green'>PASS, viewport width is OK after history navigation.</div>";
+            else
+                document.body.innerHTML = "<div style='color:red'>FAIL, viewport width is different after history navigation.</div>";
+        }
+
+        function navigateAwayAndBack() {
+            // Force layout before getting viewport width.
+            document.body.offsetTop;
+            originalViewportWidth = window.innerWidth;
+
+            // Assigning to window.location does not create a history entry, so instead link click is simulated.
+            var evt = document.createEvent("MouseEvents");
+            evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
+            document.getElementById('anchor').dispatchEvent(evt);
+            // Initiate timer to do final verification as we have navigated back to the cached version of this page.
+            // This test makes use of the behavior where timers are restored on a cached page.
+            setTimeout('checkViewportWidthAfterHistoryNavigation()', 1000);
+
+        }
+    </script>
+</head>
+<body onload='setTimeout("navigateAwayAndBack()", 0 );'>
+    <a id='anchor' href='data:text/html,
+        <html>
+            <head>
+                <meta name="viewport" content="width=600">
+            </head>
+            <body onload="document.body.offsetTop; history.back();"></body>
+        </html>'>
+    </a>
+</body>
+</html>
index 6b79a52..adf673b 100644 (file)
@@ -1,3 +1,20 @@
+2012-03-29  Zalan Bujtas  <zbujtas@gmail.com>
+
+        Remove redundant updateViewportArguments() call when page is restored from page cache.
+        https://bugs.webkit.org/show_bug.cgi?id=82500
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        Document::updateViewportArguments() is called twice, while restoring a page from page cache.
+        First, it is called when the document is set on the mainframe and later, it is called
+        when page cache finished the restoration. Since viewport arguments don't change between
+        the 2 calls, it's safe to remove the second.
+
+        Manual test added. Viewport value updates heavily depend on UI process code.
+
+        * dom/Document.cpp:
+        (WebCore::Document::documentDidResumeFromPageCache):
+
 2012-03-29  Charles Wei  <charles.wei@torchmobile.com.cn>
 
         [BlackBerry] Add Internal test support for blackberry porting.
index 1e424f7..5490dcc 100644 (file)
@@ -4222,8 +4222,6 @@ void Document::documentDidResumeFromPageCache()
 
     ASSERT(m_frame);
     m_frame->loader()->client()->dispatchDidBecomeFrameset(isFrameSet());
-
-    updateViewportArguments();
 }
 
 void Document::registerForPageCacheSuspensionCallbacks(Element* e)