[BlackBerry] Initial scale changes depending on the order of page navigations
authorzhajiang@rim.com <zhajiang@rim.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 11 Apr 2013 19:56:36 +0000 (19:56 +0000)
committerzhajiang@rim.com <zhajiang@rim.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 11 Apr 2013 19:56:36 +0000 (19:56 +0000)
https://bugs.webkit.org/show_bug.cgi?id=114448

Patch by Jacky Jiang <zhajiang@rim.com>.
Reviewed by Rob Buis.

PR: 323941
During page transitions, absoluteVisibleOverflowSize() and contentsSize()
in fixedLayoutSize() were based on the old page when we just started or
committed provisinal load. In that case, fixedLayoutSize() is very old
page dependent and can cause inconsistent behaviors. For example, if
the old page contents width is 4000, we will get DEFAULT_MAX_LAYOUT_WIDTH 1024
as the new page's fixedLayoutSize; however, we will get 768 if we
navigate to the new page directly.
To fix that, return default layout size if the page doesn't have
virtual viewport and m_loadState is Provisional.

* Api/WebPage.cpp:
(BlackBerry::WebKit::WebPagePrivate::fixedLayoutSize):

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

Source/WebKit/blackberry/Api/WebPage.cpp
Source/WebKit/blackberry/ChangeLog

index a9c766e..915ab92 100644 (file)
@@ -2320,7 +2320,10 @@ IntSize WebPagePrivate::fixedLayoutSize(bool snapToIncrement) const
 
     // If the load state is none then we haven't actually got anything yet, but we need to layout
     // the entire page so that the user sees the entire page (unrendered) instead of just part of it.
-    if (m_loadState == None)
+    // If the load state is Provisional, it is possible that absoluteVisibleOverflowSize() and
+    // contentsSize() are based on the old page and cause inconsistent fixedLayoutSize, so layout the
+    // new page based on the defaultLayoutSize as well.
+    if (m_loadState == None || m_loadState == Provisional)
         return IntSize(defaultLayoutWidth, defaultLayoutHeight);
 
     if (m_viewMode == FixedDesktop) {
index f30b330..3b45eed 100644 (file)
@@ -1,3 +1,24 @@
+2013-04-11  Jacky Jiang  <zhajiang@rim.com>
+
+        [BlackBerry] Initial scale changes depending on the order of page navigations
+        https://bugs.webkit.org/show_bug.cgi?id=114448
+
+        Reviewed by Rob Buis.
+
+        PR: 323941
+        During page transitions, absoluteVisibleOverflowSize() and contentsSize()
+        in fixedLayoutSize() were based on the old page when we just started or
+        committed provisinal load. In that case, fixedLayoutSize() is very old
+        page dependent and can cause inconsistent behaviors. For example, if
+        the old page contents width is 4000, we will get DEFAULT_MAX_LAYOUT_WIDTH 1024
+        as the new page's fixedLayoutSize; however, we will get 768 if we
+        navigate to the new page directly.
+        To fix that, return default layout size if the page doesn't have
+        virtual viewport and m_loadState is Provisional.
+
+        * Api/WebPage.cpp:
+        (BlackBerry::WebKit::WebPagePrivate::fixedLayoutSize):
+
 2013-04-11  Arvid Nilsson  <anilsson@rim.com>
 
         [BlackBerry] LayerTexture refactoring