[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