[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

weinig at apple.com weinig at apple.com
Wed Dec 22 13:19:35 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit e680913e80b8df6e81627d6fcf34ccff8508d81e
Author: weinig at apple.com <weinig at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Sat Sep 11 04:01:43 2010 +0000

    Remove unnecessary constraint in WebCore of choosing either text zoom or full page zoom.
    Precursor to <rdar://problem/7660657>
    https://bugs.webkit.org/show_bug.cgi?id=45522
    
    Reviewed by Darin Adler.
    
    WebCore:
    
    * GNUmakefile.am:
    * WebCore.exp.in:
    * WebCore.gypi:
    * WebCore.pro:
    * WebCore.vcproj/WebCore.vcproj:
    * WebCore.xcodeproj/project.pbxproj:
    Remove ZoomMode.h
    
    * css/CSSStyleSelector.cpp:
    (WebCore::CSSStyleSelector::applyProperty):
    (WebCore::CSSStyleSelector::getComputedSizeFromSpecifiedSize):
    Remove uses of shouldApplyTextZoom(), it had turned into just a compare to 1.0f.
    
    * html/HTMLBodyElement.cpp:
    (WebCore::adjustForZoom):
    (WebCore::HTMLBodyElement::setScrollLeft):
    (WebCore::HTMLBodyElement::setScrollTop):
    Convert these to use the explicit pageZoomFactor() function, it made no sense for text zoom
    anyway.
    
    * page/Frame.h:
    Remove include of ZoomMode.h
    
    * page/FrameView.cpp:
    (WebCore::parentPageZoomFactor):
    (WebCore::parentTextZoomFactor):
    (WebCore::FrameView::FrameView):
    (WebCore::FrameView::setPageZoomFactor):
    (WebCore::FrameView::setTextZoomFactor):
    (WebCore::FrameView::setPageAndTextZoomFactors):
    * page/FrameView.h:
    (WebCore::FrameView::pageZoomFactor):
    (WebCore::FrameView::textZoomFactor):
    Change FrameView to store two values for zoom, one for page zoom and one for text zoom.
    
    * page/Settings.cpp:
    (WebCore::Settings::Settings):
    * page/Settings.h:
    Removed zoom mode.
    
    * page/ZoomMode.h: Removed.
    
    * rendering/RenderView.cpp:
    (WebCore::RenderView::zoomFactor):
    Remove now unnecessary call to shouldApplyPageZoom since it will be 1 if it should
    be ignored.
    
    * svg/SVGSVGElement.cpp:
    (WebCore::SVGSVGElement::setCurrentScale):
    Use explicit setPageZoomFactor function.
    
    WebKit/chromium:
    
    * src/FrameLoaderClientImpl.cpp:
    (WebKit::FrameLoaderClientImpl::createPlugin):
    * src/WebViewImpl.cpp:
    (WebKit::WebViewImpl::WebViewImpl):
    (WebKit::WebViewImpl::setZoomLevel):
    * src/WebViewImpl.h:
    (WebKit::WebViewImpl::zoomTextOnly):
    Move tracking of text only zoom here from WebCore.
    
    WebKit/gtk:
    
    * webkit/webkitwebview.cpp:
    (webkit_web_view_get_zoom_level):
    (webkit_web_view_apply_zoom_level):
    (webkit_web_view_set_full_content_zoom):
    
    WebKit/mac:
    
    * WebView/WebView.mm:
    (-[WebView _preferencesChangedNotification:]):
    (-[WebView _setZoomMultiplier:isTextOnly:]):
    (-[WebView _realZoomMultiplierIsTextOnly]):
    * WebView/WebViewData.h:
    * WebView/WebViewData.mm:
    (-[WebViewPrivate init]):
    Move tracking of text only zoom here from WebCore.
    
    WebKit/qt:
    
    * Api/qwebframe.cpp:
    (QWebFrame::setTextSizeMultiplier):
    (QWebFrame::textSizeMultiplier):
    (QWebFrame::setZoomFactor):
    (QWebFrame::zoomFactor):
    * Api/qwebframe_p.h:
    (QWebFramePrivate::QWebFramePrivate):
    Move tracking of text only zoom here from WebCore.
    
    WebKit/win:
    
    * WebFrame.cpp:
    * WebFrame.h:
    Remove dead code.
    
    * WebView.cpp:
    (WebView::WebView):
    (WebView::setZoomMultiplier):
    (WebView::zoomMultiplier):
    (WebView::canMakeTextLarger):
    (WebView::makeTextLarger):
    (WebView::canMakeTextSmaller):
    (WebView::makeTextSmaller):
    (WebView::notifyPreferencesChanged):
    * WebView.h:
    Move tracking of text only zoom here from WebCore.
    
    WebKit2:
    
    Now that WebCore doesn't require a mode, change the bundle API for zoom to not
    require one either.
    
    * WebProcess/InjectedBundle/API/c/WKBundleAPICast.h:
    * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
    (WKBundlePageStopLoading):
    (WKBundlePageGetTextZoomFactor):
    (WKBundlePageSetTextZoomFactor):
    (WKBundlePageGetPageZoomFactor):
    (WKBundlePageSetPageZoomFactor):
    * WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:
    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::WebPage::WebPage):
    (WebKit::WebPage::textZoomFactor):
    (WebKit::WebPage::setTextZoomFactor):
    (WebKit::WebPage::pageZoomFactor):
    (WebKit::WebPage::setPageZoomFactor):
    * WebProcess/WebPage/WebPage.h:
    
    WebKitTools:
    
    Update for changes to the Bundle API to allow separate control of page and text zoom
    levels.
    
    * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
    (WTR::EventSendingController::textZoomIn):
    (WTR::EventSendingController::textZoomOut):
    (WTR::EventSendingController::zoomPageIn):
    (WTR::EventSendingController::zoomPageOut):
    * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
    (WTR::InjectedBundlePage::reset):
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@67274 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 5c9d7b4..44d1d12 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,62 @@
+2010-09-10  Sam Weinig  <sam at webkit.org>
+
+        Reviewed by Darin Adler.
+
+        Remove unnecessary constraint in WebCore of choosing either text zoom or full page zoom.
+        Precursor to <rdar://problem/7660657>
+        https://bugs.webkit.org/show_bug.cgi?id=45522
+
+        * GNUmakefile.am:
+        * WebCore.exp.in:
+        * WebCore.gypi:
+        * WebCore.pro:
+        * WebCore.vcproj/WebCore.vcproj:
+        * WebCore.xcodeproj/project.pbxproj:
+        Remove ZoomMode.h
+
+        * css/CSSStyleSelector.cpp:
+        (WebCore::CSSStyleSelector::applyProperty):
+        (WebCore::CSSStyleSelector::getComputedSizeFromSpecifiedSize):
+        Remove uses of shouldApplyTextZoom(), it had turned into just a compare to 1.0f.
+
+        * html/HTMLBodyElement.cpp:
+        (WebCore::adjustForZoom):
+        (WebCore::HTMLBodyElement::setScrollLeft):
+        (WebCore::HTMLBodyElement::setScrollTop):
+        Convert these to use the explicit pageZoomFactor() function, it made no sense for text zoom
+        anyway.
+
+        * page/Frame.h:
+        Remove include of ZoomMode.h
+
+        * page/FrameView.cpp:
+        (WebCore::parentPageZoomFactor):
+        (WebCore::parentTextZoomFactor):
+        (WebCore::FrameView::FrameView):
+        (WebCore::FrameView::setPageZoomFactor):
+        (WebCore::FrameView::setTextZoomFactor):
+        (WebCore::FrameView::setPageAndTextZoomFactors):
+        * page/FrameView.h:
+        (WebCore::FrameView::pageZoomFactor):
+        (WebCore::FrameView::textZoomFactor):
+        Change FrameView to store two values for zoom, one for page zoom and one for text zoom.
+
+        * page/Settings.cpp:
+        (WebCore::Settings::Settings):
+        * page/Settings.h:
+        Removed zoom mode.
+
+        * page/ZoomMode.h: Removed.
+
+        * rendering/RenderView.cpp:
+        (WebCore::RenderView::zoomFactor):
+        Remove now unnecessary call to shouldApplyPageZoom since it will be 1 if it should
+        be ignored.
+
+        * svg/SVGSVGElement.cpp:
+        (WebCore::SVGSVGElement::setCurrentScale):
+        Use explicit setPageZoomFactor function.
+
 2010-09-10  Ryuan Choi  <ryuan.choi at samsung.com>
 
         Unreviewed build fix for EFL.
diff --git a/WebCore/GNUmakefile.am b/WebCore/GNUmakefile.am
index 1feb2da..3dadaa7 100644
--- a/WebCore/GNUmakefile.am
+++ b/WebCore/GNUmakefile.am
@@ -1883,7 +1883,6 @@ webcore_sources += \
 	WebCore/page/WindowFeatures.h \
 	WebCore/page/XSSAuditor.cpp \
 	WebCore/page/XSSAuditor.h \
-	WebCore/page/ZoomMode.h \
 	WebCore/page/animation/AnimationBase.cpp \
 	WebCore/page/animation/AnimationBase.h \
 	WebCore/page/animation/AnimationController.cpp \
diff --git a/WebCore/WebCore.exp.in b/WebCore/WebCore.exp.in
index 1531249..2dd0048 100644
--- a/WebCore/WebCore.exp.in
+++ b/WebCore/WebCore.exp.in
@@ -684,7 +684,6 @@ __ZN7WebCore8FormData6createEPKvm
 __ZN7WebCore8FormDataD1Ev
 __ZN7WebCore8IntPointC1ERK8_NSPoint
 __ZN7WebCore8PositionC1EN3WTF10PassRefPtrINS_4NodeEEEi
-__ZN7WebCore8Settings11setZoomModeENS_8ZoomModeE
 __ZN7WebCore8Settings14setJavaEnabledEb
 __ZN7WebCore8Settings15setWebGLEnabledEb
 __ZN7WebCore8Settings16setUsesPageCacheEb
@@ -760,7 +759,6 @@ __ZN7WebCore9FrameTree7setNameERKN3WTF12AtomicStringE
 __ZN7WebCore9FrameTree9clearNameEv
 __ZN7WebCore9FrameView11forceLayoutEb
 __ZN7WebCore9FrameView12setMediaTypeERKN3WTF6StringE
-__ZN7WebCore9FrameView13setZoomFactorEfNS_8ZoomModeE
 __ZN7WebCore9FrameView14adjustViewSizeEv
 __ZN7WebCore9FrameView14setMarginWidthEi
 __ZN7WebCore9FrameView14setNeedsLayoutEv
@@ -768,12 +766,15 @@ __ZN7WebCore9FrameView14setTransparentEb
 __ZN7WebCore9FrameView15setMarginHeightEi
 __ZN7WebCore9FrameView16adjustPageHeightEPffff
 __ZN7WebCore9FrameView16setPaintBehaviorEj
+__ZN7WebCore9FrameView17setPageZoomFactorEf
+__ZN7WebCore9FrameView17setTextZoomFactorEf
 __ZN7WebCore9FrameView18updateControlTintsEv
 __ZN7WebCore9FrameView20enterCompositingModeEv
 __ZN7WebCore9FrameView21flushDeferredRepaintsEv
 __ZN7WebCore9FrameView22setBaseBackgroundColorENS_5ColorE
 __ZN7WebCore9FrameView23updateCanHaveScrollbarsEv
 __ZN7WebCore9FrameView24forceLayoutForPaginationERKNS_9FloatSizeEfNS_5Frame19AdjustViewSizeOrNotE
+__ZN7WebCore9FrameView25setPageAndTextZoomFactorsEff
 __ZN7WebCore9FrameView29setShouldUpdateWhileOffscreenEb
 __ZN7WebCore9FrameView29syncCompositingStateRecursiveEv
 __ZN7WebCore9FrameView37updateLayoutAndStyleIfNeededRecursiveEv
@@ -1138,6 +1139,7 @@ _wkSignalCFReadStreamEnd
 _wkSignalCFReadStreamError
 _wkSignalCFReadStreamHasBytes
 
+
 #if ENABLE(3D_RENDERING)
 _WebCoreHas3DRendering
 #endif
diff --git a/WebCore/WebCore.gypi b/WebCore/WebCore.gypi
index 7c3a8da..fed7ce3 100644
--- a/WebCore/WebCore.gypi
+++ b/WebCore/WebCore.gypi
@@ -2170,7 +2170,6 @@
             'page/WorkerNavigator.h',
             'page/XSSAuditor.cpp',
             'page/XSSAuditor.h',
-            'page/ZoomMode.h',
             'platform/animation/Animation.cpp',
             'platform/animation/Animation.h',
             'platform/animation/AnimationList.cpp',
diff --git a/WebCore/WebCore.pro b/WebCore/WebCore.pro
index 4b6cb87..e9c03ce 100644
--- a/WebCore/WebCore.pro
+++ b/WebCore/WebCore.pro
@@ -1679,7 +1679,6 @@ HEADERS += \
     page/WindowFeatures.h \
     page/WorkerNavigator.h \
     page/XSSAuditor.h \
-    page/ZoomMode.h \
     platform/animation/Animation.h \
     platform/animation/AnimationList.h \
     platform/Arena.h \
diff --git a/WebCore/WebCore.vcproj/WebCore.vcproj b/WebCore/WebCore.vcproj/WebCore.vcproj
index 9ce74d3..e256835 100644
--- a/WebCore/WebCore.vcproj/WebCore.vcproj
+++ b/WebCore/WebCore.vcproj/WebCore.vcproj
@@ -23340,10 +23340,6 @@
 				RelativePath="..\page\XSSAuditor.h"
 				>
 			</File>
-			<File
-				RelativePath="..\page\ZoomMode.h"
-				>
-			</File>
 			<Filter
 				Name="win"
 				>
diff --git a/WebCore/WebCore.xcodeproj/project.pbxproj b/WebCore/WebCore.xcodeproj/project.pbxproj
index 09906e1..171afda 100644
--- a/WebCore/WebCore.xcodeproj/project.pbxproj
+++ b/WebCore/WebCore.xcodeproj/project.pbxproj
@@ -5157,7 +5157,6 @@
 		CE02F0C411E83ADD00C6684A /* ScriptControllerBase.h in Headers */ = {isa = PBXBuildFile; fileRef = CE02F0C311E83ADD00C6684A /* ScriptControllerBase.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		CE057FA51220731100A476D5 /* DocumentMarkerController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CE057FA31220731100A476D5 /* DocumentMarkerController.cpp */; };
 		CE057FA61220731100A476D5 /* DocumentMarkerController.h in Headers */ = {isa = PBXBuildFile; fileRef = CE057FA41220731100A476D5 /* DocumentMarkerController.h */; settings = {ATTRIBUTES = (Private, ); }; };
-		CE172E011136E8CE0062A533 /* ZoomMode.h in Headers */ = {isa = PBXBuildFile; fileRef = CE172E001136E8CE0062A533 /* ZoomMode.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		CE4C00E410F6F7BA00CA38F5 /* HTMLNoScriptElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CE4C00E310F6F7BA00CA38F5 /* HTMLNoScriptElement.cpp */; };
 		CE4C00E610F6F7C100CA38F5 /* HTMLNoScriptElement.h in Headers */ = {isa = PBXBuildFile; fileRef = CE4C00E510F6F7C100CA38F5 /* HTMLNoScriptElement.h */; };
 		CE54FD381016D9A6008B44C8 /* ScriptSourceProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = CE54FD371016D9A6008B44C8 /* ScriptSourceProvider.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -11011,7 +11010,6 @@
 		CE02F0C311E83ADD00C6684A /* ScriptControllerBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptControllerBase.h; sourceTree = "<group>"; };
 		CE057FA31220731100A476D5 /* DocumentMarkerController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentMarkerController.cpp; sourceTree = "<group>"; };
 		CE057FA41220731100A476D5 /* DocumentMarkerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentMarkerController.h; sourceTree = "<group>"; };
-		CE172E001136E8CE0062A533 /* ZoomMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZoomMode.h; sourceTree = "<group>"; };
 		CE4C00E310F6F7BA00CA38F5 /* HTMLNoScriptElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLNoScriptElement.cpp; sourceTree = "<group>"; };
 		CE4C00E510F6F7C100CA38F5 /* HTMLNoScriptElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLNoScriptElement.h; sourceTree = "<group>"; };
 		CE54FD371016D9A6008B44C8 /* ScriptSourceProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptSourceProvider.h; sourceTree = "<group>"; };
@@ -12808,7 +12806,6 @@
 				E1271A510EEECD1C00F61213 /* WorkerNavigator.idl */,
 				97DD4D840FDF4D6D00ECF9A4 /* XSSAuditor.cpp */,
 				97DD4D850FDF4D6E00ECF9A4 /* XSSAuditor.h */,
-				CE172E001136E8CE0062A533 /* ZoomMode.h */,
 			);
 			path = page;
 			sourceTree = "<group>";
@@ -20456,7 +20453,6 @@
 				93F199ED08245E59001E9ABC /* XSLTProcessor.h in Headers */,
 				E1BE512E0CF6C512002EA959 /* XSLTUnicodeSort.h in Headers */,
 				97DD4D870FDF4D6E00ECF9A4 /* XSSAuditor.h in Headers */,
-				CE172E011136E8CE0062A533 /* ZoomMode.h in Headers */,
 				D0FF2A5E11F8C45A007E74E0 /* PingLoader.h in Headers */,
 				C50B561712119D23008B46E0 /* GroupSettings.h in Headers */,
 				BCA979171215D055005C485C /* ImageBufferData.h in Headers */,
diff --git a/WebCore/css/CSSStyleSelector.cpp b/WebCore/css/CSSStyleSelector.cpp
index 8bd6720..8319620 100644
--- a/WebCore/css/CSSStyleSelector.cpp
+++ b/WebCore/css/CSSStyleSelector.cpp
@@ -4149,10 +4149,8 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
         else if (CSSPrimitiveValue::isUnitTypeLength(type)) {
             double multiplier = zoomFactor;
             if (m_style->textSizeAdjust()) {
-                if (FrameView* view = m_checker.m_document->view()) {
-                    if (view->shouldApplyTextZoom())
-                        multiplier *= view->textZoomFactor();
-                }
+                if (FrameView* view = m_checker.m_document->view())
+                    multiplier *= view->textZoomFactor();
             }
             lineHeight = Length(primitiveValue->computeLengthIntForLength(style(), m_rootElementStyle,  multiplier), Fixed);
         } else if (type == CSSPrimitiveValue::CSS_PERCENTAGE)
@@ -6229,7 +6227,7 @@ float CSSStyleSelector::getComputedSizeFromSpecifiedSize(Document* document, Ren
     float zoomFactor = 1.0f;
     if (!useSVGZoomRules) {
         zoomFactor = style->effectiveZoom();
-        if (document->view() && document->view()->shouldApplyTextZoom())
+        if (document->view())
             zoomFactor *= document->view()->textZoomFactor();
     }
 
diff --git a/WebCore/html/HTMLBodyElement.cpp b/WebCore/html/HTMLBodyElement.cpp
index 9877aa6..d808f66 100644
--- a/WebCore/html/HTMLBodyElement.cpp
+++ b/WebCore/html/HTMLBodyElement.cpp
@@ -254,7 +254,7 @@ void HTMLBodyElement::setVLink(const String& value)
 
 static int adjustForZoom(int value, FrameView* frameView)
 {
-    float zoomFactor = frameView->zoomFactor();
+    float zoomFactor = frameView->pageZoomFactor();
     if (zoomFactor == 1)
         return value;
     // Needed because of truncation (rather than rounding) when scaling up.
@@ -279,7 +279,7 @@ void HTMLBodyElement::setScrollLeft(int scrollLeft)
     FrameView* view = document->view();
     if (!view)
         return;
-    view->setScrollPosition(IntPoint(static_cast<int>(scrollLeft * view->zoomFactor()), view->scrollY()));
+    view->setScrollPosition(IntPoint(static_cast<int>(scrollLeft * view->pageZoomFactor()), view->scrollY()));
 }
 
 int HTMLBodyElement::scrollTop() const
@@ -298,7 +298,7 @@ void HTMLBodyElement::setScrollTop(int scrollTop)
     FrameView* view = document->view();
     if (!view)
         return;
-    view->setScrollPosition(IntPoint(view->scrollX(), static_cast<int>(scrollTop * view->zoomFactor())));
+    view->setScrollPosition(IntPoint(view->scrollX(), static_cast<int>(scrollTop * view->pageZoomFactor())));
 }
 
 int HTMLBodyElement::scrollHeight() const
diff --git a/WebCore/page/Frame.h b/WebCore/page/Frame.h
index b99397d..c646212 100644
--- a/WebCore/page/Frame.h
+++ b/WebCore/page/Frame.h
@@ -36,7 +36,6 @@
 #include "FrameTree.h"
 #include "ScriptController.h"
 #include "UserScriptTypes.h"
-#include "ZoomMode.h"
 
 #if PLATFORM(WIN)
 #include "FrameWin.h"
diff --git a/WebCore/page/FrameView.cpp b/WebCore/page/FrameView.cpp
index c1e39ca..df4930f 100644
--- a/WebCore/page/FrameView.cpp
+++ b/WebCore/page/FrameView.cpp
@@ -29,9 +29,9 @@
 
 #include "AXObjectCache.h"
 #include "CSSStyleSelector.h"
+#include "CachedResourceLoader.h"
 #include "Chrome.h"
 #include "ChromeClient.h"
-#include "CachedResourceLoader.h"
 #include "EventHandler.h"
 #include "FloatRect.h"
 #include "FocusController.h"
@@ -111,7 +111,7 @@ struct ScheduledEvent : Noncopyable {
     RefPtr<Node> m_eventTarget;
 };
 
-static inline float parentZoomFactor(Frame* frame)
+static inline float parentPageZoomFactor(Frame* frame)
 {
     Frame* parent = frame->tree()->parent();
     if (!parent)
@@ -119,7 +119,18 @@ static inline float parentZoomFactor(Frame* frame)
     FrameView* parentView = parent->view();
     if (!parentView)
         return 1;
-    return parentView->zoomFactor();
+    return parentView->pageZoomFactor();
+}
+
+static inline float parentTextZoomFactor(Frame* frame)
+{
+    Frame* parent = frame->tree()->parent();
+    if (!parent)
+        return 1;
+    FrameView* parentView = parent->view();
+    if (!parentView)
+        return 1;
+    return parentView->textZoomFactor();
 }
 
 FrameView::FrameView(Frame* frame)
@@ -145,7 +156,9 @@ FrameView::FrameView(Frame* frame)
     , m_deferSetNeedsLayouts(0)
     , m_setNeedsLayoutWasDeferred(false)
     , m_scrollCorner(0)
-    , m_zoomFactor(parentZoomFactor(frame))
+    , m_pageZoomFactor(parentPageZoomFactor(frame))
+    , m_textZoomFactor(parentTextZoomFactor(frame))
+
 {
     init();
 }
@@ -2275,28 +2288,21 @@ IntPoint FrameView::convertFromContainingView(const IntPoint& parentPoint) const
     return parentPoint;
 }
 
-bool FrameView::shouldApplyTextZoom() const
+void FrameView::setPageZoomFactor(float factor)
 {
-    if (m_zoomFactor == 1)
-        return false;
-    if (!m_frame)
-        return false;
-    Page* page = m_frame->page();
-    return page && page->settings()->zoomMode() == ZoomTextOnly;
+    setPageAndTextZoomFactors(factor, m_textZoomFactor);
 }
 
-bool FrameView::shouldApplyPageZoom() const
+void FrameView::setTextZoomFactor(float factor)
 {
-    if (m_zoomFactor == 1)
-        return false;
-    if (!m_frame)
-        return false;
-    Page* page = m_frame->page();
-    return page && page->settings()->zoomMode() == ZoomPage;
+    setPageAndTextZoomFactors(m_pageZoomFactor, factor);
 }
 
-void FrameView::setZoomFactor(float percent, ZoomMode mode)
+void FrameView::setPageAndTextZoomFactors(float pageZoomFactor, float textZoomFactor)
 {
+    if (m_pageZoomFactor == pageZoomFactor && m_textZoomFactor == textZoomFactor)
+        return;
+
     if (!m_frame)
         return;
 
@@ -2304,9 +2310,6 @@ void FrameView::setZoomFactor(float percent, ZoomMode mode)
     if (!page)
         return;
 
-    if (m_zoomFactor == percent && page->settings()->zoomMode() == mode)
-        return;
-
     Document* document = m_frame->document();
     if (!document)
         return;
@@ -2322,28 +2325,27 @@ void FrameView::setZoomFactor(float percent, ZoomMode mode)
     }
 #endif
 
-    if (mode == ZoomPage) {
+    if (m_pageZoomFactor != pageZoomFactor) {
         // Update the scroll position when doing a full page zoom, so the content stays in relatively the same position.
         IntPoint scrollPosition = this->scrollPosition();
-        float percentDifference = (percent / m_zoomFactor);
+        float percentDifference = (pageZoomFactor / m_pageZoomFactor);
         setScrollPosition(IntPoint(scrollPosition.x() * percentDifference, scrollPosition.y() * percentDifference));
     }
 
-    m_zoomFactor = percent;
-    page->settings()->setZoomMode(mode);
+    m_pageZoomFactor = pageZoomFactor;
+    m_textZoomFactor = textZoomFactor;
 
     document->recalcStyle(Node::Force);
 
     for (Frame* child = m_frame->tree()->firstChild(); child; child = child->tree()->nextSibling()) {
         if (FrameView* childView = child->view())
-            childView->setZoomFactor(m_zoomFactor, mode);
+            childView->setPageAndTextZoomFactors(m_pageZoomFactor, m_textZoomFactor);
     }
 
     if (document->renderer() && document->renderer()->needsLayout() && didFirstLayout())
         layout();
 }
 
-
 // Normal delay
 void FrameView::setRepaintThrottlingDeferredRepaintDelay(double p)
 {
diff --git a/WebCore/page/FrameView.h b/WebCore/page/FrameView.h
index f9a4bf3..8ab38a3 100644
--- a/WebCore/page/FrameView.h
+++ b/WebCore/page/FrameView.h
@@ -217,12 +217,11 @@ public:
     bool isFrameViewScrollCorner(RenderScrollbarPart* scrollCorner) const { return m_scrollCorner == scrollCorner; }
     void invalidateScrollCorner();
 
-    void setZoomFactor(float scale, ZoomMode);
-    float zoomFactor() const { return m_zoomFactor; }
-    bool shouldApplyTextZoom() const;
-    bool shouldApplyPageZoom() const;
-    float pageZoomFactor() const { return shouldApplyPageZoom() ? m_zoomFactor : 1.0f; }
-    float textZoomFactor() const { return shouldApplyTextZoom() ? m_zoomFactor : 1.0f; }
+    void setPageZoomFactor(float factor);
+    float pageZoomFactor() const { return m_pageZoomFactor; }
+    void setTextZoomFactor(float factor);
+    float textZoomFactor() const { return m_textZoomFactor; }
+    void setPageAndTextZoomFactors(float pageZoomFactor, float textZoomFactor);
 
     // Normal delay
     static void setRepaintThrottlingDeferredRepaintDelay(double p);
@@ -373,7 +372,8 @@ private:
     // Renderer to hold our custom scroll corner.
     RenderScrollbarPart* m_scrollCorner;
 
-    float m_zoomFactor;
+    float m_pageZoomFactor;
+    float m_textZoomFactor;
 
     static double s_deferredRepaintDelay;
     static double s_initialDeferredRepaintDelayDuringLoading;
diff --git a/WebCore/page/Settings.cpp b/WebCore/page/Settings.cpp
index 8acfc69..329c47f 100644
--- a/WebCore/page/Settings.cpp
+++ b/WebCore/page/Settings.cpp
@@ -75,7 +75,6 @@ Settings::Settings(Page* page)
     , m_sessionStorageQuota(StorageMap::noQuota)
 #endif
     , m_pluginAllowedRunTime(numeric_limits<unsigned>::max())
-    , m_zoomMode(ZoomPage)
     , m_isSpatialNavigationEnabled(false)
     , m_isJavaEnabled(false)
     , m_loadsImagesAutomatically(false)
@@ -511,15 +510,6 @@ void Settings::setShouldPaintCustomScrollbars(bool shouldPaintCustomScrollbars)
     m_shouldPaintCustomScrollbars = shouldPaintCustomScrollbars;
 }
 
-void Settings::setZoomMode(ZoomMode mode)
-{
-    if (mode == m_zoomMode)
-        return;
-    
-    m_zoomMode = mode;
-    setNeedsRecalcStyleInAllFrames(m_page);
-}
-
 void Settings::setEnforceCSSMIMETypeInNoQuirksMode(bool enforceCSSMIMETypeInNoQuirksMode)
 {
     m_enforceCSSMIMETypeInNoQuirksMode = enforceCSSMIMETypeInNoQuirksMode;
diff --git a/WebCore/page/Settings.h b/WebCore/page/Settings.h
index 0bb55f6..8ec5106 100644
--- a/WebCore/page/Settings.h
+++ b/WebCore/page/Settings.h
@@ -30,7 +30,6 @@
 #include "EditingBehaviorTypes.h"
 #include "FontRenderingMode.h"
 #include "KURL.h"
-#include "ZoomMode.h"
 #include <wtf/text/AtomicString.h>
 
 namespace WebCore {
@@ -251,9 +250,6 @@ namespace WebCore {
 
         void setShouldPaintCustomScrollbars(bool);
         bool shouldPaintCustomScrollbars() const { return m_shouldPaintCustomScrollbars; }
-
-        void setZoomMode(ZoomMode);
-        ZoomMode zoomMode() const { return m_zoomMode; }
         
         void setEnforceCSSMIMETypeInNoQuirksMode(bool);
         bool enforceCSSMIMETypeInNoQuirksMode() { return m_enforceCSSMIMETypeInNoQuirksMode; }
@@ -354,7 +350,6 @@ namespace WebCore {
         unsigned m_sessionStorageQuota;
 #endif
         unsigned m_pluginAllowedRunTime;
-        ZoomMode m_zoomMode;
         bool m_isSpatialNavigationEnabled : 1;
         bool m_isJavaEnabled : 1;
         bool m_loadsImagesAutomatically : 1;
diff --git a/WebCore/page/ZoomMode.h b/WebCore/page/ZoomMode.h
deleted file mode 100644
index 3f02184..0000000
--- a/WebCore/page/ZoomMode.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2010 Research in Motion Ltd. http://www.rim.com/
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef ZoomMode_h
-#define ZoomMode_h
-
-namespace WebCore {
-
-enum ZoomMode {
-    ZoomPage,
-    ZoomTextOnly
-};
-
-}
-
-#endif
diff --git a/WebCore/rendering/RenderView.cpp b/WebCore/rendering/RenderView.cpp
index c92ea5f..d7aae36 100644
--- a/WebCore/rendering/RenderView.cpp
+++ b/WebCore/rendering/RenderView.cpp
@@ -665,9 +665,7 @@ int RenderView::viewWidth() const
 
 float RenderView::zoomFactor() const
 {
-    if (!m_frameView->shouldApplyPageZoom())
-        return 1;
-    return m_frameView->zoomFactor();
+    return m_frameView->pageZoomFactor();
 }
 
 // The idea here is to take into account what object is moving the pagination point, and
diff --git a/WebCore/svg/SVGSVGElement.cpp b/WebCore/svg/SVGSVGElement.cpp
index bc669a3..f05147b 100644
--- a/WebCore/svg/SVGSVGElement.cpp
+++ b/WebCore/svg/SVGSVGElement.cpp
@@ -204,7 +204,7 @@ void SVGSVGElement::setCurrentScale(float scale)
         // Calling setCurrentScale() on the outermost <svg> element in a standalone SVG document
         // is allowed to change the page zoom factor, influencing the document size, scrollbars etc.
         if (parentNode() == document())
-            view->setZoomFactor(scale, ZoomPage);
+            view->setPageZoomFactor(scale);
         return;
     }
 
diff --git a/WebKit/chromium/ChangeLog b/WebKit/chromium/ChangeLog
index 3b3a5cd..19a111a 100644
--- a/WebKit/chromium/ChangeLog
+++ b/WebKit/chromium/ChangeLog
@@ -1,3 +1,20 @@
+2010-09-10  Sam Weinig  <sam at webkit.org>
+
+        Reviewed by Darin Adler.
+
+        Remove unnecessary constraint in WebCore of choosing either text zoom or full page zoom.
+        Precursor to <rdar://problem/7660657>
+        https://bugs.webkit.org/show_bug.cgi?id=45522
+
+        * src/FrameLoaderClientImpl.cpp:
+        (WebKit::FrameLoaderClientImpl::createPlugin):
+        * src/WebViewImpl.cpp:
+        (WebKit::WebViewImpl::WebViewImpl):
+        (WebKit::WebViewImpl::setZoomLevel):
+        * src/WebViewImpl.h:
+        (WebKit::WebViewImpl::zoomTextOnly):
+        Move tracking of text only zoom here from WebCore.
+
 2010-09-10  Adam Barth  <abarth at webkit.org>
 
         Reviewed by Darin Fisher.
diff --git a/WebKit/chromium/src/FrameLoaderClientImpl.cpp b/WebKit/chromium/src/FrameLoaderClientImpl.cpp
index 641492c..55f4c72 100644
--- a/WebKit/chromium/src/FrameLoaderClientImpl.cpp
+++ b/WebKit/chromium/src/FrameLoaderClientImpl.cpp
@@ -1397,12 +1397,12 @@ PassRefPtr<Widget> FrameLoaderClientImpl::createPlugin(
     if (!webPlugin->initialize(container.get()))
         return 0;
 
-    if (m_webFrame->frame()->view()->zoomFactor() != 1) {
+    bool zoomTextOnly = m_webFrame->viewImpl()->zoomTextOnly();
+    float zoomFactor = zoomTextOnly ? m_webFrame->frame()->view()->textZoomFactor() : m_webFrame->frame()->view()->pageZoomFactor();
+    if (zoomFactor != 1) {
         // There's a saved zoom level, so tell the plugin about it since
         // WebViewImpl::setZoomLevel was called before the plugin was created.
-        webPlugin->setZoomFactor(
-            m_webFrame->frame()->view()->zoomFactor(),
-            m_webFrame->frame()->page()->settings()->zoomMode() == ZoomTextOnly);
+        webPlugin->setZoomFactor(zoomFactor, zoomTextOnly);
     }
 
     // The element might have been removed during plugin initialization!
diff --git a/WebKit/chromium/src/WebViewImpl.cpp b/WebKit/chromium/src/WebViewImpl.cpp
index 349b62a..bee8f9c 100644
--- a/WebKit/chromium/src/WebViewImpl.cpp
+++ b/WebKit/chromium/src/WebViewImpl.cpp
@@ -245,6 +245,7 @@ WebViewImpl::WebViewImpl(WebViewClient* client, WebDevToolsAgentClient* devTools
     , m_newNavigationLoader(0)
 #endif
     , m_zoomLevel(0)
+    , m_zoomTextOnly(false)
     , m_contextMenuAllowed(false)
     , m_doingDragAndDrop(false)
     , m_ignoreInputEvents(false)
@@ -1493,13 +1494,23 @@ int WebViewImpl::setZoomLevel(bool textOnly, int zoomLevel)
     FrameView* view = frame->view();
     if (!view)
         return m_zoomLevel;
-    if (zoomFactor != view->zoomFactor()) {
-        view->setZoomFactor(zoomFactor, textOnly ? ZoomTextOnly : ZoomPage);
+
+    float oldZoomFactor = m_zoomTextOnly ? view->textZoomFactor() : page->textZoomFactor();
+
+    if (textOnly)
+        view->setPageAndTextZoomFactors(1, zoomFactor);
+    else
+        view->setPageAndTextZoomFactors(zoomFactor, 1);
+
+    if (oldZoomFactor != zoomFactor || textOnly != m_zoomTextOnly) {
         WebPluginContainerImpl* pluginContainer = WebFrameImpl::pluginContainerFromFrame(frame);
         if (pluginContainer)
             pluginContainer->plugin()->setZoomFactor(zoomFactor, textOnly);
-        m_zoomLevel = zoomLevel;
     }
+
+    m_zoomLevel = zoomLevel;
+    m_zoomTextOnly = textOnly;
+
     return m_zoomLevel;
 }
 
diff --git a/WebKit/chromium/src/WebViewImpl.h b/WebKit/chromium/src/WebViewImpl.h
index cb7da95..c2ef313 100644
--- a/WebKit/chromium/src/WebViewImpl.h
+++ b/WebKit/chromium/src/WebViewImpl.h
@@ -342,6 +342,8 @@ public:
 
     WebCore::PopupContainer* selectPopup() const { return m_selectPopup.get(); }
 
+    bool zoomTextOnly() const { return m_zoomTextOnly; }
+
     // Returns true if the event leads to scrolling.
     static bool mapKeyCodeForScroll(int keyCode,
                                    WebCore::ScrollDirection* scrollDirection,
@@ -439,6 +441,8 @@ private:
     // mean zoom in, negative numbers mean zoom out.
     int m_zoomLevel;
 
+    bool m_zoomTextOnly;
+
     bool m_contextMenuAllowed;
 
     bool m_doingDragAndDrop;
diff --git a/WebKit/gtk/ChangeLog b/WebKit/gtk/ChangeLog
index 3c9b883..56ce34d 100644
--- a/WebKit/gtk/ChangeLog
+++ b/WebKit/gtk/ChangeLog
@@ -1,3 +1,16 @@
+2010-09-10  Sam Weinig  <sam at webkit.org>
+
+        Reviewed by Darin Adler.
+
+        Remove unnecessary constraint in WebCore of choosing either text zoom or full page zoom.
+        Precursor to <rdar://problem/7660657>
+        https://bugs.webkit.org/show_bug.cgi?id=45522
+
+        * webkit/webkitwebview.cpp:
+        (webkit_web_view_get_zoom_level):
+        (webkit_web_view_apply_zoom_level):
+        (webkit_web_view_set_full_content_zoom):
+
 2010-09-10  Mario Sanchez Prada  <msanchez at igalia.com>
 
         Reviewed by Gustavo Noronha Silva.
diff --git a/WebKit/gtk/webkit/webkitwebview.cpp b/WebKit/gtk/webkit/webkitwebview.cpp
index 3e23554..d4125b1 100644
--- a/WebKit/gtk/webkit/webkitwebview.cpp
+++ b/WebKit/gtk/webkit/webkitwebview.cpp
@@ -4081,7 +4081,8 @@ gfloat webkit_web_view_get_zoom_level(WebKitWebView* webView)
     if (!view)
         return 1;
 
-    return view->zoomFactor();
+    WebKitWebViewPrivate* priv = webView->priv;
+    return priv->zoomFullContent ? view->pageZoomFactor() : view->textZoomFactor();
 }
 
 static void webkit_web_view_apply_zoom_level(WebKitWebView* webView, gfloat zoomLevel)
@@ -4095,7 +4096,10 @@ static void webkit_web_view_apply_zoom_level(WebKitWebView* webView, gfloat zoom
         return;
 
     WebKitWebViewPrivate* priv = webView->priv;
-    view->setZoomFactor(zoomLevel, priv->zoomFullContent ? ZoomPage : ZoomTextOnly);
+    if (priv->zoomFullContent)
+        view->setPageZoomFactor(zoomLevel);
+    else
+        view->setTextZoomFactor(zoomLevel);        
 }
 
 /**
@@ -4198,8 +4202,21 @@ void webkit_web_view_set_full_content_zoom(WebKitWebView* webView, gboolean zoom
     if (priv->zoomFullContent == zoomFullContent)
       return;
 
+    Frame* frame = core(webView)->mainFrame();
+    if (!frame)
+      return;
+
+    FrameView* view = frame->view();
+    if (!view)
+      return;
+
+    gfloat zoomLevel = priv->zoomFullContent ? view->pageZoomFactor() : view->textZoomFactor();
+
     priv->zoomFullContent = zoomFullContent;
-    webkit_web_view_apply_zoom_level(webView, webkit_web_view_get_zoom_level(webView));
+    if (priv->zoomFullContent)
+        view->setPageAndTextZoomFactors(multiplier, 1);
+    else
+        view->setPageAndTextZoomFactors(1, multiplier);
 
     g_object_notify(G_OBJECT(webView), "full-content-zoom");
 }
diff --git a/WebKit/mac/ChangeLog b/WebKit/mac/ChangeLog
index 35b32e0..8603050 100644
--- a/WebKit/mac/ChangeLog
+++ b/WebKit/mac/ChangeLog
@@ -1,3 +1,20 @@
+2010-09-10  Sam Weinig  <sam at webkit.org>
+
+        Reviewed by Darin Adler.
+
+        Remove unnecessary constraint in WebCore of choosing either text zoom or full page zoom.
+        Precursor to <rdar://problem/7660657>
+        https://bugs.webkit.org/show_bug.cgi?id=45522
+
+        * WebView/WebView.mm:
+        (-[WebView _preferencesChangedNotification:]):
+        (-[WebView _setZoomMultiplier:isTextOnly:]):
+        (-[WebView _realZoomMultiplierIsTextOnly]):
+        * WebView/WebViewData.h:
+        * WebView/WebViewData.mm:
+        (-[WebViewPrivate init]):
+        Move tracking of text only zoom here from WebCore.
+
 2010-09-10  Stephanie Lewis  <slewis at apple.com>
 
         Reviewed by Alexey Proskuryakov.
diff --git a/WebKit/mac/WebView/WebView.mm b/WebKit/mac/WebView/WebView.mm
index 0624023..0182fa5 100644
--- a/WebKit/mac/WebView/WebView.mm
+++ b/WebKit/mac/WebView/WebView.mm
@@ -1427,7 +1427,6 @@ static bool fastDocumentTeardownEnabled()
     settings->setWebArchiveDebugModeEnabled([preferences webArchiveDebugModeEnabled]);
     settings->setLocalFileContentSniffingEnabled([preferences localFileContentSniffingEnabled]);
     settings->setOfflineWebApplicationCacheEnabled([preferences offlineWebApplicationCacheEnabled]);
-    settings->setZoomMode([preferences zoomsTextOnly] ? ZoomTextOnly : ZoomPage);
     settings->setJavaScriptCanAccessClipboard([preferences javaScriptCanAccessClipboard]);
     settings->setXSSAuditorEnabled([preferences isXSSAuditorEnabled]);
     settings->setEnforceCSSMIMETypeInNoQuirksMode(!WKAppVersionCheckLessThan(@"com.apple.iWeb", -1, 2.1));
@@ -1450,6 +1449,10 @@ static bool fastDocumentTeardownEnabled()
 
     // Application Cache Preferences are stored on the global cache storage manager, not in Settings.
     [WebApplicationCache setDefaultOriginQuota:[preferences applicationCacheDefaultOriginQuota]];
+
+    BOOL zoomsTextOnly = [preferences zoomsTextOnly];
+    if (_private->zoomsTextOnly != zoomsTextOnly)
+        [self _setZoomMultiplier:_private->zoomMultiplier isTextOnly:zoomsTextOnly];
 }
 
 static inline IMP getMethod(id o, SEL s)
@@ -3301,17 +3304,18 @@ static bool needsWebViewInitThreadWorkaround()
 {
     // NOTE: This has no visible effect when viewing a PDF (see <rdar://problem/4737380>)
     _private->zoomMultiplier = multiplier;
-
-    ASSERT(_private->page);
-    if (_private->page)
-        _private->page->settings()->setZoomMode(isTextOnly ? ZoomTextOnly : ZoomPage);
+    _private->zoomsTextOnly = isTextOnly;
 
     // FIXME: It would be nice to rework this code so that _private->zoomMultiplier doesn't exist
     // and instead FrameView::zoomFactor is used.
     Frame* coreFrame = [self _mainCoreFrame];
     if (coreFrame) {
-        if (FrameView* view = coreFrame->view())
-            view->setZoomFactor(multiplier, isTextOnly ? ZoomTextOnly : ZoomPage);
+        if (FrameView* view = coreFrame->view()) {
+            if (_private->zoomsTextOnly)
+                view->setPageAndTextZoomFactors(1, multiplier);
+            else
+                view->setPageAndTextZoomFactors(multiplier, 1);
+        }
     }
 }
 
@@ -3332,7 +3336,7 @@ static bool needsWebViewInitThreadWorkaround()
     if (!_private->page)
         return NO;
     
-    return _private->page->settings()->zoomMode() == ZoomTextOnly;
+    return _private->zoomsTextOnly;
 }
 
 #define MinimumZoomMultiplier       0.5f
diff --git a/WebKit/mac/WebView/WebViewData.h b/WebKit/mac/WebView/WebViewData.h
index 558770e..9aa91dc 100644
--- a/WebKit/mac/WebView/WebViewData.h
+++ b/WebKit/mac/WebView/WebViewData.h
@@ -78,6 +78,7 @@ extern int pluginDatabaseClientCount;
     BOOL allowsUndo;
         
     float zoomMultiplier;
+    BOOL zoomsTextOnly;
 
     NSString *applicationNameForUserAgent;
     WTF::String userAgent;
diff --git a/WebKit/mac/WebView/WebViewData.mm b/WebKit/mac/WebView/WebViewData.mm
index 06da58f..9794d03 100644
--- a/WebKit/mac/WebView/WebViewData.mm
+++ b/WebKit/mac/WebView/WebViewData.mm
@@ -62,6 +62,7 @@ int pluginDatabaseClientCount = 0;
     cssAnimationsSuspended = NO;
 
     zoomMultiplier = 1;
+    zoomsTextOnly = NO;
 
 #if ENABLE(DASHBOARD_SUPPORT)
     dashboardBehaviorAllowWheelScrolling = YES;
diff --git a/WebKit/qt/Api/qwebframe.cpp b/WebKit/qt/Api/qwebframe.cpp
index 464b4a0..ef24666 100644
--- a/WebKit/qt/Api/qwebframe.cpp
+++ b/WebKit/qt/Api/qwebframe.cpp
@@ -1109,7 +1109,9 @@ void QWebFrame::setTextSizeMultiplier(qreal factor)
     if (!view)
         return;
 
-    view->setZoomFactor(factor, ZoomTextOnly);
+    page()->settings()->setAttribute(QWebSettings::ZoomTextOnly, true);
+
+    view->setPageAndTextZoomFactors(1, factor);
 }
 
 /*!
@@ -1121,7 +1123,7 @@ qreal QWebFrame::textSizeMultiplier() const
     if (!view)
         return 1;
 
-    return view->zoomFactor();
+    return d->zoomTextOnly ? view->textZoomFactor() : view->pageZoomFactor();
 }
 
 /*!
@@ -1140,7 +1142,10 @@ void QWebFrame::setZoomFactor(qreal factor)
     if (!view)
         return;
 
-    view->setZoomFactor(factor, page->settings()->zoomMode());
+    if (d->zoomTextOnly)
+        view->setTextZoomFactor(factor);
+    else
+        view->setPageZoomFactor(factor);
 }
 
 qreal QWebFrame::zoomFactor() const
@@ -1149,7 +1154,7 @@ qreal QWebFrame::zoomFactor() const
     if (!view)
         return 1;
 
-    return view->zoomFactor();
+    return d->zoomTextOnly ? view->textZoomFactor() : view->pageZoomFactor();
 }
 
 /*!
diff --git a/WebKit/qt/Api/qwebframe_p.h b/WebKit/qt/Api/qwebframe_p.h
index b5dda62..dbc4044 100644
--- a/WebKit/qt/Api/qwebframe_p.h
+++ b/WebKit/qt/Api/qwebframe_p.h
@@ -72,6 +72,7 @@ public:
         , marginWidth(-1)
         , marginHeight(-1)
         , initialLayoutComplete(false)
+        , zoomTextOnly(false)
         {}
     void init(QWebFrame* qframe, QWebFrameData* frameData);
     void setPage(QWebPage*);
@@ -100,6 +101,7 @@ public:
     int marginWidth;
     int marginHeight;
     bool initialLayoutComplete;
+    bool zoomTextOnly;
 };
 
 class QWebHitTestResultPrivate {
diff --git a/WebKit/qt/ChangeLog b/WebKit/qt/ChangeLog
index 50ecb39..7c1ecd7 100644
--- a/WebKit/qt/ChangeLog
+++ b/WebKit/qt/ChangeLog
@@ -1,3 +1,20 @@
+2010-09-10  Sam Weinig  <sam at webkit.org>
+
+        Reviewed by Darin Adler.
+
+        Remove unnecessary constraint in WebCore of choosing either text zoom or full page zoom.
+        Precursor to <rdar://problem/7660657>
+        https://bugs.webkit.org/show_bug.cgi?id=45522
+
+        * Api/qwebframe.cpp:
+        (QWebFrame::setTextSizeMultiplier):
+        (QWebFrame::textSizeMultiplier):
+        (QWebFrame::setZoomFactor):
+        (QWebFrame::zoomFactor):
+        * Api/qwebframe_p.h:
+        (QWebFramePrivate::QWebFramePrivate):
+        Move tracking of text only zoom here from WebCore.
+
 2010-09-10  Yael Aharon  <yael.aharon at nokia.com>
 
         Reviewed by Andreas Kling.
diff --git a/WebKit/win/ChangeLog b/WebKit/win/ChangeLog
index a1af33d..817827a 100644
--- a/WebKit/win/ChangeLog
+++ b/WebKit/win/ChangeLog
@@ -1,3 +1,27 @@
+2010-09-10  Sam Weinig  <sam at webkit.org>
+
+        Reviewed by Darin Adler.
+
+        Remove unnecessary constraint in WebCore of choosing either text zoom or full page zoom.
+        Precursor to <rdar://problem/7660657>
+        https://bugs.webkit.org/show_bug.cgi?id=45522
+
+        * WebFrame.cpp:
+        * WebFrame.h:
+        Remove dead code.
+
+        * WebView.cpp:
+        (WebView::WebView):
+        (WebView::setZoomMultiplier):
+        (WebView::zoomMultiplier):
+        (WebView::canMakeTextLarger):
+        (WebView::makeTextLarger):
+        (WebView::canMakeTextSmaller):
+        (WebView::makeTextSmaller):
+        (WebView::notifyPreferencesChanged):
+        * WebView.h:
+        Move tracking of text only zoom here from WebCore.
+
 2010-09-10  Brian Weinstein  <bweinstein at apple.com>
 
         Windows Build Fix. Fix some fallout from r67238, currentForm is now off of 
diff --git a/WebKit/win/WebFrame.cpp b/WebKit/win/WebFrame.cpp
index e4f0c46..f6c7a26 100644
--- a/WebKit/win/WebFrame.cpp
+++ b/WebKit/win/WebFrame.cpp
@@ -1099,15 +1099,6 @@ void WebFrame::invalidate()
         document->recalcStyle(Node::Force);
 }
 
-void WebFrame::setTextSizeMultiplier(float multiplier)
-{
-    Frame* coreFrame = core(this);
-    ASSERT(coreFrame);
-
-    if (FrameView* view = coreFrame->view())
-        view->setZoomFactor(multiplier, ZoomTextOnly);
-}
-
 HRESULT WebFrame::inViewSourceMode(BOOL* flag)
 {
     if (!flag) {
diff --git a/WebKit/win/WebFrame.h b/WebKit/win/WebFrame.h
index f4795c8..473ce31 100644
--- a/WebKit/win/WebFrame.h
+++ b/WebKit/win/WebFrame.h
@@ -355,7 +355,6 @@ public:
     void updateBackground();
 
     // WebFrame (matching WebCoreFrameBridge)
-    void setTextSizeMultiplier(float multiplier);
     HRESULT inViewSourceMode(BOOL *flag);
     HRESULT setInViewSourceMode(BOOL flag);
     HRESULT elementWithName(BSTR name, IDOMElement* form, IDOMElement** element);
diff --git a/WebKit/win/WebView.cpp b/WebKit/win/WebView.cpp
index bec6483..13040fe 100644
--- a/WebKit/win/WebView.cpp
+++ b/WebKit/win/WebView.cpp
@@ -326,6 +326,7 @@ WebView::WebView()
     , m_useBackForwardList(true)
     , m_userAgentOverridden(false)
     , m_zoomMultiplier(1.0f)
+    , m_zoomsTextOnly(false)
     , m_mouseActivated(false)
     , m_dragData(0)
     , m_currentCharacterCode(0)
@@ -2925,10 +2926,15 @@ HRESULT STDMETHODCALLTYPE WebView::setPageSizeMultiplier(
 void WebView::setZoomMultiplier(float multiplier, bool isTextOnly)
 {
     m_zoomMultiplier = multiplier;
-    m_page->settings()->setZoomMode(isTextOnly ? ZoomTextOnly : ZoomPage);
+    m_zoomsTextOnly = isTextOnly;
+
     if (Frame* coreFrame = core(m_mainFrame)) {
-        if (FrameView* view = coreFrame->view())
-            view->setZoomFactor(multiplier, isTextOnly ? ZoomTextOnly : ZoomPage);
+        if (FrameView* view = coreFrame->view()) {
+            if (m_zoomsTextOnly)
+                view->setPageAndTextZoomFactors(1, multiplier);
+            else
+                view->setPageAndTextZoomFactors(multiplier, 1);
+        }
     }
 }
 
@@ -2948,8 +2954,7 @@ HRESULT STDMETHODCALLTYPE WebView::pageSizeMultiplier(
 
 float WebView::zoomMultiplier(bool isTextOnly)
 {
-    ZoomMode zoomMode = isTextOnly ? ZoomTextOnly : ZoomPage;
-    if (zoomMode != m_page->settings()->zoomMode())
+    if (isTextOnly != m_zoomsTextOnly)
         return 1.0f;
     return m_zoomMultiplier;
 }
@@ -3732,7 +3737,7 @@ HRESULT STDMETHODCALLTYPE WebView::canMakeTextLarger(
         /* [in] */ IUnknown* /*sender*/,
         /* [retval][out] */ BOOL* result)
 {
-    bool canGrowMore = canZoomIn(m_page->settings()->zoomMode() == ZoomTextOnly);
+    bool canGrowMore = canZoomIn(m_zoomsTextOnly);
     *result = canGrowMore ? TRUE : FALSE;
     return S_OK;
 }
@@ -3754,7 +3759,7 @@ bool WebView::canZoomIn(bool isTextOnly)
 HRESULT STDMETHODCALLTYPE WebView::makeTextLarger( 
         /* [in] */ IUnknown* /*sender*/)
 {
-    return zoomIn(m_page->settings()->zoomMode() == ZoomTextOnly);
+    return zoomIn(m_zoomsTextOnly);
 }
 
 HRESULT STDMETHODCALLTYPE WebView::zoomPageIn( 
@@ -3775,7 +3780,7 @@ HRESULT STDMETHODCALLTYPE WebView::canMakeTextSmaller(
         /* [in] */ IUnknown* /*sender*/,
         /* [retval][out] */ BOOL* result)
 {
-    bool canShrinkMore = canZoomOut(m_page->settings()->zoomMode() == ZoomTextOnly);
+    bool canShrinkMore = canZoomOut(m_zoomsTextOnly);
     *result = canShrinkMore ? TRUE : FALSE;
     return S_OK;
 }
@@ -3797,7 +3802,7 @@ bool WebView::canZoomOut(bool isTextOnly)
 HRESULT STDMETHODCALLTYPE WebView::makeTextSmaller( 
         /* [in] */ IUnknown* /*sender*/)
 {
-    return zoomOut(m_page->settings()->zoomMode() == ZoomTextOnly);
+    return zoomOut(m_zoomsTextOnly);
 }
 
 HRESULT STDMETHODCALLTYPE WebView::zoomPageOut( 
@@ -4634,7 +4639,9 @@ HRESULT WebView::notifyPreferencesChanged(IWebNotification* notification)
     hr = preferences->zoomsTextOnly(&enabled);
     if (FAILED(hr))
         return hr;
-    settings->setZoomMode(enabled ? ZoomTextOnly : ZoomPage);
+
+    if (m_zoomsTextOnly != !!enabled)
+        setZoomMultiplier(m_zoomMultiplier, enabled);
 
     settings->setShowsURLsInToolTips(false);
     settings->setForceFTPDirectoryListings(true);
diff --git a/WebKit/win/WebView.h b/WebKit/win/WebView.h
index eec24fd..a406c2e 100644
--- a/WebKit/win/WebView.h
+++ b/WebKit/win/WebView.h
@@ -995,6 +995,7 @@ protected:
     WTF::String m_userAgentCustom;
     WTF::String m_userAgentStandard;
     float m_zoomMultiplier;
+    bool m_zoomsTextOnly;
     WTF::String m_overrideEncoding;
     WTF::String m_applicationName;
     bool m_mouseActivated;
diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index fd9ca44..a0dd633 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,3 +1,30 @@
+2010-09-10  Sam Weinig  <sam at webkit.org>
+
+        Reviewed by Darin Adler.
+
+        Remove unnecessary constraint in WebCore of choosing either text zoom or full page zoom.
+        Precursor to <rdar://problem/7660657>
+        https://bugs.webkit.org/show_bug.cgi?id=45522
+
+        Now that WebCore doesn't require a mode, change the bundle API for zoom to not
+        require one either.
+
+        * WebProcess/InjectedBundle/API/c/WKBundleAPICast.h:
+        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
+        (WKBundlePageStopLoading):
+        (WKBundlePageGetTextZoomFactor):
+        (WKBundlePageSetTextZoomFactor):
+        (WKBundlePageGetPageZoomFactor):
+        (WKBundlePageSetPageZoomFactor):
+        * WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::WebPage):
+        (WebKit::WebPage::textZoomFactor):
+        (WebKit::WebPage::setTextZoomFactor):
+        (WebKit::WebPage::pageZoomFactor):
+        (WebKit::WebPage::setPageZoomFactor):
+        * WebProcess/WebPage/WebPage.h:
+
 2010-09-10  Balazs Kelemen  <kb at inf.u-szeged.hu>
 
         Reviewed by Andreas Kling.
diff --git a/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleAPICast.h b/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleAPICast.h
index 0a311c8..9c4a3fc 100644
--- a/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleAPICast.h
+++ b/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleAPICast.h
@@ -34,7 +34,6 @@
 #include <WebCore/TextAffinity.h>
 #include <WebCore/UserContentTypes.h>
 #include <WebCore/UserScriptTypes.h>
-#include <WebCore/ZoomMode.h>
 
 namespace WebCore {
     class CSSStyleDeclaration;
@@ -118,19 +117,6 @@ inline WKAffinityType toWK(WebCore::EAffinity affinity)
     return kWKAffinityUpstream;
 }
 
-inline WebCore::ZoomMode toZoomMode(WKBundlePageZoomMode wkZoomMode)
-{
-    switch (wkZoomMode) {
-    case kWKBundlePageZoomModeTextOnly:
-        return WebCore::ZoomTextOnly;
-    case kWKBundlePageZoomModePage:
-        return WebCore::ZoomPage;
-    }
-
-    ASSERT_NOT_REACHED();
-    return WebCore::ZoomTextOnly;
-}
-
 inline WebCore::UserScriptInjectionTime toUserScriptInjectionTime(WKUserScriptInjectionTime wkInjectedTime)
 {
     switch (wkInjectedTime) {
diff --git a/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp b/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp
index ee43536..acc785e 100644
--- a/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp
+++ b/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp
@@ -70,6 +70,11 @@ WKBundleFrameRef WKBundlePageGetMainFrame(WKBundlePageRef pageRef)
     return toRef(toWK(pageRef)->mainFrame());
 }
 
+void WKBundlePageStopLoading(WKBundlePageRef pageRef)
+{
+    toWK(pageRef)->stopLoading();
+}
+
 WKStringRef WKBundlePageCopyRenderTreeExternalRepresentation(WKBundlePageRef pageRef)
 {
     return toCopiedRef(toWK(pageRef)->renderTreeExternalRepresentation());
@@ -95,22 +100,22 @@ void WKBundlePageClose(WKBundlePageRef pageRef)
     toWK(pageRef)->sendClose();
 }
 
-float WKBundlePageGetZoomFactor(WKBundlePageRef pageRef)
+float WKBundlePageGetTextZoomFactor(WKBundlePageRef pageRef)
 {
-    return toWK(pageRef)->zoomFactor();
+    return toWK(pageRef)->textZoomFactor();
 }
 
-void WKBundlePageSetZoomFactor(WKBundlePageRef pageRef, float zoomFactor)
+void WKBundlePageSetTextZoomFactor(WKBundlePageRef pageRef, float zoomFactor)
 {
-    toWK(pageRef)->setZoomFactor(zoomFactor);
+    toWK(pageRef)->setTextZoomFactor(zoomFactor);
 }
 
-void WKBundlePageSetZoomMode(WKBundlePageRef pageRef, WKBundlePageZoomMode zoomMode)
+float WKBundlePageGetPageZoomFactor(WKBundlePageRef pageRef)
 {
-    toWK(pageRef)->setZoomMode(toZoomMode(zoomMode));
+    return toWK(pageRef)->pageZoomFactor();
 }
 
-void WKBundlePageStopLoading(WKBundlePageRef pageRef)
+void WKBundlePageSetPageZoomFactor(WKBundlePageRef pageRef, float zoomFactor)
 {
-    toWK(pageRef)->stopLoading();
+    toWK(pageRef)->setPageZoomFactor(zoomFactor);
 }
diff --git a/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h b/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h
index 6d483ea..a2f3086 100644
--- a/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h
+++ b/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h
@@ -33,23 +33,18 @@
 extern "C" {
 #endif
 
-enum WKBundlePageZoomMode {
-    kWKBundlePageZoomModePage = 0,
-    kWKBundlePageZoomModeTextOnly = 1
-};
-typedef enum WKBundlePageZoomMode WKBundlePageZoomMode;
-
+WK_EXPORT void WKBundlePageStopLoading(WKBundlePageRef page);
 WK_EXPORT bool WKBundlePageIsEditingCommandEnabled(WKBundlePageRef page, WKStringRef commandName);
 WK_EXPORT void WKBundlePageClearMainFrameName(WKBundlePageRef page);
 WK_EXPORT void WKBundlePageClose(WKBundlePageRef page);
 WK_EXPORT WKStringRef WKBundlePageCopyRenderTreeExternalRepresentation(WKBundlePageRef page);
 WK_EXPORT void WKBundlePageExecuteEditingCommand(WKBundlePageRef page, WKStringRef commandName, WKStringRef argument);
 
-WK_EXPORT float WKBundlePageGetZoomFactor(WKBundlePageRef page);
-WK_EXPORT void WKBundlePageSetZoomFactor(WKBundlePageRef page, float zoomFactor);
-WK_EXPORT void WKBundlePageSetZoomMode(WKBundlePageRef page, WKBundlePageZoomMode zoomMode);
+WK_EXPORT float WKBundlePageGetTextZoomFactor(WKBundlePageRef page);
+WK_EXPORT void WKBundlePageSetTextZoomFactor(WKBundlePageRef page, float zoomFactor);
+WK_EXPORT float WKBundlePageGetPageZoomFactor(WKBundlePageRef page);
+WK_EXPORT void WKBundlePageSetPageZoomFactor(WKBundlePageRef page, float zoomFactor);
 
-WK_EXPORT void WKBundlePageStopLoading(WKBundlePageRef page);
 
 #ifdef __cplusplus
 }
diff --git a/WebKit2/WebProcess/WebPage/WebPage.cpp b/WebKit2/WebProcess/WebPage/WebPage.cpp
index 53834e9..2248b2e 100644
--- a/WebKit2/WebProcess/WebPage/WebPage.cpp
+++ b/WebKit2/WebProcess/WebPage/WebPage.cpp
@@ -115,7 +115,6 @@ WebPage::WebPage(uint64_t pageID, const IntSize& viewSize, const WebPreferencesS
     m_page->settings()->setFixedFontFamily(store.fixedFontFamily);
     m_page->settings()->setSansSerifFontFamily(store.sansSerifFontFamily);
     m_page->settings()->setSerifFontFamily(store.serifFontFamily);
-
     m_page->settings()->setJavaScriptCanOpenWindowsAutomatically(true);
 
     m_page->setGroupName("WebKit2Group");
@@ -303,27 +302,40 @@ void WebPage::drawRect(GraphicsContext& graphicsContext, const IntRect& rect)
     graphicsContext.restore();
 }
 
-float WebPage::zoomFactor() const
+float WebPage::textZoomFactor() const
 {
     if (Frame* coreFrame = m_mainFrame->coreFrame()) {
         if (FrameView* view = coreFrame->view())
-            return view->zoomFactor();
+            return view->textZoomFactor();
     }
     
     return 1.0f;
 }
 
-void WebPage::setZoomFactor(float zoomFactor)
+void WebPage::setTextZoomFactor(float zoomFactor)
+{
+    if (Frame* coreFrame = m_mainFrame->coreFrame()) {
+        if (FrameView* view = coreFrame->view())
+            return view->setTextZoomFactor(zoomFactor);
+    }
+}
+
+float WebPage::pageZoomFactor() const
 {
     if (Frame* coreFrame = m_mainFrame->coreFrame()) {
         if (FrameView* view = coreFrame->view())
-            return view->setZoomFactor(zoomFactor, m_page->settings()->zoomMode());
+            return view->pageZoomFactor();
     }
+    
+    return 1.0f;
 }
 
-void WebPage::setZoomMode(ZoomMode mode)
+void WebPage::setPageZoomFactor(float zoomFactor)
 {
-    m_page->settings()->setZoomMode(mode);
+    if (Frame* coreFrame = m_mainFrame->coreFrame()) {
+        if (FrameView* view = coreFrame->view())
+            return view->setPageZoomFactor(zoomFactor);
+    }
 }
 
 // Events 
diff --git a/WebKit2/WebProcess/WebPage/WebPage.h b/WebKit2/WebProcess/WebPage/WebPage.h
index 460fd7e..e6ab3ef 100644
--- a/WebKit2/WebProcess/WebPage/WebPage.h
+++ b/WebKit2/WebProcess/WebPage/WebPage.h
@@ -35,7 +35,6 @@
 #include "WebEditCommand.h"
 #include <WebCore/FrameLoaderTypes.h>
 #include <WebCore/IntRect.h>
-#include <WebCore/ZoomMode.h>
 #include <wtf/HashMap.h>
 #include <wtf/OwnPtr.h>
 #include <wtf/PassRefPtr.h>
@@ -126,9 +125,10 @@ public:
     void clearMainFrameName();
     void sendClose();
 
-    float zoomFactor() const;
-    void setZoomFactor(float);
-    void setZoomMode(WebCore::ZoomMode);
+    float textZoomFactor() const;
+    void setTextZoomFactor(float);
+    float pageZoomFactor() const;
+    void setPageZoomFactor(float);
 
     void stopLoading();
 
diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog
index 02cc85b..647c731 100644
--- a/WebKitTools/ChangeLog
+++ b/WebKitTools/ChangeLog
@@ -1,3 +1,22 @@
+2010-09-10  Sam Weinig  <sam at webkit.org>
+
+        Reviewed by Darin Adler.
+
+        Remove unnecessary constraint in WebCore of choosing either text zoom or full page zoom.
+        Precursor to <rdar://problem/7660657>
+        https://bugs.webkit.org/show_bug.cgi?id=45522
+
+        Update for changes to the Bundle API to allow separate control of page and text zoom
+        levels.
+
+        * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
+        (WTR::EventSendingController::textZoomIn):
+        (WTR::EventSendingController::textZoomOut):
+        (WTR::EventSendingController::zoomPageIn):
+        (WTR::EventSendingController::zoomPageOut):
+        * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
+        (WTR::InjectedBundlePage::reset):
+
 2010-09-10  Yael Aharon  <yael.aharon at nokia.com>
 
         Reviewed by Andreas Kling.
diff --git a/WebKitTools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp b/WebKitTools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp
index 472cf6c..dc224cf 100644
--- a/WebKitTools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp
+++ b/WebKitTools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp
@@ -92,30 +92,38 @@ void EventSendingController::leapForward(JSContextRef context, size_t argumentCo
 
 void EventSendingController::textZoomIn()
 {
-    WKBundlePageSetZoomMode(InjectedBundle::shared().page()->page(), kWKBundlePageZoomModeTextOnly);
-    float zoomFactor = WKBundlePageGetZoomFactor(InjectedBundle::shared().page()->page());
-    WKBundlePageSetZoomFactor(InjectedBundle::shared().page()->page(), zoomFactor * ZoomMultiplierRatio);
+    // Ensure page zoom is reset.
+    WKBundlePageSetPageZoomFactor(InjectedBundle::shared().page()->page(), 1);
+
+    float zoomFactor = WKBundlePageGetTextZoomFactor(InjectedBundle::shared().page()->page());
+    WKBundlePageSetTextZoomFactor(InjectedBundle::shared().page()->page(), zoomFactor * ZoomMultiplierRatio);
 }
 
 void EventSendingController::textZoomOut()
 {
-    WKBundlePageSetZoomMode(InjectedBundle::shared().page()->page(), kWKBundlePageZoomModeTextOnly);
-    float zoomFactor = WKBundlePageGetZoomFactor(InjectedBundle::shared().page()->page());
-    WKBundlePageSetZoomFactor(InjectedBundle::shared().page()->page(), zoomFactor / ZoomMultiplierRatio);
+    // Ensure page zoom is reset.
+    WKBundlePageSetPageZoomFactor(InjectedBundle::shared().page()->page(), 1);
+
+    float zoomFactor = WKBundlePageGetTextZoomFactor(InjectedBundle::shared().page()->page());
+    WKBundlePageSetTextZoomFactor(InjectedBundle::shared().page()->page(), zoomFactor / ZoomMultiplierRatio);
 }
 
 void EventSendingController::zoomPageIn()
 {
-    WKBundlePageSetZoomMode(InjectedBundle::shared().page()->page(), kWKBundlePageZoomModePage);
-    float zoomFactor = WKBundlePageGetZoomFactor(InjectedBundle::shared().page()->page());
-    WKBundlePageSetZoomFactor(InjectedBundle::shared().page()->page(), zoomFactor * ZoomMultiplierRatio);
+    // Ensure text zoom is reset.
+    WKBundlePageSetTextZoomFactor(InjectedBundle::shared().page()->page(), 1);
+
+    float zoomFactor = WKBundlePageGetPageZoomFactor(InjectedBundle::shared().page()->page());
+    WKBundlePageSetPageZoomFactor(InjectedBundle::shared().page()->page(), zoomFactor / ZoomMultiplierRatio);
 }
 
 void EventSendingController::zoomPageOut()
 {
-    WKBundlePageSetZoomMode(InjectedBundle::shared().page()->page(), kWKBundlePageZoomModePage);
-    float zoomFactor = WKBundlePageGetZoomFactor(InjectedBundle::shared().page()->page());
-    WKBundlePageSetZoomFactor(InjectedBundle::shared().page()->page(), zoomFactor / ZoomMultiplierRatio);
+    // Ensure text zoom is reset.
+    WKBundlePageSetTextZoomFactor(InjectedBundle::shared().page()->page(), 1);
+
+    float zoomFactor = WKBundlePageGetPageZoomFactor(InjectedBundle::shared().page()->page());
+    WKBundlePageSetPageZoomFactor(InjectedBundle::shared().page()->page(), zoomFactor / ZoomMultiplierRatio);
 }
 
 // Object Creation
diff --git a/WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp b/WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp
index bf7a029..80dcbc0 100644
--- a/WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp
+++ b/WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp
@@ -158,8 +158,8 @@ void InjectedBundlePage::reset()
 {
     WKBundlePageClearMainFrameName(m_page);
 
-    WKBundlePageSetZoomFactor(m_page, 1.0f);
-    WKBundlePageSetZoomMode(m_page, kWKBundlePageZoomModePage);
+    WKBundlePageSetPageZoomFactor(m_page, 1);
+    WKBundlePageSetTextZoomFactor(m_page, 1);
 }
 
 // Loader Client Callbacks

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list