Default to null value for HistoryItem::m_pageScaleFactor
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 10 May 2012 07:38:51 +0000 (07:38 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 10 May 2012 07:38:51 +0000 (07:38 +0000)
https://bugs.webkit.org/show_bug.cgi?id=84385

Patch by Alexandre Elias <aelias@google.com> on 2012-05-10
Reviewed by Adam Barth.

Previously, HistoryItem::m_pageScaleFactor defaulted to a value
of 1, making it impossible to determine whether this value was never
set, or intentionally set to 1.  This patch introduces a default value
of 0 and makes restoreScrollPositionAndViewState not touch the page
scale factor if this value is still present at time of reload.

This is a no-op change for common navigation scenarios.  The
motivation for this change is the corner case of syncing history items
from a desktop browser to a mobile device.  In that case, we need a
way to specify that the history item does not contain a
pageScaleFactor so that the mobile device does not display the page
overly zoomed in.

No new tests.

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

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

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

index 4361783..49d744d 100644 (file)
@@ -1,3 +1,30 @@
+2012-05-10  Alexandre Elias  <aelias@google.com>
+
+        Default to null value for HistoryItem::m_pageScaleFactor
+        https://bugs.webkit.org/show_bug.cgi?id=84385
+
+        Reviewed by Adam Barth.
+
+        Previously, HistoryItem::m_pageScaleFactor defaulted to a value
+        of 1, making it impossible to determine whether this value was never
+        set, or intentionally set to 1.  This patch introduces a default value
+        of 0 and makes restoreScrollPositionAndViewState not touch the page
+        scale factor if this value is still present at time of reload.
+
+        This is a no-op change for common navigation scenarios.  The
+        motivation for this change is the corner case of syncing history items
+        from a desktop browser to a mobile device.  In that case, we need a
+        way to specify that the history item does not contain a
+        pageScaleFactor so that the mobile device does not display the page
+        overly zoomed in.
+
+        No new tests.
+
+        * history/HistoryItem.cpp:
+        (WebCore::HistoryItem::HistoryItem):
+        * loader/HistoryController.cpp:
+        (WebCore::HistoryController::restoreScrollPositionAndViewState):
+
 2012-05-10  Csaba Osztrogon√°c  <ossy@webkit.org>
 
         Use suitable viewport values when a Mobile DTD is used.
index 38cd626..fe11eab 100644 (file)
@@ -61,7 +61,7 @@ void (*notifyHistoryItemChanged)(HistoryItem*) = defaultNotifyHistoryItemChanged
 HistoryItem::HistoryItem()
     : m_lastVisitedTime(0)
     , m_lastVisitWasHTTPNonGet(false)
-    , m_pageScaleFactor(1)
+    , m_pageScaleFactor(0)
     , m_lastVisitWasFailure(false)
     , m_isTargetItem(false)
     , m_visitCount(0)
@@ -78,7 +78,7 @@ HistoryItem::HistoryItem(const String& urlString, const String& title, double ti
     , m_title(title)
     , m_lastVisitedTime(time)
     , m_lastVisitWasHTTPNonGet(false)
-    , m_pageScaleFactor(1)
+    , m_pageScaleFactor(0)
     , m_lastVisitWasFailure(false)
     , m_isTargetItem(false)
     , m_visitCount(0)
@@ -97,7 +97,7 @@ HistoryItem::HistoryItem(const String& urlString, const String& title, const Str
     , m_displayTitle(alternateTitle)
     , m_lastVisitedTime(time)
     , m_lastVisitWasHTTPNonGet(false)
-    , m_pageScaleFactor(1)
+    , m_pageScaleFactor(0)
     , m_lastVisitWasFailure(false)
     , m_isTargetItem(false)
     , m_visitCount(0)
@@ -117,7 +117,7 @@ HistoryItem::HistoryItem(const KURL& url, const String& target, const String& pa
     , m_title(title)
     , m_lastVisitedTime(0)
     , m_lastVisitWasHTTPNonGet(false)
-    , m_pageScaleFactor(1)
+    , m_pageScaleFactor(0)
     , m_lastVisitWasFailure(false)
     , m_isTargetItem(false)
     , m_visitCount(0)
index ec478a7..d5df639 100644 (file)
@@ -126,7 +126,7 @@ void HistoryController::restoreScrollPositionAndViewState()
         if (!view->wasScrolledByUser()) {
             view->setScrollPosition(m_currentItem->scrollPoint());
             Page* page = m_frame->page();
-            if (page && page->mainFrame() == m_frame)
+            if (page && page->mainFrame() == m_frame && m_currentItem->pageScaleFactor())
                 page->setPageScaleFactor(m_currentItem->pageScaleFactor(), m_currentItem->scrollPoint());
         }
     }