WebKit Bugzilla
Attachment 348329 Details for
Bug 188772
: Allow override of viewport configuration
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-188772-20180828132017.patch (text/plain), 9.51 KB, created by
James Savage
on 2018-08-28 13:20:18 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
James Savage
Created:
2018-08-28 13:20:18 PDT
Size:
9.51 KB
patch
obsolete
>Subversion Revision: 235428 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 7b07e5a104fb2ef78c8d83385f7bd2c70da98472..de9e4aa803182b64381dc80031d8a0b7f98c7717 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,15 @@ >+2018-08-20 James Savage <james.savage@apple.com> >+ >+ Allow override of viewport configuration. >+ https://bugs.webkit.org/show_bug.cgi?id=188772. >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * page/Settings.yaml: >+ * page/ViewportConfiguration.cpp: >+ (WebCore::ViewportConfiguration::nativeWebpageParameters): >+ * page/ViewportConfiguration.h: >+ > 2018-08-28 Ali Juma <ajuma@chromium.org> > > [IntersectionObserver] Fix build after r235424 >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 6694ed1bf6797ae0afc3814c83b20b2f7bf93b6c..74bb3599e1ef0f221fd1991ab84d54d3b1369d47 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,24 @@ >+2018-08-20 James Savage <james.savage@apple.com> >+ >+ Allow override of viewport configuration. >+ https://bugs.webkit.org/show_bug.cgi?id=188772. >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * Shared/WebPreferences.yaml: >+ * UIProcess/API/Cocoa/WKPreferences.mm: >+ (-[WKPreferences _setShouldIgnoreMetaViewport:]): >+ (-[WKPreferences _shouldIgnoreMetaViewport]): >+ * UIProcess/API/Cocoa/WKPreferencesPrivate.h: >+ * WebProcess/WebPage/WebPage.cpp: >+ (WebKit::WebPage::viewportPropertiesDidChange): If we are ignoring the >+ <meta> viewport, short circuit calling setViewportArguments() and do not >+ do any updates. >+ (WebKit::WebPage::didCommitLoad): Ditto. >+ * WebProcess/WebPage/ios/WebPageIOS.mm: >+ (WebKit::WebPage::resetViewportDefaultConfiguration): Select the default >+ configuration based on UIProcess setting. >+ > 2018-08-28 Aditya Keerthi <akeerthi@apple.com> > > [Datalist] Pressing enter without a selected option shouldn't change the input >diff --git a/Source/WebCore/page/Settings.yaml b/Source/WebCore/page/Settings.yaml >index 2122e909135c2b1f7fe84d6a2d089bd72a7a044a..7b13fc41157f185f32aa1e752c5c15e75603baac 100644 >--- a/Source/WebCore/page/Settings.yaml >+++ b/Source/WebCore/page/Settings.yaml >@@ -760,3 +760,6 @@ incompleteImageBorderEnabled: > > shouldDeferAsynchronousScriptsUntilAfterDocumentLoad: > initial: false >+ >+shouldIgnoreMetaViewport: >+ initial: false >diff --git a/Source/WebCore/page/ViewportConfiguration.cpp b/Source/WebCore/page/ViewportConfiguration.cpp >index 1c4502adbe79820f4b6278392938ae3c4c04cd90..c033571c62997d3ee55b46eca2ebe8bdadf6faca 100644 >--- a/Source/WebCore/page/ViewportConfiguration.cpp >+++ b/Source/WebCore/page/ViewportConfiguration.cpp >@@ -289,6 +289,20 @@ bool ViewportConfiguration::allowsUserScalingIgnoringAlwaysScalable() const > return shouldIgnoreScalingConstraints() || m_configuration.allowsUserScaling; > } > >+ViewportConfiguration::Parameters ViewportConfiguration::nativeWebpageParameters() >+{ >+ Parameters parameters; >+ parameters.width = ViewportArguments::ValueDeviceWidth; >+ parameters.widthIsSet = true; >+ parameters.allowsUserScaling = true; >+ parameters.allowsShrinkToFit = false; >+ parameters.minimumScale = 1; >+ parameters.maximumScale = 5; >+ parameters.initialScale = 1; >+ parameters.initialScaleIsSet = true; >+ return parameters; >+} >+ > ViewportConfiguration::Parameters ViewportConfiguration::webpageParameters() > { > Parameters parameters; >diff --git a/Source/WebCore/page/ViewportConfiguration.h b/Source/WebCore/page/ViewportConfiguration.h >index 266dbd7537509127a5932b0d27dd5cc79202450e..3fa6cdb780f6670b9918d6981314720d9de29ceb 100644 >--- a/Source/WebCore/page/ViewportConfiguration.h >+++ b/Source/WebCore/page/ViewportConfiguration.h >@@ -101,6 +101,8 @@ public: > bool allowsShrinkToFit() const; > bool avoidsUnsafeArea() const { return m_configuration.avoidsUnsafeArea; } > >+ // Matches a width=device-width, initial-scale=1 viewport. >+ WEBCORE_EXPORT static Parameters nativeWebpageParameters(); > WEBCORE_EXPORT static Parameters webpageParameters(); > WEBCORE_EXPORT static Parameters textDocumentParameters(); > WEBCORE_EXPORT static Parameters imageDocumentParameters(); >diff --git a/Source/WebKit/Shared/WebPreferences.yaml b/Source/WebKit/Shared/WebPreferences.yaml >index 260221cb30cd25bf524c22b74e6525187fb8001c..443ee680be0743d3eaf9e9ec91f582a04c8efdbe 100644 >--- a/Source/WebKit/Shared/WebPreferences.yaml >+++ b/Source/WebKit/Shared/WebPreferences.yaml >@@ -939,6 +939,10 @@ PassiveTouchListenersAsDefaultOnDocument: > defaultValue: defaultPassiveTouchListenersAsDefaultOnDocument() > webcoreName: passiveTouchListenersAsDefaultOnDocument > >+ShouldIgnoreMetaViewport: >+ type: bool >+ defaultValue: false >+ > # Debug Preferences > > AcceleratedDrawingEnabled: >diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm b/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm >index c49b4768a2d801e1a299f4c69f0b37c8bd20ae3a..2ca7d535ea31944b78ec1833c087c2880eb6ce37 100644 >--- a/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm >+++ b/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm >@@ -782,6 +782,16 @@ - (BOOL)_lowPowerVideoAudioBufferSizeEnabled > return _preferences->lowPowerVideoAudioBufferSizeEnabled(); > } > >+- (void)_setShouldIgnoreMetaViewport:(BOOL)ignoreMetaViewport >+{ >+ return _preferences->setShouldIgnoreMetaViewport(ignoreMetaViewport); >+} >+ >+- (BOOL)_shouldIgnoreMetaViewport >+{ >+ return _preferences->shouldIgnoreMetaViewport(); >+} >+ > #if PLATFORM(MAC) > - (void)_setJavaEnabledForLocalFiles:(BOOL)enabled > { >diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h b/Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h >index 3879e35ed325e857b0c5ab73cd7bdac419e6533c..f93cee5bf0dddd53064b7eda3d4459d324a55beb 100644 >--- a/Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h >+++ b/Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h >@@ -140,6 +140,7 @@ typedef NS_ENUM(NSInteger, _WKEditableLinkBehavior) { > @property (nonatomic, setter=_setColorFilterEnabled:) BOOL _colorFilterEnabled WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA)); > @property (nonatomic, setter=_setPunchOutWhiteBackgroundsInDarkMode:) BOOL _punchOutWhiteBackgroundsInDarkMode WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA)); > @property (nonatomic, setter=_setLowPowerVideoAudioBufferSizeEnabled:) BOOL _lowPowerVideoAudioBufferSizeEnabled WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA)); >+@property (nonatomic, setter=_setShouldIgnoreMetaViewport:) BOOL _shouldIgnoreMetaViewport WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); > > #if !TARGET_OS_IPHONE > @property (nonatomic, setter=_setWebGLEnabled:) BOOL _webGLEnabled WK_API_AVAILABLE(macosx(10.13.4)); >diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.cpp b/Source/WebKit/WebProcess/WebPage/WebPage.cpp >index 32659971940120454f5239cb00183a59cf5d90ab..3f535a3bf68923d804b2df777e750b7aa37802b6 100644 >--- a/Source/WebKit/WebProcess/WebPage/WebPage.cpp >+++ b/Source/WebKit/WebProcess/WebPage/WebPage.cpp >@@ -1796,7 +1796,7 @@ void WebPage::disabledAdaptationsDidChange(const OptionSet<DisabledAdaptations>& > void WebPage::viewportPropertiesDidChange(const ViewportArguments& viewportArguments) > { > #if PLATFORM(IOS) >- if (m_viewportConfiguration.setViewportArguments(viewportArguments)) >+ if (!m_page->settings().shouldIgnoreMetaViewport() && m_viewportConfiguration.setViewportArguments(viewportArguments)) > viewportConfigurationChanged(); > #endif > >@@ -5309,7 +5309,7 @@ void WebPage::didCommitLoad(WebFrame* frame) > if (m_viewportConfiguration.setContentsSize(coreFrame->view()->contentsSize())) > viewportChanged = true; > >- if (m_viewportConfiguration.setViewportArguments(coreFrame->document()->viewportArguments())) >+ if (!m_page->settings().shouldIgnoreMetaViewport() && m_viewportConfiguration.setViewportArguments(coreFrame->document()->viewportArguments())) > viewportChanged = true; > > if (viewportChanged) >diff --git a/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm b/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm >index ae58e0904e8d4db9a95856d623f00205e5d8e12e..2c17aafca929ecac8f598adcf4ebbc2b06ac682a 100644 >--- a/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm >+++ b/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm >@@ -2738,7 +2738,8 @@ void WebPage::resetViewportDefaultConfiguration(WebFrame* frame, bool hasMobileD > } > > if (!frame) { >- m_viewportConfiguration.setDefaultConfiguration(ViewportConfiguration::webpageParameters()); >+ auto parameters = m_page->settings().shouldIgnoreMetaViewport() ? ViewportConfiguration::nativeWebpageParameters() : ViewportConfiguration::webpageParameters(); >+ m_viewportConfiguration.setDefaultConfiguration(parameters); > return; > } > >@@ -2752,8 +2753,10 @@ void WebPage::resetViewportDefaultConfiguration(WebFrame* frame, bool hasMobileD > m_viewportConfiguration.setDefaultConfiguration(ViewportConfiguration::imageDocumentParameters()); > else if (document->isTextDocument()) > m_viewportConfiguration.setDefaultConfiguration(ViewportConfiguration::textDocumentParameters()); >- else >- m_viewportConfiguration.setDefaultConfiguration(ViewportConfiguration::webpageParameters()); >+ else { >+ auto parameters = m_page->settings().shouldIgnoreMetaViewport() ? ViewportConfiguration::nativeWebpageParameters() : ViewportConfiguration::webpageParameters(); >+ m_viewportConfiguration.setDefaultConfiguration(parameters); >+ } > } > > void WebPage::viewportConfigurationChanged()
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
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 188772
:
347590
|
347645
|
348329
|
349638
|
350799