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

darin at apple.com darin at apple.com
Wed Dec 22 13:31:18 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 0f442a789139be23442ff381a09253eaa8d11965
Author: darin at apple.com <darin at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Sat Sep 18 00:32:24 2010 +0000

    2010-09-17  Darin Adler  <darin at apple.com>
    
            Reviewed by Sam Weinig.
    
            REGRESSION (r60104): Zoom level is unexpectedly reset on page reload
            https://bugs.webkit.org/show_bug.cgi?id=42863
    
            * src/FrameLoaderClientImpl.cpp:
            (WebKit::FrameLoaderClientImpl::createPlugin):
            * src/WebViewImpl.cpp:
            (WebKit::WebViewImpl::setZoomLevel):
            Call functions on Frame instead of FrameView.
    2010-09-17  Darin Adler  <darin at apple.com>
    
            Reviewed by Sam Weinig.
    
            REGRESSION (r60104): Zoom level is unexpectedly reset on page reload
            https://bugs.webkit.org/show_bug.cgi?id=42863
    
            * Api/qwebframe.cpp:
            (QWebFrame::setTextSizeMultiplier):
            (QWebFrame::textSizeMultiplier):
            (QWebFrame::setZoomFactor):
            (QWebFrame::zoomFactor):
            Call functions on Frame instead of FrameView.
    2010-09-17  Darin Adler  <darin at apple.com>
    
            Reviewed by Sam Weinig.
    
            REGRESSION (r60104): Zoom level is unexpectedly reset on page reload
            https://bugs.webkit.org/show_bug.cgi?id=42863
    
            * webkit/webkitwebview.cpp:
            (webkit_web_view_get_zoom_level):
            (webkit_web_view_apply_zoom_level):
            (webkit_web_view_set_full_content_zoom):
            Call functions on Frame instead of FrameView.
    2010-09-17  Darin Adler  <darin at apple.com>
    
            Reviewed by Sam Weinig.
    
            REGRESSION (r60104): Zoom level is unexpectedly reset on page reload
            https://bugs.webkit.org/show_bug.cgi?id=42863
    
            * WebView.cpp:
            (WebView::setZoomMultiplier):
            Call functions on Frame instead of FrameView.
    2010-09-17  Darin Adler  <darin at apple.com>
    
            Reviewed by Sam Weinig.
    
            REGRESSION (r60104): Zoom level is unexpectedly reset on page reload
            https://bugs.webkit.org/show_bug.cgi?id=42863
    
            * WebFrame.cpp:
            (wxWebFrame::IncreaseTextSize):
            (wxWebFrame::DecreaseTextSize):
            (wxWebFrame::ResetTextSize):
            Call functions on Frame instead of FrameView.
    2010-09-17  Darin Adler  <darin at apple.com>
    
            Reviewed by Sam Weinig.
    
            REGRESSION (r60104): Zoom level is unexpectedly reset on page reload
            https://bugs.webkit.org/show_bug.cgi?id=42863
    
            * WebView/WebView.mm:
            (-[WebView _setZoomMultiplier:isTextOnly:]):
            Call functions on Frame instead of FrameView.
    2010-09-17  Darin Adler  <darin at apple.com>
    
            Reviewed by Sam Weinig.
    
            REGRESSION (r60104): Zoom level is unexpectedly reset on page reload
            https://bugs.webkit.org/show_bug.cgi?id=42863
    
            * ewk/ewk_frame.cpp:
            (ewk_frame_zoom_get):
            (ewk_frame_zoom_set):
            (ewk_frame_zoom_text_only_set):
            Call functions on Frame instead of FrameView.
    2010-09-17  Darin Adler  <darin at apple.com>
    
            Reviewed by Sam Weinig.
    
            REGRESSION (r60104): Zoom level is unexpectedly reset on page reload
            https://bugs.webkit.org/show_bug.cgi?id=42863
    
            Moved zoom level back from FrameView to Frame.
            I had forgotten that FrameView's lifetime is much shorter than
            Frame's, and until that is fixed it's best to leave this on Frame.
    
            * WebCore.exp.in: Updated.
    
            * css/CSSStyleSelector.cpp:
            (WebCore::CSSStyleSelector::styleForDocument):
            (WebCore::CSSStyleSelector::applyProperty):
            (WebCore::CSSStyleSelector::getComputedSizeFromSpecifiedSize):
            * dom/Document.cpp:
            (WebCore::Document::nodesFromRect):
            (WebCore::Document::elementFromPoint):
            (WebCore::Document::caretRangeFromPoint):
            * dom/MouseRelatedEvent.cpp:
            (WebCore::contentsX):
            (WebCore::contentsY):
            (WebCore::pageZoomFactor):
            * dom/Node.cpp:
            (WebCore::Node::dispatchMouseEvent):
            (WebCore::Node::dispatchWheelEvent):
            * html/HTMLBodyElement.cpp:
            (WebCore::adjustForZoom):
            (WebCore::HTMLBodyElement::scrollLeft):
            (WebCore::HTMLBodyElement::setScrollLeft):
            (WebCore::HTMLBodyElement::scrollTop):
            (WebCore::HTMLBodyElement::setScrollTop):
            (WebCore::HTMLBodyElement::scrollHeight):
            (WebCore::HTMLBodyElement::scrollWidth):
            * html/ImageDocument.cpp:
            (WebCore::pageZoomFactor):
            (WebCore::ImageDocument::scale):
            (WebCore::ImageDocument::imageFitsInWindow):
            * page/DOMWindow.cpp:
            (WebCore::DOMWindow::innerHeight):
            (WebCore::DOMWindow::innerWidth):
            (WebCore::DOMWindow::scrollX):
            (WebCore::DOMWindow::scrollY):
            (WebCore::DOMWindow::scrollTo):
            * page/DragController.cpp:
            (WebCore::elementUnderMouse):
            * rendering/RenderView.cpp:
            (WebCore::RenderView::zoomFactor):
            * svg/SVGSVGElement.cpp:
            (WebCore::SVGSVGElement::currentScale):
            (WebCore::SVGSVGElement::setCurrentScale):
            Get zoom factor from Frame rather than FrameView.
    
            * page/Frame.cpp:
            (WebCore::parentPageZoomFactor): Moved back here from FrameView.
            (WebCore::parentTextZoomFactor): Ditto.
            (WebCore::Frame::Frame): Ditto.
            (WebCore::Frame::setPageZoomFactor): Ditto.
            (WebCore::Frame::setTextZoomFactor): Ditto.
            (WebCore::Frame::setPageAndTextZoomFactors): Ditto.
    
            * page/Frame.h: Moved functions and data for zooming back here
            from FrameView.
    
            * page/FrameView.cpp:
            (WebCore::FrameView::FrameView):
            * page/FrameView.h:
            Removed code from here.
    2010-09-17  Daniel Bates  <dbates at rim.com>
    
            Reviewed by Darin Adler.
    
            REGRESSION (r60104): Zoom level is unexpectedly reset on page reload
            https://bugs.webkit.org/show_bug.cgi?id=42863
    
            * fast/css/preserve-user-specified-zoom-level-on-reload.html: Added.
            * platform/mac/fast/css/preserve-user-specified-zoom-level-on-reload-expected.checksum: Added.
            * platform/mac/fast/css/preserve-user-specified-zoom-level-on-reload-expected.png: Added.
            * platform/mac/fast/css/preserve-user-specified-zoom-level-on-reload-expected.txt: Added.
    2010-09-17  Darin Adler  <darin at apple.com>
    
            Reviewed by Sam Weinig.
    
            REGRESSION (r60104): Zoom level is unexpectedly reset on page reload
            https://bugs.webkit.org/show_bug.cgi?id=42863
    
            * WebProcess/WebPage/WebPage.cpp:
            (WebKit::WebPage::textZoomFactor):
            (WebKit::WebPage::setTextZoomFactor):
            (WebKit::WebPage::pageZoomFactor):
            (WebKit::WebPage::setPageZoomFactor):
            (WebKit::WebPage::setPageAndTextZoomFactors):
            Call functions on Frame instead of FrameView.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@67762 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index fe4864d..a8b64d2 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,15 @@
+2010-09-17  Daniel Bates  <dbates at rim.com>
+
+        Reviewed by Darin Adler.
+
+        REGRESSION (r60104): Zoom level is unexpectedly reset on page reload
+        https://bugs.webkit.org/show_bug.cgi?id=42863
+
+        * fast/css/preserve-user-specified-zoom-level-on-reload.html: Added.
+        * platform/mac/fast/css/preserve-user-specified-zoom-level-on-reload-expected.checksum: Added.
+        * platform/mac/fast/css/preserve-user-specified-zoom-level-on-reload-expected.png: Added.
+        * platform/mac/fast/css/preserve-user-specified-zoom-level-on-reload-expected.txt: Added.
+
 2010-09-17  Tony Chang  <tony at chromium.org>
 
         Reviewed by Kent Tamura.
diff --git a/LayoutTests/fast/css/preserve-user-specified-zoom-level-on-reload.html b/LayoutTests/fast/css/preserve-user-specified-zoom-level-on-reload.html
new file mode 100644
index 0000000..f4ac37a
--- /dev/null
+++ b/LayoutTests/fast/css/preserve-user-specified-zoom-level-on-reload.html
@@ -0,0 +1,38 @@
+<html>
+<head>
+<script>
+function runTest()
+{
+    if (!window.layoutTestController)
+        return;
+
+    if (!window.eventSender)
+        return;
+
+    if (!window.sessionStorage)
+        return
+
+    layoutTestController.waitUntilDone();
+    if (sessionStorage.testCompleted)
+        layoutTestController.notifyDone();
+    else {
+        // Note, it is sufficient to zoom-in only once, but so as to make it easier
+        // for a human to compare the pixel test results we zoom-in up to Safari's
+        // maximum zoom level, which at the time of writing (09/17) is 6.
+        const MaxZoomIn = 6;
+
+        for (var i = 0; i < MaxZoomIn; ++i)
+            eventSender.zoomPageIn();
+        sessionStorage.testCompleted = true;
+        document.location.reload(true);
+    }
+
+}
+
+window.onload = runTest;
+</script>
+</head>
+<body>
+<p>This test ensures that we preserve the user-specified zoom level of the page on reload.</p>
+</body>
+</html>
diff --git a/LayoutTests/platform/mac/fast/css/preserve-user-specified-zoom-level-on-reload-expected.checksum b/LayoutTests/platform/mac/fast/css/preserve-user-specified-zoom-level-on-reload-expected.checksum
new file mode 100644
index 0000000..ce1f679
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/css/preserve-user-specified-zoom-level-on-reload-expected.checksum
@@ -0,0 +1 @@
+998d14cf04fe79cbb84544e5eecb3773
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/fast/css/preserve-user-specified-zoom-level-on-reload-expected.png b/LayoutTests/platform/mac/fast/css/preserve-user-specified-zoom-level-on-reload-expected.png
new file mode 100644
index 0000000..e8238b4
Binary files /dev/null and b/LayoutTests/platform/mac/fast/css/preserve-user-specified-zoom-level-on-reload-expected.png differ
diff --git a/LayoutTests/platform/mac/fast/css/preserve-user-specified-zoom-level-on-reload-expected.txt b/LayoutTests/platform/mac/fast/css/preserve-user-specified-zoom-level-on-reload-expected.txt
new file mode 100644
index 0000000..246e48b
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/css/preserve-user-specified-zoom-level-on-reload-expected.txt
@@ -0,0 +1,10 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (23,23) size 754x530
+      RenderBlock {P} at (0,0) size 754x165
+        RenderText {#text} at (0,0) size 714x165
+          text run at (0,0) width 714: "This test ensures that we preserve the"
+          text run at (0,55) width 714: "user-specified zoom level of the page"
+          text run at (0,110) width 191: "on reload."
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index ad40c94..665bfb7 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,74 @@
+2010-09-17  Darin Adler  <darin at apple.com>
+
+        Reviewed by Sam Weinig.
+
+        REGRESSION (r60104): Zoom level is unexpectedly reset on page reload
+        https://bugs.webkit.org/show_bug.cgi?id=42863
+
+        Moved zoom level back from FrameView to Frame.
+        I had forgotten that FrameView's lifetime is much shorter than
+        Frame's, and until that is fixed it's best to leave this on Frame.
+
+        * WebCore.exp.in: Updated.
+
+        * css/CSSStyleSelector.cpp:
+        (WebCore::CSSStyleSelector::styleForDocument):
+        (WebCore::CSSStyleSelector::applyProperty):
+        (WebCore::CSSStyleSelector::getComputedSizeFromSpecifiedSize):
+        * dom/Document.cpp:
+        (WebCore::Document::nodesFromRect):
+        (WebCore::Document::elementFromPoint):
+        (WebCore::Document::caretRangeFromPoint):
+        * dom/MouseRelatedEvent.cpp:
+        (WebCore::contentsX):
+        (WebCore::contentsY):
+        (WebCore::pageZoomFactor):
+        * dom/Node.cpp:
+        (WebCore::Node::dispatchMouseEvent):
+        (WebCore::Node::dispatchWheelEvent):
+        * html/HTMLBodyElement.cpp:
+        (WebCore::adjustForZoom):
+        (WebCore::HTMLBodyElement::scrollLeft):
+        (WebCore::HTMLBodyElement::setScrollLeft):
+        (WebCore::HTMLBodyElement::scrollTop):
+        (WebCore::HTMLBodyElement::setScrollTop):
+        (WebCore::HTMLBodyElement::scrollHeight):
+        (WebCore::HTMLBodyElement::scrollWidth):
+        * html/ImageDocument.cpp:
+        (WebCore::pageZoomFactor):
+        (WebCore::ImageDocument::scale):
+        (WebCore::ImageDocument::imageFitsInWindow):
+        * page/DOMWindow.cpp:
+        (WebCore::DOMWindow::innerHeight):
+        (WebCore::DOMWindow::innerWidth):
+        (WebCore::DOMWindow::scrollX):
+        (WebCore::DOMWindow::scrollY):
+        (WebCore::DOMWindow::scrollTo):
+        * page/DragController.cpp:
+        (WebCore::elementUnderMouse):
+        * rendering/RenderView.cpp:
+        (WebCore::RenderView::zoomFactor):
+        * svg/SVGSVGElement.cpp:
+        (WebCore::SVGSVGElement::currentScale):
+        (WebCore::SVGSVGElement::setCurrentScale):
+        Get zoom factor from Frame rather than FrameView.
+
+        * page/Frame.cpp:
+        (WebCore::parentPageZoomFactor): Moved back here from FrameView.
+        (WebCore::parentTextZoomFactor): Ditto.
+        (WebCore::Frame::Frame): Ditto.
+        (WebCore::Frame::setPageZoomFactor): Ditto.
+        (WebCore::Frame::setTextZoomFactor): Ditto.
+        (WebCore::Frame::setPageAndTextZoomFactors): Ditto.
+
+        * page/Frame.h: Moved functions and data for zooming back here
+        from FrameView.
+
+        * page/FrameView.cpp:
+        (WebCore::FrameView::FrameView):
+        * page/FrameView.h:
+        Removed code from here.
+
 2010-09-17  Matthew Delaney  <mdelaney at apple.com>
 
         Reviewed by Simon Fraser.
diff --git a/WebCore/WebCore.exp.in b/WebCore/WebCore.exp.in
index cf23731..375fcf6 100644
--- a/WebCore/WebCore.exp.in
+++ b/WebCore/WebCore.exp.in
@@ -580,8 +580,11 @@ __ZN7WebCore5Cache13getStatisticsEv
 __ZN7WebCore5Cache13setCapacitiesEjjj
 __ZN7WebCore5Frame10createViewERKNS_7IntSizeERKNS_5ColorEbS3_bNS_13ScrollbarModeEbS7_b
 __ZN7WebCore5Frame14frameForWidgetEPKNS_6WidgetE
+__ZN7WebCore5Frame17setPageZoomFactorEf
+__ZN7WebCore5Frame17setTextZoomFactorEf
 __ZN7WebCore5Frame23visiblePositionForPointERKNS_8IntPointE
 __ZN7WebCore5Frame25matchLabelsAgainstElementEP7NSArrayPNS_7ElementE
+__ZN7WebCore5Frame25setPageAndTextZoomFactorsEff
 __ZN7WebCore5Frame28searchForLabelsBeforeElementEP7NSArrayPNS_7ElementEPmPb
 __ZN7WebCore5Frame6createEPNS_4PageEPNS_21HTMLFrameOwnerElementEPNS_17FrameLoaderClientE
 __ZN7WebCore5Frame7setViewEN3WTF10PassRefPtrINS_9FrameViewEEE
@@ -767,15 +770,12 @@ __ZN7WebCore9FrameView14setTransparentEb
 __ZN7WebCore9FrameView15setMarginHeightEi
 __ZN7WebCore9FrameView16adjustPageHeightEPffff
 __ZN7WebCore9FrameView16setPaintBehaviorEj
-__ZN7WebCore9FrameView17setPageZoomFactorEf
-__ZN7WebCore9FrameView17setTextZoomFactorEf
 __ZN7WebCore9FrameView18updateControlTintsEv
 __ZN7WebCore9FrameView20enterCompositingModeEv
 __ZN7WebCore9FrameView21flushDeferredRepaintsEv
 __ZN7WebCore9FrameView22setBaseBackgroundColorENS_5ColorE
 __ZN7WebCore9FrameView23updateCanHaveScrollbarsEv
 __ZN7WebCore9FrameView24forceLayoutForPaginationERKNS_9FloatSizeEfNS_5Frame19AdjustViewSizeOrNotE
-__ZN7WebCore9FrameView25setPageAndTextZoomFactorsEff
 __ZN7WebCore9FrameView29setShouldUpdateWhileOffscreenEb
 __ZN7WebCore9FrameView29syncCompositingStateRecursiveEv
 __ZN7WebCore9FrameView37updateLayoutAndStyleIfNeededRecursiveEv
@@ -846,7 +846,6 @@ __ZN7WebCore9toElementEN3JSC7JSValueE
 __ZN7WebCoreeqERKNS_19ResourceRequestBaseES2_
 __ZNK3JSC8Bindings10RootObject12globalObjectEv
 __ZNK3WTF6String14createCFStringEv
-__ZNK7WebCore6Editor34selectionStartHasSpellingMarkerForEii
 __ZNK7WebCore10FloatPointcv8_NSPointEv
 __ZNK7WebCore10PluginData16supportsMimeTypeERKN3WTF6StringE
 __ZNK7WebCore10RenderText16linesBoundingBoxEv
@@ -1022,6 +1021,7 @@ __ZNK7WebCore6Editor22selectionStartHasStyleEPNS_19CSSStyleDeclarationE
 __ZNK7WebCore6Editor23getCompositionSelectionERjS1_
 __ZNK7WebCore6Editor30applyEditingStyleToBodyElementEv
 __ZNK7WebCore6Editor31fontAttributesForSelectionStartEv
+__ZNK7WebCore6Editor34selectionStartHasSpellingMarkerForEii
 __ZNK7WebCore6Editor37baseWritingDirectionForSelectionStartEv
 __ZNK7WebCore6Editor6canCutEv
 __ZNK7WebCore6Editor7Command11isSupportedEv
diff --git a/WebCore/css/CSSStyleSelector.cpp b/WebCore/css/CSSStyleSelector.cpp
index 3f0029e..8568917 100644
--- a/WebCore/css/CSSStyleSelector.cpp
+++ b/WebCore/css/CSSStyleSelector.cpp
@@ -1099,12 +1099,12 @@ void CSSStyleSelector::matchUARules(int& firstUARule, int& lastUARule)
 
 PassRefPtr<RenderStyle> CSSStyleSelector::styleForDocument(Document* document)
 {
-    FrameView* view = document->view();
+    Frame* frame = document->frame();
 
     RefPtr<RenderStyle> documentStyle = RenderStyle::create();
     documentStyle->setDisplay(BLOCK);
     documentStyle->setVisuallyOrdered(document->visuallyOrdered());
-    documentStyle->setZoom(view ? view->pageZoomFactor() : 1);
+    documentStyle->setZoom(frame ? frame->pageZoomFactor() : 1);
     
     FontDescription fontDescription;
     fontDescription.setUsePrinterFont(document->printing());
@@ -4149,8 +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())
-                    multiplier *= view->textZoomFactor();
+                if (Frame* frame = m_checker.m_document->frame())
+                    multiplier *= frame->textZoomFactor();
             }
             lineHeight = Length(primitiveValue->computeLengthIntForLength(style(), m_rootElementStyle,  multiplier), Fixed);
         } else if (type == CSSPrimitiveValue::CSS_PERCENTAGE)
@@ -6274,8 +6274,8 @@ float CSSStyleSelector::getComputedSizeFromSpecifiedSize(Document* document, Ren
     float zoomFactor = 1.0f;
     if (!useSVGZoomRules) {
         zoomFactor = style->effectiveZoom();
-        if (document->view())
-            zoomFactor *= document->view()->textZoomFactor();
+        if (Frame* frame = document->frame())
+            zoomFactor *= frame->textZoomFactor();
     }
 
     // We support two types of minimum font size.  The first is a hard override that applies to
diff --git a/WebCore/dom/Document.cpp b/WebCore/dom/Document.cpp
index d69366f..06bd755 100644
--- a/WebCore/dom/Document.cpp
+++ b/WebCore/dom/Document.cpp
@@ -1060,7 +1060,7 @@ PassRefPtr<NodeList> Document::nodesFromRect(int centerX, int centerY, unsigned
     if (!frameView)
         return 0;
 
-    float zoomFactor = frameView->pageZoomFactor();
+    float zoomFactor = frame->pageZoomFactor();
     IntPoint point = roundedIntPoint(FloatPoint(centerX * zoomFactor + view()->scrollX(), centerY * zoomFactor + view()->scrollY()));
     IntSize padding(hPadding, vPadding);
 
@@ -1113,7 +1113,7 @@ Element* Document::elementFromPoint(int x, int y) const
     if (!frameView)
         return 0;
 
-    float zoomFactor = frameView->pageZoomFactor();
+    float zoomFactor = frame->pageZoomFactor();
     IntPoint point = roundedIntPoint(FloatPoint(x * zoomFactor  + view()->scrollX(), y * zoomFactor + view()->scrollY()));
 
     if (!frameView->visibleContentRect().contains(point))
@@ -1143,7 +1143,7 @@ PassRefPtr<Range> Document::caretRangeFromPoint(int x, int y)
     if (!frameView)
         return 0;
 
-    float zoomFactor = frameView->pageZoomFactor();
+    float zoomFactor = frame->pageZoomFactor();
     IntPoint point = roundedIntPoint(FloatPoint(x * zoomFactor + view()->scrollX(), y * zoomFactor + view()->scrollY()));
 
     if (!frameView->visibleContentRect().contains(point))
diff --git a/WebCore/dom/MouseRelatedEvent.cpp b/WebCore/dom/MouseRelatedEvent.cpp
index ce4c175..61c35e8 100644
--- a/WebCore/dom/MouseRelatedEvent.cpp
+++ b/WebCore/dom/MouseRelatedEvent.cpp
@@ -57,7 +57,7 @@ static int contentsX(AbstractView* abstractView)
     FrameView* frameView = frame->view();
     if (!frameView)
         return 0;
-    return frameView->scrollX() / frameView->pageZoomFactor();
+    return frameView->scrollX() / frame->pageZoomFactor();
 }
 
 static int contentsY(AbstractView* abstractView)
@@ -70,7 +70,7 @@ static int contentsY(AbstractView* abstractView)
     FrameView* frameView = frame->view();
     if (!frameView)
         return 0;
-    return frameView->scrollY() / frameView->pageZoomFactor();
+    return frameView->scrollY() / frame->pageZoomFactor();
 }
 
 MouseRelatedEvent::MouseRelatedEvent(const AtomicString& eventType, bool canBubble, bool cancelable, PassRefPtr<AbstractView> viewArg,
@@ -126,10 +126,7 @@ static float pageZoomFactor(UIEvent* event)
     Frame* frame = window->frame();
     if (!frame)
         return 1;
-    FrameView* view = frame->view();
-    if (!view)
-        return 1;
-    return view->pageZoomFactor();
+    return frame->pageZoomFactor();
 }
 
 void MouseRelatedEvent::computePageLocation()
diff --git a/WebCore/dom/Node.cpp b/WebCore/dom/Node.cpp
index 8ff822a..547fd04 100644
--- a/WebCore/dom/Node.cpp
+++ b/WebCore/dom/Node.cpp
@@ -2845,8 +2845,8 @@ bool Node::dispatchMouseEvent(const AtomicString& eventType, int button, int det
 
     int adjustedPageX = pageX;
     int adjustedPageY = pageY;
-    if (FrameView* view = document()->view()) {
-        float pageZoom = view->pageZoomFactor();
+    if (Frame* frame = document()->frame()) {
+        float pageZoom = frame->pageZoomFactor();
         if (pageZoom != 1.0f) {
             // Adjust our pageX and pageY to account for the page zoom.
             adjustedPageX = lroundf(pageX / pageZoom);
@@ -2902,8 +2902,8 @@ void Node::dispatchWheelEvent(PlatformWheelEvent& e)
 
     int adjustedPageX = pos.x();
     int adjustedPageY = pos.y();
-    if (FrameView* view = document()->view()) {
-        float pageZoom = view->pageZoomFactor();
+    if (Frame* frame = document()->frame()) {
+        float pageZoom = frame->pageZoomFactor();
         if (pageZoom != 1.0f) {
             // Adjust our pageX and pageY to account for the page zoom.
             adjustedPageX = lroundf(pos.x() / pageZoom);
diff --git a/WebCore/html/HTMLBodyElement.cpp b/WebCore/html/HTMLBodyElement.cpp
index d808f66..96132f3 100644
--- a/WebCore/html/HTMLBodyElement.cpp
+++ b/WebCore/html/HTMLBodyElement.cpp
@@ -252,9 +252,9 @@ void HTMLBodyElement::setVLink(const String& value)
     setAttribute(vlinkAttr, value);
 }
 
-static int adjustForZoom(int value, FrameView* frameView)
+static int adjustForZoom(int value, Document* document)
 {
-    float zoomFactor = frameView->pageZoomFactor();
+    float zoomFactor = document->frame()->pageZoomFactor();
     if (zoomFactor == 1)
         return value;
     // Needed because of truncation (rather than rounding) when scaling up.
@@ -266,57 +266,63 @@ static int adjustForZoom(int value, FrameView* frameView)
 int HTMLBodyElement::scrollLeft() const
 {
     // Update the document's layout.
-    Document* doc = document();
-    doc->updateLayoutIgnorePendingStylesheets();
-    FrameView* view = doc->view();
-    return view ? adjustForZoom(view->scrollX(), view) : 0;
+    Document* document = this->document();
+    document->updateLayoutIgnorePendingStylesheets();
+    FrameView* view = document->view();
+    return view ? adjustForZoom(view->scrollX(), document) : 0;
 }
 
 void HTMLBodyElement::setScrollLeft(int scrollLeft)
 {
     Document* document = this->document();
     document->updateLayoutIgnorePendingStylesheets();
-    FrameView* view = document->view();
+    Frame* frame = document->frame();
+    if (!frame)
+        return;
+    FrameView* view = frame->view();
     if (!view)
         return;
-    view->setScrollPosition(IntPoint(static_cast<int>(scrollLeft * view->pageZoomFactor()), view->scrollY()));
+    view->setScrollPosition(IntPoint(static_cast<int>(scrollLeft * frame->pageZoomFactor()), view->scrollY()));
 }
 
 int HTMLBodyElement::scrollTop() const
 {
     // Update the document's layout.
-    Document* doc = document();
-    doc->updateLayoutIgnorePendingStylesheets();
-    FrameView* view = doc->view();
-    return view ? adjustForZoom(view->scrollY(), view) : 0;
+    Document* document = this->document();
+    document->updateLayoutIgnorePendingStylesheets();
+    FrameView* view = document->view();
+    return view ? adjustForZoom(view->scrollY(), document) : 0;
 }
 
 void HTMLBodyElement::setScrollTop(int scrollTop)
 {
     Document* document = this->document();
     document->updateLayoutIgnorePendingStylesheets();
-    FrameView* view = document->view();
+    Frame* frame = document->frame();
+    if (!frame)
+        return;
+    FrameView* view = frame->view();
     if (!view)
         return;
-    view->setScrollPosition(IntPoint(view->scrollX(), static_cast<int>(scrollTop * view->pageZoomFactor())));
+    view->setScrollPosition(IntPoint(view->scrollX(), static_cast<int>(scrollTop * frame->pageZoomFactor())));
 }
 
 int HTMLBodyElement::scrollHeight() const
 {
     // Update the document's layout.
-    Document* doc = document();
-    doc->updateLayoutIgnorePendingStylesheets();
-    FrameView* view = doc->view();
-    return view ? adjustForZoom(view->contentsHeight(), view) : 0;    
+    Document* document = this->document();
+    document->updateLayoutIgnorePendingStylesheets();
+    FrameView* view = document->view();
+    return view ? adjustForZoom(view->contentsHeight(), document) : 0;    
 }
 
 int HTMLBodyElement::scrollWidth() const
 {
     // Update the document's layout.
-    Document* doc = document();
-    doc->updateLayoutIgnorePendingStylesheets();
-    FrameView* view = doc->view();
-    return view ? adjustForZoom(view->contentsWidth(), view) : 0;    
+    Document* document = this->document();
+    document->updateLayoutIgnorePendingStylesheets();
+    FrameView* view = document->view();
+    return view ? adjustForZoom(view->contentsWidth(), document) : 0;    
 }
 
 void HTMLBodyElement::addSubresourceAttributeURLs(ListHashSet<KURL>& urls) const
diff --git a/WebCore/html/ImageDocument.cpp b/WebCore/html/ImageDocument.cpp
index 6951b7b..db53837 100644
--- a/WebCore/html/ImageDocument.cpp
+++ b/WebCore/html/ImageDocument.cpp
@@ -117,10 +117,10 @@ inline PassRefPtr<ImageDocumentElement> ImageDocumentElement::create(ImageDocume
 
 // --------
 
-static float pageZoomFactor(Document* document)
+static float pageZoomFactor(const Document* document)
 {
-    FrameView* view = document->view();
-    return view ? view->pageZoomFactor() : 1;
+    Frame* frame = document->frame();
+    return frame ? frame->pageZoomFactor() : 1;
 }
 
 void ImageDocumentParser::appendBytes(DocumentWriter*, const char*, int, bool)
@@ -231,7 +231,7 @@ float ImageDocument::scale() const
     if (!view)
         return 1;
 
-    IntSize imageSize = m_imageElement->cachedImage()->imageSize(view->pageZoomFactor());
+    IntSize imageSize = m_imageElement->cachedImage()->imageSize(pageZoomFactor(this));
     IntSize windowSize = IntSize(view->width(), view->height());
     
     float widthScale = (float)windowSize.width() / imageSize.width();
@@ -319,8 +319,10 @@ bool ImageDocument::imageFitsInWindow() const
         return true;
 
     FrameView* view = frame()->view();
+    if (!view)
+        return true;
 
-    IntSize imageSize = m_imageElement->cachedImage()->imageSize(view->pageZoomFactor());
+    IntSize imageSize = m_imageElement->cachedImage()->imageSize(pageZoomFactor(this));
     IntSize windowSize = IntSize(view->width(), view->height());
     
     return imageSize.width() <= windowSize.width() && imageSize.height() <= windowSize.height();    
diff --git a/WebCore/page/DOMWindow.cpp b/WebCore/page/DOMWindow.cpp
index 15f3ed1..f5ba25c 100644
--- a/WebCore/page/DOMWindow.cpp
+++ b/WebCore/page/DOMWindow.cpp
@@ -1053,7 +1053,7 @@ int DOMWindow::innerHeight() const
     if (!view)
         return 0;
     
-    return static_cast<int>(view->height() / view->pageZoomFactor());
+    return static_cast<int>(view->height() / m_frame->pageZoomFactor());
 }
 
 int DOMWindow::innerWidth() const
@@ -1065,7 +1065,7 @@ int DOMWindow::innerWidth() const
     if (!view)
         return 0;
 
-    return static_cast<int>(view->width() / view->pageZoomFactor());
+    return static_cast<int>(view->width() / m_frame->pageZoomFactor());
 }
 
 int DOMWindow::screenX() const
@@ -1103,7 +1103,7 @@ int DOMWindow::scrollX() const
 
     m_frame->document()->updateLayoutIgnorePendingStylesheets();
 
-    return static_cast<int>(view->scrollX() / view->pageZoomFactor());
+    return static_cast<int>(view->scrollX() / m_frame->pageZoomFactor());
 }
 
 int DOMWindow::scrollY() const
@@ -1117,7 +1117,7 @@ int DOMWindow::scrollY() const
 
     m_frame->document()->updateLayoutIgnorePendingStylesheets();
 
-    return static_cast<int>(view->scrollY() / view->pageZoomFactor());
+    return static_cast<int>(view->scrollY() / m_frame->pageZoomFactor());
 }
 
 bool DOMWindow::closed() const
@@ -1337,8 +1337,8 @@ void DOMWindow::scrollTo(int x, int y) const
     if (!view)
         return;
 
-    int zoomedX = static_cast<int>(x * view->pageZoomFactor());
-    int zoomedY = static_cast<int>(y * view->pageZoomFactor());
+    int zoomedX = static_cast<int>(x * m_frame->pageZoomFactor());
+    int zoomedY = static_cast<int>(y * m_frame->pageZoomFactor());
     view->setScrollPosition(IntPoint(zoomedX, zoomedY));
 }
 
diff --git a/WebCore/page/DragController.cpp b/WebCore/page/DragController.cpp
index 0ba3a70..2e7d241 100644
--- a/WebCore/page/DragController.cpp
+++ b/WebCore/page/DragController.cpp
@@ -270,8 +270,8 @@ static HTMLInputElement* asFileInput(Node* node)
 
 static Element* elementUnderMouse(Document* documentUnderMouse, const IntPoint& p)
 {
-    FrameView* view = documentUnderMouse->view();
-    float zoomFactor = view ? view->pageZoomFactor() : 1;
+    Frame* frame = documentUnderMouse->frame();
+    float zoomFactor = frame ? frame->pageZoomFactor() : 1;
     IntPoint point = roundedIntPoint(FloatPoint(p.x() * zoomFactor, p.y() * zoomFactor));
 
     HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::Active);
diff --git a/WebCore/page/Frame.cpp b/WebCore/page/Frame.cpp
index e14f26c..3e68c52 100755
--- a/WebCore/page/Frame.cpp
+++ b/WebCore/page/Frame.cpp
@@ -129,6 +129,22 @@ static inline Frame* parentFromOwnerElement(HTMLFrameOwnerElement* ownerElement)
     return ownerElement->document()->frame();
 }
 
+static inline float parentPageZoomFactor(Frame* frame)
+{
+    Frame* parent = frame->tree()->parent();
+    if (!parent)
+        return 1;
+    return frame->pageZoomFactor();
+}
+
+static inline float parentTextZoomFactor(Frame* frame)
+{
+    Frame* parent = frame->tree()->parent();
+    if (!parent)
+        return 1;
+    return frame->textZoomFactor();
+}
+
 inline Frame::Frame(Page* page, HTMLFrameOwnerElement* ownerElement, FrameLoaderClient* frameLoaderClient)
     : m_page(page)
     , m_treeNode(this, parentFromOwnerElement(ownerElement))
@@ -141,6 +157,8 @@ inline Frame::Frame(Page* page, HTMLFrameOwnerElement* ownerElement, FrameLoader
     , m_eventHandler(this)
     , m_animationController(this)
     , m_lifeSupportTimer(this, &Frame::lifeSupportTimerFired)
+    , m_pageZoomFactor(parentPageZoomFactor(this))
+    , m_textZoomFactor(parentTextZoomFactor(this))
 #if ENABLE(ORIENTATION_EVENTS)
     , m_orientation(0)
 #endif
@@ -882,4 +900,61 @@ String Frame::layerTreeAsText() const
 #endif
 }
 
+void Frame::setPageZoomFactor(float factor)
+{
+    setPageAndTextZoomFactors(factor, m_textZoomFactor);
+}
+
+void Frame::setTextZoomFactor(float factor)
+{
+    setPageAndTextZoomFactors(m_pageZoomFactor, factor);
+}
+
+void Frame::setPageAndTextZoomFactors(float pageZoomFactor, float textZoomFactor)
+{
+    if (m_pageZoomFactor == pageZoomFactor && m_textZoomFactor == textZoomFactor)
+        return;
+
+    Page* page = this->page();
+    if (!page)
+        return;
+
+    Document* document = this->document();
+    if (!document)
+        return;
+
+#if ENABLE(SVG)
+    // Respect SVGs zoomAndPan="disabled" property in standalone SVG documents.
+    // FIXME: How to handle compound documents + zoomAndPan="disabled"? Needs SVG WG clarification.
+    if (document->isSVGDocument()) {
+        if (!static_cast<SVGDocument*>(document)->zoomAndPanEnabled())
+            return;
+        if (document->renderer())
+            document->renderer()->setNeedsLayout(true);
+    }
+#endif
+
+    if (m_pageZoomFactor != pageZoomFactor) {
+        if (FrameView* view = this->view()) {
+            // Update the scroll position when doing a full page zoom, so the content stays in relatively the same position.
+            IntPoint scrollPosition = view->scrollPosition();
+            float percentDifference = (pageZoomFactor / m_pageZoomFactor);
+            view->setScrollPosition(IntPoint(scrollPosition.x() * percentDifference, scrollPosition.y() * percentDifference));
+        }
+    }
+
+    m_pageZoomFactor = pageZoomFactor;
+    m_textZoomFactor = textZoomFactor;
+
+    document->recalcStyle(Node::Force);
+
+    for (Frame* child = tree()->firstChild(); child; child = child->tree()->nextSibling())
+        child->setPageAndTextZoomFactors(m_pageZoomFactor, m_textZoomFactor);
+
+    if (FrameView* view = this->view()) {
+        if (document->renderer() && document->renderer()->needsLayout() && view->didFirstLayout())
+            view->layout();
+    }
+}
+
 } // namespace WebCore
diff --git a/WebCore/page/Frame.h b/WebCore/page/Frame.h
index c646212..c09c330 100644
--- a/WebCore/page/Frame.h
+++ b/WebCore/page/Frame.h
@@ -138,6 +138,12 @@ namespace WebCore {
 
         void setDocument(PassRefPtr<Document>);
 
+        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);
+
 #if ENABLE(ORIENTATION_EVENTS)
         // Orientation is the interface orientation in degrees. Some examples are:
         //  0 is straight up; -90 is when the device is rotated 90 clockwise;
@@ -206,6 +212,9 @@ namespace WebCore {
 
         Timer<Frame> m_lifeSupportTimer;
 
+        float m_pageZoomFactor;
+        float m_textZoomFactor;
+
 #if ENABLE(ORIENTATION_EVENTS)
         int m_orientation;
 #endif
diff --git a/WebCore/page/FrameView.cpp b/WebCore/page/FrameView.cpp
index 27a7737..d9de614 100644
--- a/WebCore/page/FrameView.cpp
+++ b/WebCore/page/FrameView.cpp
@@ -111,28 +111,6 @@ struct ScheduledEvent : Noncopyable {
     RefPtr<Node> m_eventTarget;
 };
 
-static inline float parentPageZoomFactor(Frame* frame)
-{
-    Frame* parent = frame->tree()->parent();
-    if (!parent)
-        return 1;
-    FrameView* parentView = parent->view();
-    if (!parentView)
-        return 1;
-    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)
     : m_frame(frame)
     , m_canHaveScrollbars(true)
@@ -156,9 +134,6 @@ FrameView::FrameView(Frame* frame)
     , m_deferSetNeedsLayouts(0)
     , m_setNeedsLayoutWasDeferred(false)
     , m_scrollCorner(0)
-    , m_pageZoomFactor(parentPageZoomFactor(frame))
-    , m_textZoomFactor(parentTextZoomFactor(frame))
-
 {
     init();
 }
@@ -2295,64 +2270,6 @@ IntPoint FrameView::convertFromContainingView(const IntPoint& parentPoint) const
     return parentPoint;
 }
 
-void FrameView::setPageZoomFactor(float factor)
-{
-    setPageAndTextZoomFactors(factor, m_textZoomFactor);
-}
-
-void FrameView::setTextZoomFactor(float factor)
-{
-    setPageAndTextZoomFactors(m_pageZoomFactor, factor);
-}
-
-void FrameView::setPageAndTextZoomFactors(float pageZoomFactor, float textZoomFactor)
-{
-    if (m_pageZoomFactor == pageZoomFactor && m_textZoomFactor == textZoomFactor)
-        return;
-
-    if (!m_frame)
-        return;
-
-    Page* page = m_frame->page();
-    if (!page)
-        return;
-
-    Document* document = m_frame->document();
-    if (!document)
-        return;
-
-#if ENABLE(SVG)
-    // Respect SVGs zoomAndPan="disabled" property in standalone SVG documents.
-    // FIXME: How to handle compound documents + zoomAndPan="disabled"? Needs SVG WG clarification.
-    if (document->isSVGDocument()) {
-        if (!static_cast<SVGDocument*>(document)->zoomAndPanEnabled())
-            return;
-        if (document->renderer())
-            document->renderer()->setNeedsLayout(true);
-    }
-#endif
-
-    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 = (pageZoomFactor / m_pageZoomFactor);
-        setScrollPosition(IntPoint(scrollPosition.x() * percentDifference, scrollPosition.y() * percentDifference));
-    }
-
-    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->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 b0b2d18..96b6209 100644
--- a/WebCore/page/FrameView.h
+++ b/WebCore/page/FrameView.h
@@ -217,12 +217,6 @@ public:
     bool isFrameViewScrollCorner(RenderScrollbarPart* scrollCorner) const { return m_scrollCorner == scrollCorner; }
     void invalidateScrollCorner();
 
-    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);
     // Negative value would mean that first few repaints happen without a delay
@@ -373,9 +367,6 @@ private:
     // Renderer to hold our custom scroll corner.
     RenderScrollbarPart* m_scrollCorner;
 
-    float m_pageZoomFactor;
-    float m_textZoomFactor;
-
     static double s_deferredRepaintDelay;
     static double s_initialDeferredRepaintDelayDuringLoading;
     static double s_maxDeferredRepaintDelayDuringLoading;
diff --git a/WebCore/rendering/RenderView.cpp b/WebCore/rendering/RenderView.cpp
index 35d776d..d52d549 100644
--- a/WebCore/rendering/RenderView.cpp
+++ b/WebCore/rendering/RenderView.cpp
@@ -664,7 +664,8 @@ int RenderView::viewWidth() const
 
 float RenderView::zoomFactor() const
 {
-    return m_frameView->pageZoomFactor();
+    Frame* frame = m_frameView->frame();
+    return frame ? frame->pageZoomFactor() : 1;
 }
 
 // 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 f05147b..a461ec4 100644
--- a/WebCore/svg/SVGSVGElement.cpp
+++ b/WebCore/svg/SVGSVGElement.cpp
@@ -193,18 +193,18 @@ SVGViewSpec* SVGSVGElement::currentView() const
 float SVGSVGElement::currentScale() const
 {
     // Only the page zoom factor is relevant for SVG
-    if (FrameView* view = document()->view())
-        return view->pageZoomFactor();
+    if (Frame* frame = document()->frame())
+        return frame->pageZoomFactor();
     return m_scale;
 }
 
 void SVGSVGElement::setCurrentScale(float scale)
 {
-    if (FrameView* view = document()->view()) {
+    if (Frame* frame = document()->frame()) {
         // 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->setPageZoomFactor(scale);
+            frame->setPageZoomFactor(scale);
         return;
     }
 
diff --git a/WebKit/chromium/ChangeLog b/WebKit/chromium/ChangeLog
index f5b9aa1..e2aaac8 100644
--- a/WebKit/chromium/ChangeLog
+++ b/WebKit/chromium/ChangeLog
@@ -1,3 +1,16 @@
+2010-09-17  Darin Adler  <darin at apple.com>
+
+        Reviewed by Sam Weinig.
+
+        REGRESSION (r60104): Zoom level is unexpectedly reset on page reload
+        https://bugs.webkit.org/show_bug.cgi?id=42863
+
+        * src/FrameLoaderClientImpl.cpp:
+        (WebKit::FrameLoaderClientImpl::createPlugin):
+        * src/WebViewImpl.cpp:
+        (WebKit::WebViewImpl::setZoomLevel):
+        Call functions on Frame instead of FrameView.
+
 2010-09-17  Kenneth Russell  <kbr at google.com>
 
         Reviewed by James Robinson.
diff --git a/WebKit/chromium/src/FrameLoaderClientImpl.cpp b/WebKit/chromium/src/FrameLoaderClientImpl.cpp
index 652b085..68c0178 100644
--- a/WebKit/chromium/src/FrameLoaderClientImpl.cpp
+++ b/WebKit/chromium/src/FrameLoaderClientImpl.cpp
@@ -1412,7 +1412,7 @@ PassRefPtr<Widget> FrameLoaderClientImpl::createPlugin(
         return 0;
 
     bool zoomTextOnly = m_webFrame->viewImpl()->zoomTextOnly();
-    float zoomFactor = zoomTextOnly ? m_webFrame->frame()->view()->textZoomFactor() : m_webFrame->frame()->view()->pageZoomFactor();
+    float zoomFactor = zoomTextOnly ? m_webFrame->frame()->textZoomFactor() : m_webFrame->frame()->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.
diff --git a/WebKit/chromium/src/WebViewImpl.cpp b/WebKit/chromium/src/WebViewImpl.cpp
index 8289805..a7bead4 100644
--- a/WebKit/chromium/src/WebViewImpl.cpp
+++ b/WebKit/chromium/src/WebViewImpl.cpp
@@ -1540,16 +1540,13 @@ int WebViewImpl::setZoomLevel(bool textOnly, int zoomLevel)
                           maxTextSizeMultiplier),
                  minTextSizeMultiplier));
     Frame* frame = mainFrameImpl()->frame();
-    FrameView* view = frame->view();
-    if (!view)
-        return m_zoomLevel;
 
-    float oldZoomFactor = m_zoomTextOnly ? view->textZoomFactor() : view->pageZoomFactor();
+    float oldZoomFactor = m_zoomTextOnly ? frame->textZoomFactor() : frame->pageZoomFactor();
 
     if (textOnly)
-        view->setPageAndTextZoomFactors(1, zoomFactor);
+        frame->setPageAndTextZoomFactors(1, zoomFactor);
     else
-        view->setPageAndTextZoomFactors(zoomFactor, 1);
+        frame->setPageAndTextZoomFactors(zoomFactor, 1);
 
     if (oldZoomFactor != zoomFactor || textOnly != m_zoomTextOnly) {
         WebPluginContainerImpl* pluginContainer = WebFrameImpl::pluginContainerFromFrame(frame);
diff --git a/WebKit/efl/ChangeLog b/WebKit/efl/ChangeLog
index 0572c7a..879a1af 100644
--- a/WebKit/efl/ChangeLog
+++ b/WebKit/efl/ChangeLog
@@ -1,3 +1,16 @@
+2010-09-17  Darin Adler  <darin at apple.com>
+
+        Reviewed by Sam Weinig.
+
+        REGRESSION (r60104): Zoom level is unexpectedly reset on page reload
+        https://bugs.webkit.org/show_bug.cgi?id=42863
+
+        * ewk/ewk_frame.cpp:
+        (ewk_frame_zoom_get):
+        (ewk_frame_zoom_set):
+        (ewk_frame_zoom_text_only_set):
+        Call functions on Frame instead of FrameView.
+
 2010-09-16  Darin Adler  <darin at apple.com>
 
         Fix build.
diff --git a/WebKit/efl/ewk/ewk_frame.cpp b/WebKit/efl/ewk/ewk_frame.cpp
index 313ed00..038e105 100644
--- a/WebKit/efl/ewk/ewk_frame.cpp
+++ b/WebKit/efl/ewk/ewk_frame.cpp
@@ -1020,13 +1020,10 @@ float ewk_frame_zoom_get(const Evas_Object* o)
 {
     EWK_FRAME_SD_GET_OR_RETURN(o, sd, -1.0);
     EINA_SAFETY_ON_NULL_RETURN_VAL(sd->frame, -1.0);
-    WebCore::FrameView* view = sd->frame->view();
-    if (!view)
-        return -1;
 
     if (sd->textZoom)
-        return view->textZoomFactor();
-    return view->pageZoomFactor();
+        return sd->frame->textZoomFactor();
+    return sd->frame->pageZoomFactor();
 }
 
 /**
@@ -1043,13 +1040,10 @@ Eina_Bool ewk_frame_zoom_set(Evas_Object* o, float zoom)
 {
     EWK_FRAME_SD_GET_OR_RETURN(o, sd, EINA_FALSE);
     EINA_SAFETY_ON_NULL_RETURN_VAL(sd->frame, EINA_FALSE);
-    WebCore::FrameView* view = sd->frame->view();
-    if (!view)
-        return EINA_FALSE;
     if (sd->textZoom)
-        view->setTextZoomFactor(zoom);
+        sd->frame->setTextZoomFactor(zoom);
     else
-        view->setPageZoomFactor(zoom);
+        sd->frame->setPageZoomFactor(zoom);
     return EINA_TRUE;
 }
 
@@ -1081,16 +1075,12 @@ Eina_Bool ewk_frame_zoom_text_only_set(Evas_Object* o, Eina_Bool setting)
     if (sd->textZoom == setting)
         return EINA_TRUE;
 
-    WebCore::FrameView* view = sd->frame->view();
-    if (!view)
-        return EINA_FALSE;
-
-    float zoom_level = sd->textZoom ? view->textZoomFactor() : view->pageZoomFactor();
+    float zoom_level = sd->textZoom ? sd->frame->textZoomFactor() : sd->frame->pageZoomFactor();
     sd->textZoom = setting;
     if (sd->textZoom)
-        view->setPageAndTextZoomFactors(1, zoom_level);
+        sd->frame->setPageAndTextZoomFactors(1, zoom_level);
     else
-        view->setPageAndTextZoomFactors(zoom_level, 1);
+        sd->frame->setPageAndTextZoomFactors(zoom_level, 1);
     return EINA_TRUE;
 }
 
diff --git a/WebKit/gtk/ChangeLog b/WebKit/gtk/ChangeLog
index 5383fd4..16f4063 100644
--- a/WebKit/gtk/ChangeLog
+++ b/WebKit/gtk/ChangeLog
@@ -1,3 +1,16 @@
+2010-09-17  Darin Adler  <darin at apple.com>
+
+        Reviewed by Sam Weinig.
+
+        REGRESSION (r60104): Zoom level is unexpectedly reset on page reload
+        https://bugs.webkit.org/show_bug.cgi?id=42863
+
+        * webkit/webkitwebview.cpp:
+        (webkit_web_view_get_zoom_level):
+        (webkit_web_view_apply_zoom_level):
+        (webkit_web_view_set_full_content_zoom):
+        Call functions on Frame instead of FrameView.
+
 2010-09-16  Martin Robinson  <mrobinson at igalia.com>
 
         Reviewed by Xan Lopez.
diff --git a/WebKit/gtk/webkit/webkitwebview.cpp b/WebKit/gtk/webkit/webkitwebview.cpp
index 87df72b..3212450 100644
--- a/WebKit/gtk/webkit/webkitwebview.cpp
+++ b/WebKit/gtk/webkit/webkitwebview.cpp
@@ -4006,12 +4006,8 @@ gfloat webkit_web_view_get_zoom_level(WebKitWebView* webView)
     if (!frame)
         return 1.0f;
 
-    FrameView* view = frame->view();
-    if (!view)
-        return 1;
-
     WebKitWebViewPrivate* priv = webView->priv;
-    return priv->zoomFullContent ? view->pageZoomFactor() : view->textZoomFactor();
+    return priv->zoomFullContent ? frame->pageZoomFactor() : frame->textZoomFactor();
 }
 
 static void webkit_web_view_apply_zoom_level(WebKitWebView* webView, gfloat zoomLevel)
@@ -4020,15 +4016,11 @@ static void webkit_web_view_apply_zoom_level(WebKitWebView* webView, gfloat zoom
     if (!frame)
         return;
 
-    FrameView* view = frame->view();
-    if (!view)
-        return;
-
     WebKitWebViewPrivate* priv = webView->priv;
     if (priv->zoomFullContent)
-        view->setPageZoomFactor(zoomLevel);
+        frame->setPageZoomFactor(zoomLevel);
     else
-        view->setTextZoomFactor(zoomLevel);        
+        frame->setTextZoomFactor(zoomLevel);        
 }
 
 /**
@@ -4135,17 +4127,13 @@ void webkit_web_view_set_full_content_zoom(WebKitWebView* webView, gboolean zoom
     if (!frame)
       return;
 
-    FrameView* view = frame->view();
-    if (!view)
-      return;
-
-    gfloat zoomLevel = priv->zoomFullContent ? view->pageZoomFactor() : view->textZoomFactor();
+    gfloat zoomLevel = priv->zoomFullContent ? frame->pageZoomFactor() : frame->textZoomFactor();
 
     priv->zoomFullContent = zoomFullContent;
     if (priv->zoomFullContent)
-        view->setPageAndTextZoomFactors(zoomLevel, 1);
+        frame->setPageAndTextZoomFactors(zoomLevel, 1);
     else
-        view->setPageAndTextZoomFactors(1, zoomLevel);
+        frame->setPageAndTextZoomFactors(1, zoomLevel);
 
     g_object_notify(G_OBJECT(webView), "full-content-zoom");
 }
diff --git a/WebKit/mac/ChangeLog b/WebKit/mac/ChangeLog
index aca0cf9..4fbe201 100644
--- a/WebKit/mac/ChangeLog
+++ b/WebKit/mac/ChangeLog
@@ -1,3 +1,14 @@
+2010-09-17  Darin Adler  <darin at apple.com>
+
+        Reviewed by Sam Weinig.
+
+        REGRESSION (r60104): Zoom level is unexpectedly reset on page reload
+        https://bugs.webkit.org/show_bug.cgi?id=42863
+
+        * WebView/WebView.mm:
+        (-[WebView _setZoomMultiplier:isTextOnly:]):
+        Call functions on Frame instead of FrameView.
+
 2010-09-17  Matthew Delaney  <mdelaney at apple.com>
 
         Reviewed by Simon Fraser.
diff --git a/WebKit/mac/WebView/WebView.mm b/WebKit/mac/WebView/WebView.mm
index 3348f3e..e022eb5 100644
--- a/WebKit/mac/WebView/WebView.mm
+++ b/WebKit/mac/WebView/WebView.mm
@@ -3320,16 +3320,14 @@ static bool needsWebViewInitThreadWorkaround()
     _private->zoomMultiplier = multiplier;
     _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.
+    // FIXME: It might be nice to rework this code so that _private->zoomMultiplier doesn't exist
+    // and instead the zoom factors stored in Frame are used.
     Frame* coreFrame = [self _mainCoreFrame];
     if (coreFrame) {
-        if (FrameView* view = coreFrame->view()) {
-            if (_private->zoomsTextOnly)
-                view->setPageAndTextZoomFactors(1, multiplier);
-            else
-                view->setPageAndTextZoomFactors(multiplier, 1);
-        }
+        if (_private->zoomsTextOnly)
+            coreFrame->setPageAndTextZoomFactors(1, multiplier);
+        else
+            coreFrame->setPageAndTextZoomFactors(multiplier, 1);
     }
 }
 
diff --git a/WebKit/qt/Api/qwebframe.cpp b/WebKit/qt/Api/qwebframe.cpp
index be600bd..46580bb 100644
--- a/WebKit/qt/Api/qwebframe.cpp
+++ b/WebKit/qt/Api/qwebframe.cpp
@@ -1132,13 +1132,9 @@ void QWebFrame::render(QPainter* painter)
 */
 void QWebFrame::setTextSizeMultiplier(qreal factor)
 {
-    FrameView* view = d->frame->view();
-    if (!view)
-        return;
-
     page()->settings()->setAttribute(QWebSettings::ZoomTextOnly, true);
 
-    view->setPageAndTextZoomFactors(1, factor);
+    d->frame->setPageAndTextZoomFactors(1, factor);
 }
 
 /*!
@@ -1146,11 +1142,7 @@ void QWebFrame::setTextSizeMultiplier(qreal factor)
 */
 qreal QWebFrame::textSizeMultiplier() const
 {
-    FrameView* view = d->frame->view();
-    if (!view)
-        return 1;
-
-    return d->zoomTextOnly ? view->textZoomFactor() : view->pageZoomFactor();
+    return d->zoomTextOnly ? d->frame->textZoomFactor() : d->frame->pageZoomFactor();
 }
 
 /*!
@@ -1161,27 +1153,15 @@ qreal QWebFrame::textSizeMultiplier() const
 
 void QWebFrame::setZoomFactor(qreal factor)
 {
-    Page* page = d->frame->page();
-    if (!page)
-        return;
-
-    FrameView* view = d->frame->view();
-    if (!view)
-        return;
-
     if (d->zoomTextOnly)
-        view->setTextZoomFactor(factor);
+        d->frame->setTextZoomFactor(factor);
     else
-        view->setPageZoomFactor(factor);
+        d->frame->setPageZoomFactor(factor);
 }
 
 qreal QWebFrame::zoomFactor() const
 {
-    FrameView* view = d->frame->view();
-    if (!view)
-        return 1;
-
-    return d->zoomTextOnly ? view->textZoomFactor() : view->pageZoomFactor();
+    return d->zoomTextOnly ? d->frame->textZoomFactor() : d->frame->pageZoomFactor();
 }
 
 /*!
diff --git a/WebKit/qt/ChangeLog b/WebKit/qt/ChangeLog
index 59cb3e0..fbcc7a9 100644
--- a/WebKit/qt/ChangeLog
+++ b/WebKit/qt/ChangeLog
@@ -1,3 +1,17 @@
+2010-09-17  Darin Adler  <darin at apple.com>
+
+        Reviewed by Sam Weinig.
+
+        REGRESSION (r60104): Zoom level is unexpectedly reset on page reload
+        https://bugs.webkit.org/show_bug.cgi?id=42863
+
+        * Api/qwebframe.cpp:
+        (QWebFrame::setTextSizeMultiplier):
+        (QWebFrame::textSizeMultiplier):
+        (QWebFrame::setZoomFactor):
+        (QWebFrame::zoomFactor):
+        Call functions on Frame instead of FrameView.
+
 2010-09-16  Darin Adler  <darin at apple.com>
 
         Fix build.
diff --git a/WebKit/win/ChangeLog b/WebKit/win/ChangeLog
index ef708e0..251bf91 100644
--- a/WebKit/win/ChangeLog
+++ b/WebKit/win/ChangeLog
@@ -1,3 +1,14 @@
+2010-09-17  Darin Adler  <darin at apple.com>
+
+        Reviewed by Sam Weinig.
+
+        REGRESSION (r60104): Zoom level is unexpectedly reset on page reload
+        https://bugs.webkit.org/show_bug.cgi?id=42863
+
+        * WebView.cpp:
+        (WebView::setZoomMultiplier):
+        Call functions on Frame instead of FrameView.
+
 2010-09-17  Matthew Delaney  <mdelaney at apple.com>
 
         Reviewed by Simon Fraser.
diff --git a/WebKit/win/WebView.cpp b/WebKit/win/WebView.cpp
index f06da33..04794c9 100755
--- a/WebKit/win/WebView.cpp
+++ b/WebKit/win/WebView.cpp
@@ -2936,12 +2936,10 @@ void WebView::setZoomMultiplier(float multiplier, bool isTextOnly)
     m_zoomsTextOnly = isTextOnly;
 
     if (Frame* coreFrame = core(m_mainFrame)) {
-        if (FrameView* view = coreFrame->view()) {
-            if (m_zoomsTextOnly)
-                view->setPageAndTextZoomFactors(1, multiplier);
-            else
-                view->setPageAndTextZoomFactors(multiplier, 1);
-        }
+        if (m_zoomsTextOnly)
+            coreFrame->setPageAndTextZoomFactors(1, multiplier);
+        else
+            coreFrame->setPageAndTextZoomFactors(multiplier, 1);
     }
 }
 
diff --git a/WebKit/wx/ChangeLog b/WebKit/wx/ChangeLog
index c764c5f..7aedbac 100644
--- a/WebKit/wx/ChangeLog
+++ b/WebKit/wx/ChangeLog
@@ -1,3 +1,16 @@
+2010-09-17  Darin Adler  <darin at apple.com>
+
+        Reviewed by Sam Weinig.
+
+        REGRESSION (r60104): Zoom level is unexpectedly reset on page reload
+        https://bugs.webkit.org/show_bug.cgi?id=42863
+
+        * WebFrame.cpp:
+        (wxWebFrame::IncreaseTextSize):
+        (wxWebFrame::DecreaseTextSize):
+        (wxWebFrame::ResetTextSize):
+        Call functions on Frame instead of FrameView.
+
 2010-09-14  Kevin Ollivier  <kevino at theolliviers.com>
 
         [wx] Build fix after FrameNetworkingContext changes and setZoomLevel changes.
diff --git a/WebKit/wx/WebFrame.cpp b/WebKit/wx/WebFrame.cpp
index f0d68a7..1c2eebd 100644
--- a/WebKit/wx/WebFrame.cpp
+++ b/WebKit/wx/WebFrame.cpp
@@ -373,7 +373,7 @@ void wxWebFrame::IncreaseTextSize()
 {
     if (CanIncreaseTextSize()) {
         m_textMagnifier = m_textMagnifier*TextSizeMultiplierRatio;
-        m_impl->frame->view()->setTextZoomFactor(m_textMagnifier);
+        m_impl->frame->setTextZoomFactor(m_textMagnifier);
     }
 }
 
@@ -390,15 +390,15 @@ void wxWebFrame::DecreaseTextSize()
 {        
     if (CanDecreaseTextSize()) {
         m_textMagnifier = m_textMagnifier/TextSizeMultiplierRatio;
-        m_impl->frame->view()->setTextZoomFactor(m_textMagnifier);
+        m_impl->frame->setTextZoomFactor(m_textMagnifier);
     }
 }
 
 void wxWebFrame::ResetTextSize()
 {
     m_textMagnifier = 1.0;
-    if (m_impl->frame && m_impl->frame->view())
-        m_impl->frame->view()->setTextZoomFactor(m_textMagnifier);
+    if (m_impl->frame)
+        m_impl->frame->setTextZoomFactor(m_textMagnifier);
 }
 
 void wxWebFrame::MakeEditable(bool enable)
diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index 151be23..c16926f 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,3 +1,18 @@
+2010-09-17  Darin Adler  <darin at apple.com>
+
+        Reviewed by Sam Weinig.
+
+        REGRESSION (r60104): Zoom level is unexpectedly reset on page reload
+        https://bugs.webkit.org/show_bug.cgi?id=42863
+
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::textZoomFactor):
+        (WebKit::WebPage::setTextZoomFactor):
+        (WebKit::WebPage::pageZoomFactor):
+        (WebKit::WebPage::setPageZoomFactor):
+        (WebKit::WebPage::setPageAndTextZoomFactors):
+        Call functions on Frame instead of FrameView.
+
 2010-09-17  Sam Weinig  <sam at webkit.org>
 
         Reviewed by Anders Carlsson.
diff --git a/WebKit2/WebProcess/WebPage/WebPage.cpp b/WebKit2/WebProcess/WebPage/WebPage.cpp
index 30f869f..7a4ac4f 100644
--- a/WebKit2/WebProcess/WebPage/WebPage.cpp
+++ b/WebKit2/WebProcess/WebPage/WebPage.cpp
@@ -305,46 +305,42 @@ void WebPage::drawRect(GraphicsContext& graphicsContext, const IntRect& rect)
 
 double WebPage::textZoomFactor() const
 {
-    if (Frame* coreFrame = m_mainFrame->coreFrame()) {
-        if (FrameView* view = coreFrame->view())
-            return view->textZoomFactor();
-    }
-    
-    return 1;
+    Frame* frame = m_mainFrame->coreFrame();
+    if (!frame)
+        return 1;
+    return frame->textZoomFactor();
 }
 
 void WebPage::setTextZoomFactor(double zoomFactor)
 {
-    if (Frame* coreFrame = m_mainFrame->coreFrame()) {
-        if (FrameView* view = coreFrame->view())
-            return view->setTextZoomFactor(static_cast<float>(zoomFactor));
-    }
+    Frame* frame = m_mainFrame->coreFrame();
+    if (!frame)
+        return;
+    frame->setTextZoomFactor(static_cast<float>(zoomFactor));
 }
 
 double WebPage::pageZoomFactor() const
 {
-    if (Frame* coreFrame = m_mainFrame->coreFrame()) {
-        if (FrameView* view = coreFrame->view())
-            return view->pageZoomFactor();
-    }
-    
-    return 1;
+    Frame* frame = m_mainFrame->coreFrame();
+    if (!frame)
+        return 1;
+    return frame->pageZoomFactor();
 }
 
 void WebPage::setPageZoomFactor(double zoomFactor)
 {
-    if (Frame* coreFrame = m_mainFrame->coreFrame()) {
-        if (FrameView* view = coreFrame->view())
-            return view->setPageZoomFactor(static_cast<float>(zoomFactor));
-    }
+    Frame* frame = m_mainFrame->coreFrame();
+    if (!frame)
+        return;
+    frame->setPageZoomFactor(static_cast<float>(zoomFactor));
 }
 
 void WebPage::setPageAndTextZoomFactors(double pageZoomFactor, double textZoomFactor)
 {
-    if (Frame* coreFrame = m_mainFrame->coreFrame()) {
-        if (FrameView* view = coreFrame->view())
-            return view->setPageAndTextZoomFactors(static_cast<float>(pageZoomFactor), static_cast<float>(textZoomFactor));
-    }
+    Frame* frame = m_mainFrame->coreFrame();
+    if (!frame)
+        return;
+    return frame->setPageAndTextZoomFactors(static_cast<float>(pageZoomFactor), static_cast<float>(textZoomFactor));
 }
 
 // Events 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list