Page Scale Factor broken when navigating history on pages with child frames
authorfsamuel@chromium.org <fsamuel@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 26 Oct 2011 08:52:42 +0000 (08:52 +0000)
committerfsamuel@chromium.org <fsamuel@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 26 Oct 2011 08:52:42 +0000 (08:52 +0000)
https://bugs.webkit.org/show_bug.cgi?id=70459

Reviewed by Darin Fisher.

With frameScaleFactor now always returning 1.0 for subframes and pageScaleFactor for the mainFrame,
and there being only a single pageScaleFactor, history for scaling is broken. Scaling history is
saved on a per frame basis but restored, overriding the per-page pageScaleFactor multiple times.
As a result, sometimes pages that have subframes end up getting a scale factor of 1.0 instead
of the correct scale factor that was assigned to the main frame.

No new tests because I don't know how to test this.

* loader/HistoryController.cpp:
(WebCore::HistoryController::restoreScrollPositionAndViewState):

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

Source/WebCore/ChangeLog
Source/WebCore/loader/HistoryController.cpp

index 6f820e70be763d7e4b2c55aa3455d4af401b44a5..c7f908e0375680f6b23e4204581161f1eecf89ca 100644 (file)
@@ -1,3 +1,21 @@
+2011-10-26  Fady Samuel  <fsamuel@chromium.org>
+
+        Page Scale Factor broken when navigating history on pages with child frames
+        https://bugs.webkit.org/show_bug.cgi?id=70459
+
+        Reviewed by Darin Fisher.
+
+        With frameScaleFactor now always returning 1.0 for subframes and pageScaleFactor for the mainFrame,
+        and there being only a single pageScaleFactor, history for scaling is broken. Scaling history is
+        saved on a per frame basis but restored, overriding the per-page pageScaleFactor multiple times.
+        As a result, sometimes pages that have subframes end up getting a scale factor of 1.0 instead
+        of the correct scale factor that was assigned to the main frame.
+
+        No new tests because I don't know how to test this.
+
+        * loader/HistoryController.cpp:
+        (WebCore::HistoryController::restoreScrollPositionAndViewState):
+
 2011-10-26  Sheriff Bot  <webkit.review.bot@gmail.com>
 
         Unreviewed, rolling out r98429.
index 53d64d8ac77f6f99916f275fc86238c921969d66..f053a98e8fc3ba6d36f5224dd2514b04cc8401e0 100644 (file)
@@ -125,7 +125,8 @@ void HistoryController::restoreScrollPositionAndViewState()
     if (FrameView* view = m_frame->view()) {
         if (!view->wasScrolledByUser()) {
             view->setScrollPosition(m_currentItem->scrollPoint());
-            if (Page* page = m_frame->page())
+            Page* page = m_frame->page();
+            if (page && page->mainFrame() == m_frame)
                 page->setPageScaleFactor(m_currentItem->pageScaleFactor(), m_currentItem->scrollPoint());
         }
     }