WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
patch
bug103090 (text/plain), 5.14 KB, created by
Mikhail Pozdnyakov
on 2012-11-22 14:13:40 PST
(
hide
)
Description:
patch
Filename:
MIME Type:
Creator:
Mikhail Pozdnyakov
Created:
2012-11-22 14:13:40 PST
Size:
5.14 KB
patch
obsolete
>commit 3092f4585808f6adff20b1df092334ebd46eb02f >Author: Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> >Date: Fri Nov 23 00:09:17 2012 +0200 > > bug103090 > >diff --git a/Source/WebKit2/ChangeLog b/Source/WebKit2/ChangeLog >index dda5c09..2cc6ec0 100644 >--- a/Source/WebKit2/ChangeLog >+++ b/Source/WebKit2/ChangeLog >@@ -1,3 +1,27 @@ >+2012-11-22 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> >+ >+ [WK2] TiledBackingStore: page contents is scaled wrongly >+ https://bugs.webkit.org/show_bug.cgi?id=103090 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Before this change the page contents scaling in PageViewportController was defined all the times >+ by m_rawAttributes.initialScale. If initial scale had not been specified in the viewport meta tag >+ it was set to m_minimumScaleToFit inside PageViewportController::didChangeViewportAttributes(). >+ The problem was that m_minimumScaleToFit could have wrong value as contents size might have not be updated >+ at the time PageViewportController::didChangeViewportAttributes() was invoked. >+ The solution is to use m_minimumScaleToFit for contents scaling if initial scale is not specified in the viewport meta tag, >+ as it is updated all the time. Also a flag m_initiallyFitToViewport is added to PageViewportController >+ to detect whether m_minimumScaleToFit should be used for scaling. >+ >+ * UIProcess/PageViewportController.cpp: >+ (WebKit::PageViewportController::PageViewportController): >+ (WebKit::PageViewportController::didChangeContentsSize): >+ (WebKit::PageViewportController::pageTransitionViewportReady): >+ (WebKit::PageViewportController::didChangeViewportAttributes): >+ * UIProcess/PageViewportController.h: >+ (PageViewportController): >+ > 2012-11-22 Simon Hausmann <simon.hausmann@digia.com>, Pierre Rossi <pierre.rossi@digia.com> > > [Qt] Separate QWidget dependant code into separate WebKitWidgets static library >diff --git a/Source/WebKit2/UIProcess/PageViewportController.cpp b/Source/WebKit2/UIProcess/PageViewportController.cpp >index 5de7919..401a319 100644 >--- a/Source/WebKit2/UIProcess/PageViewportController.cpp >+++ b/Source/WebKit2/UIProcess/PageViewportController.cpp >@@ -44,6 +44,7 @@ PageViewportController::PageViewportController(WebKit::WebPageProxy* proxy, Page > , m_client(client) > , m_allowsUserScaling(false) > , m_minimumScaleToFit(1) >+ , m_initiallyFitToViewport(true) > , m_hasSuspendedContent(false) > , m_hadUserInteraction(false) > , m_effectiveScale(1) >@@ -107,9 +108,19 @@ void PageViewportController::didCommitLoad() > } > > void PageViewportController::didChangeContentsSize(const IntSize& newSize) >-{ >+{ > m_contentsSize = newSize; >- if (updateMinimumScaleToFit()) >+ >+ bool minimumScaleUpdated = updateMinimumScaleToFit(); >+ >+ if (m_initiallyFitToViewport) { >+ // Restrict scale factors to m_minimumScaleToFit. >+ ASSERT(m_minimumScaleToFit > 0); >+ m_rawAttributes.initialScale = m_minimumScaleToFit; >+ WebCore::restrictScaleFactorToInitialScaleIfNotUserScalable(m_rawAttributes); >+ } >+ >+ if (minimumScaleUpdated) > m_client->didChangeViewportAttributes(); > } > >@@ -149,8 +160,8 @@ void PageViewportController::pageTransitionViewportReady() > { > if (!m_rawAttributes.layoutSize.isEmpty()) { > m_hadUserInteraction = false; >- ASSERT(m_rawAttributes.initialScale > 0); >- applyScaleAfterRenderingContents(innerBoundedViewportScale(toViewportScale(m_rawAttributes.initialScale))); >+ float initialScale = m_initiallyFitToViewport ? m_minimumScaleToFit : m_rawAttributes.initialScale; >+ applyScaleAfterRenderingContents(innerBoundedViewportScale(toViewportScale(initialScale))); > } > > // At this point we should already have received the first viewport arguments and the requested scroll >@@ -218,18 +229,12 @@ void PageViewportController::didChangeViewportAttributes(const WebCore::Viewport > > m_rawAttributes = newAttributes; > m_allowsUserScaling = !!m_rawAttributes.userScalable; >+ m_initiallyFitToViewport = (m_rawAttributes.initialScale < 0); > >- bool minimumScaleUpdated = updateMinimumScaleToFit(); >- >- ASSERT(m_minimumScaleToFit > 0); >- >- // Set the initial scale if it was not specified in the viewport meta tag. >- if (m_rawAttributes.initialScale < 0) >- m_rawAttributes.initialScale = m_minimumScaleToFit; >- >- WebCore::restrictScaleFactorToInitialScaleIfNotUserScalable(m_rawAttributes); >+ if (!m_initiallyFitToViewport) >+ WebCore::restrictScaleFactorToInitialScaleIfNotUserScalable(m_rawAttributes); > >- if (minimumScaleUpdated) >+ if (updateMinimumScaleToFit()) > m_client->didChangeViewportAttributes(); > } > >diff --git a/Source/WebKit2/UIProcess/PageViewportController.h b/Source/WebKit2/UIProcess/PageViewportController.h >index 3be3d27..052e89a 100644 >--- a/Source/WebKit2/UIProcess/PageViewportController.h >+++ b/Source/WebKit2/UIProcess/PageViewportController.h >@@ -94,6 +94,7 @@ private: > > bool m_allowsUserScaling; > float m_minimumScaleToFit; >+ bool m_initiallyFitToViewport; > > bool m_hasSuspendedContent; > bool m_hadUserInteraction;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
kenneth
:
review-
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 103090
:
175710
|
175881