Changeset 243798 in webkit
- Timestamp:
- Apr 3, 2019, 8:22:10 AM (7 years ago)
- Location:
- trunk/Source
- Files:
-
- 9 edited
- 1 copied
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/loader/DocumentLoader.h (modified) (3 diffs)
-
WebKit/ChangeLog (modified) (1 diff)
-
WebKit/Shared/WebsiteMetaViewportPolicy.h (copied) (copied from trunk/Source/WebKit/Shared/WebsitePoliciesData.h ) (2 diffs)
-
WebKit/Shared/WebsitePoliciesData.cpp (modified) (4 diffs)
-
WebKit/Shared/WebsitePoliciesData.h (modified) (2 diffs)
-
WebKit/UIProcess/API/APIWebsitePolicies.cpp (modified) (1 diff)
-
WebKit/UIProcess/API/APIWebsitePolicies.h (modified) (3 diffs)
-
WebKit/WebKit.xcodeproj/project.pbxproj (modified) (4 diffs)
-
WebKit/WebProcess/WebPage/ios/WebPageIOS.mm (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r243795 r243798 1 2019-04-03 Wenson Hsieh <wenson_hsieh@apple.com> 2 3 Introduce and add plumbing for a website policy for meta viewport tag handling 4 https://bugs.webkit.org/show_bug.cgi?id=196285 5 6 Reviewed by Tim Horton. 7 8 Add MetaViewportPolicy to DocumentLoader. See WebKit ChangeLog for more detail. 9 10 * loader/DocumentLoader.h: 11 (WebCore::DocumentLoader::metaViewportPolicy const): 12 (WebCore::DocumentLoader::setMetaViewportPolicy): 13 1 14 2019-04-03 Joseph Pecoraro <pecoraro@apple.com> 2 15 -
trunk/Source/WebCore/loader/DocumentLoader.h
r242960 r243798 113 113 }; 114 114 115 enum class MetaViewportPolicy { 116 Default, 117 Respect, 118 Ignore, 119 }; 120 115 121 class DocumentLoader 116 122 : public RefCounted<DocumentLoader> … … 284 290 void setPopUpPolicy(PopUpPolicy popUpPolicy) { m_popUpPolicy = popUpPolicy; } 285 291 292 MetaViewportPolicy metaViewportPolicy() const { return m_metaViewportPolicy; } 293 void setMetaViewportPolicy(MetaViewportPolicy policy) { m_metaViewportPolicy = policy; } 294 286 295 void addSubresourceLoader(ResourceLoader*); 287 296 void removeSubresourceLoader(LoadCompletionType, ResourceLoader*); … … 557 566 OptionSet<AutoplayQuirk> m_allowedAutoplayQuirks; 558 567 PopUpPolicy m_popUpPolicy { PopUpPolicy::Default }; 568 MetaViewportPolicy m_metaViewportPolicy { MetaViewportPolicy::Default }; 559 569 560 570 #if ENABLE(SERVICE_WORKER) -
trunk/Source/WebKit/ChangeLog
r243797 r243798 1 2019-04-03 Wenson Hsieh <wenson_hsieh@apple.com> 2 3 Introduce and add plumbing for a website policy for meta viewport tag handling 4 https://bugs.webkit.org/show_bug.cgi?id=196285 5 6 Reviewed by Tim Horton. 7 8 Add WebsiteMetaViewportPolicy, a bit that can be used to determine whether to respect or ignore the meta 9 viewport tag and use native web page parameters instead of the default parameters. 10 11 * Shared/WebsiteMetaViewportPolicy.h: Copied from Source/WebKit/Shared/WebsitePoliciesData.h. 12 * Shared/WebsitePoliciesData.cpp: 13 (WebKit::WebsitePoliciesData::encode const): 14 (WebKit::WebsitePoliciesData::decode): 15 (WebKit::WebsitePoliciesData::applyToDocumentLoader): 16 17 Convert WebKit::WebsiteMetaViewportPolicy into WebCore::MetaViewportPolicy. 18 19 * Shared/WebsitePoliciesData.h: 20 * UIProcess/API/APIWebsitePolicies.cpp: 21 (API::WebsitePolicies::data): 22 * UIProcess/API/APIWebsitePolicies.h: 23 24 Add additional plumbing for the policy flag. 25 26 * WebKit.xcodeproj/project.pbxproj: 27 * WebProcess/WebPage/ios/WebPageIOS.mm: 28 (WebKit::WebPage::resetViewportDefaultConfiguration): 29 30 Use native web page parameters if either "shouldIgnoreMetaViewport" is enabled, or the new policy is set. 31 Eventually, the policy should completely replace the former preference once no internal clients depend on it. 32 1 33 2019-04-03 Wenson Hsieh <wenson_hsieh@apple.com> 2 34 -
trunk/Source/WebKit/Shared/WebsiteMetaViewportPolicy.h
r243797 r243798 1 1 /* 2 * Copyright (C) 201 6Apple Inc. All rights reserved.2 * Copyright (C) 2019 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 26 26 #pragma once 27 27 28 #include "WebsiteAutoplayPolicy.h" 29 #include "WebsiteAutoplayQuirk.h" 30 #include "WebsiteDataStoreParameters.h" 31 #include "WebsitePopUpPolicy.h" 32 #include <WebCore/HTTPHeaderField.h> 33 #include <wtf/OptionSet.h> 34 35 namespace IPC { 36 class Decoder; 37 class Encoder; 38 } 39 40 namespace WebCore { 41 class DocumentLoader; 42 } 28 #include <wtf/Forward.h> 43 29 44 30 namespace WebKit { 45 31 46 struct WebsitePoliciesData { 47 static void applyToDocumentLoader(WebsitePoliciesData&&, WebCore::DocumentLoader&); 48 49 bool contentBlockersEnabled { true }; 50 OptionSet<WebsiteAutoplayQuirk> allowedAutoplayQuirks; 51 WebsiteAutoplayPolicy autoplayPolicy { WebsiteAutoplayPolicy::Default }; 52 Optional<bool> deviceOrientationAndMotionAccessState; 53 Vector<WebCore::HTTPHeaderField> customHeaderFields; 54 WebsitePopUpPolicy popUpPolicy { WebsitePopUpPolicy::Default }; 55 Optional<WebsiteDataStoreParameters> websiteDataStoreParameters; 56 String customUserAgent; 57 String customJavaScriptUserAgentAsSiteSpecificQuirks; 58 String customNavigatorPlatform; 59 60 void encode(IPC::Encoder&) const; 61 static Optional<WebsitePoliciesData> decode(IPC::Decoder&); 32 enum class WebsiteMetaViewportPolicy { 33 Default, 34 Respect, 35 Ignore, 62 36 }; 63 37 64 } // namespace WebKit 38 } 39 40 namespace WTF { 41 42 template<> struct EnumTraits<WebKit::WebsiteMetaViewportPolicy> { 43 using values = EnumValues< 44 WebKit::WebsiteMetaViewportPolicy, 45 WebKit::WebsiteMetaViewportPolicy::Default, 46 WebKit::WebsiteMetaViewportPolicy::Respect, 47 WebKit::WebsiteMetaViewportPolicy::Ignore 48 >; 49 }; 50 51 } // namespace WTF -
trunk/Source/WebKit/Shared/WebsitePoliciesData.cpp
r242960 r243798 47 47 encoder << customJavaScriptUserAgentAsSiteSpecificQuirks; 48 48 encoder << customNavigatorPlatform; 49 encoder << metaViewportPolicy; 49 50 } 50 51 … … 99 100 decoder >> customNavigatorPlatform; 100 101 if (!customNavigatorPlatform) 102 return WTF::nullopt; 103 104 Optional<WebsiteMetaViewportPolicy> metaViewportPolicy; 105 decoder >> metaViewportPolicy; 106 if (!metaViewportPolicy) 101 107 return WTF::nullopt; 102 108 … … 112 118 WTFMove(*customJavaScriptUserAgentAsSiteSpecificQuirks), 113 119 WTFMove(*customNavigatorPlatform), 120 WTFMove(*metaViewportPolicy), 114 121 } }; 115 122 } … … 171 178 } 172 179 180 switch (websitePolicies.metaViewportPolicy) { 181 case WebsiteMetaViewportPolicy::Default: 182 documentLoader.setMetaViewportPolicy(WebCore::MetaViewportPolicy::Default); 183 break; 184 case WebsiteMetaViewportPolicy::Respect: 185 documentLoader.setMetaViewportPolicy(WebCore::MetaViewportPolicy::Respect); 186 break; 187 case WebsiteMetaViewportPolicy::Ignore: 188 documentLoader.setMetaViewportPolicy(WebCore::MetaViewportPolicy::Ignore); 189 break; 190 } 191 173 192 if (websitePolicies.websiteDataStoreParameters) { 174 193 if (auto* frame = documentLoader.frame()) { -
trunk/Source/WebKit/Shared/WebsitePoliciesData.h
r242960 r243798 29 29 #include "WebsiteAutoplayQuirk.h" 30 30 #include "WebsiteDataStoreParameters.h" 31 #include "WebsiteMetaViewportPolicy.h" 31 32 #include "WebsitePopUpPolicy.h" 32 33 #include <WebCore/HTTPHeaderField.h> … … 57 58 String customJavaScriptUserAgentAsSiteSpecificQuirks; 58 59 String customNavigatorPlatform; 60 WebsiteMetaViewportPolicy metaViewportPolicy { WebsiteMetaViewportPolicy::Default }; 59 61 60 62 void encode(IPC::Encoder&) const; -
trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.cpp
r242960 r243798 54 54 WebKit::WebsitePoliciesData WebsitePolicies::data() 55 55 { 56 Optional<WebKit::WebsiteDataStoreParameters> parameters; 57 if (m_websiteDataStore) 58 parameters = m_websiteDataStore->websiteDataStore().parameters(); 59 return { contentBlockersEnabled(), allowedAutoplayQuirks(), autoplayPolicy(), deviceOrientationAndMotionAccessState(), 60 customHeaderFields(), popUpPolicy(), WTFMove(parameters), m_customUserAgent, m_customJavaScriptUserAgentAsSiteSpecificQuirks, m_customNavigatorPlatform }; 56 return { 57 contentBlockersEnabled(), 58 allowedAutoplayQuirks(), 59 autoplayPolicy(), 60 deviceOrientationAndMotionAccessState(), 61 customHeaderFields(), 62 popUpPolicy(), 63 m_websiteDataStore ? Optional<WebKit::WebsiteDataStoreParameters> { m_websiteDataStore->websiteDataStore().parameters() } : WTF::nullopt, 64 m_customUserAgent, 65 m_customJavaScriptUserAgentAsSiteSpecificQuirks, 66 m_customNavigatorPlatform, 67 m_metaViewportPolicy, 68 }; 61 69 } 62 70 -
trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.h
r243797 r243798 30 30 #include "WebsiteAutoplayPolicy.h" 31 31 #include "WebsiteAutoplayQuirk.h" 32 #include "WebsiteMetaViewportPolicy.h" 32 33 #include "WebsitePopUpPolicy.h" 33 34 #include <WebCore/HTTPHeaderField.h> … … 85 86 void setPreferredCompatibilityMode(WebKit::WebCompatibilityMode mode) { m_preferredCompatibilityMode = mode; } 86 87 88 WebKit::WebsiteMetaViewportPolicy metaViewportPolicy() const { return m_metaViewportPolicy; } 89 void setMetaViewportPolicy(WebKit::WebsiteMetaViewportPolicy policy) { m_metaViewportPolicy = policy; } 90 87 91 private: 88 92 WebsitePolicies(bool contentBlockersEnabled, OptionSet<WebKit::WebsiteAutoplayQuirk>, WebKit::WebsiteAutoplayPolicy, Vector<WebCore::HTTPHeaderField>&&, WebKit::WebsitePopUpPolicy, RefPtr<WebsiteDataStore>&&); … … 99 103 WTF::String m_customNavigatorPlatform; 100 104 WebKit::WebCompatibilityMode m_preferredCompatibilityMode { WebKit::WebCompatibilityMode::Default }; 105 WebKit::WebsiteMetaViewportPolicy m_metaViewportPolicy { WebKit::WebsiteMetaViewportPolicy::Default }; 101 106 }; 102 107 -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r243797 r243798 1637 1637 ED82A7F2128C6FAF004477B3 /* WKBundlePageOverlay.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A22F0FF1289FCD90085E74F /* WKBundlePageOverlay.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1638 1638 F409BA181E6E64BC009DA28E /* WKDragDestinationAction.h in Headers */ = {isa = PBXBuildFile; fileRef = F409BA171E6E64B3009DA28E /* WKDragDestinationAction.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1639 F430E9422247335F005FE053 /* WebsiteMetaViewportPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = F430E941224732A9005FE053 /* WebsiteMetaViewportPolicy.h */; }; 1639 1640 F430E94422473DFF005FE053 /* WebCompatibilityMode.h in Headers */ = {isa = PBXBuildFile; fileRef = F430E94322473DB8005FE053 /* WebCompatibilityMode.h */; }; 1640 1641 F438CD1C2241421400DE6DDA /* WKWebpagePreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = F438CD1B224140A600DE6DDA /* WKWebpagePreferences.h */; settings = {ATTRIBUTES = (Public, ); }; }; … … 4573 4574 F40D1B68220BDC0F00B49A01 /* WebAutocorrectionContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WebAutocorrectionContext.h; path = ios/WebAutocorrectionContext.h; sourceTree = "<group>"; }; 4574 4575 F41056612130699A0092281D /* APIAttachmentCocoa.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = APIAttachmentCocoa.mm; sourceTree = "<group>"; }; 4576 F430E941224732A9005FE053 /* WebsiteMetaViewportPolicy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebsiteMetaViewportPolicy.h; sourceTree = "<group>"; }; 4575 4577 F430E94322473DB8005FE053 /* WebCompatibilityMode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebCompatibilityMode.h; sourceTree = "<group>"; }; 4576 4578 F438CD1B224140A600DE6DDA /* WKWebpagePreferences.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WKWebpagePreferences.h; sourceTree = "<group>"; }; … … 5229 5231 5C3AEA8E1FE1F1DF002318D3 /* WebsitePoliciesData.cpp */, 5230 5232 5C13024A1FE341A7000D9B31 /* WebsitePoliciesData.h */, 5233 F430E941224732A9005FE053 /* WebsiteMetaViewportPolicy.h */, 5231 5234 0EDE85022004E74900030560 /* WebsitePopUpPolicy.h */, 5232 5235 8360349D1ACB34D600626549 /* WebSQLiteDatabaseTracker.cpp */, … … 9821 9824 37A709A71E3EA0FD00CA5969 /* WKDataDetectorTypes.h in Headers */, 9822 9825 37A709A91E3EA40C00CA5969 /* WKDataDetectorTypesInternal.h in Headers */, 9826 F430E9422247335F005FE053 /* WebsiteMetaViewportPolicy.h in Headers */, 9823 9827 2E94FC1620351A6D00974BA0 /* WKDatePickerViewController.h in Headers */, 9824 9828 377EAD4517E2C51A002D193D /* WKDeclarationSpecifiers.h in Headers */, -
trunk/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
r243712 r243798 64 64 #import <WebCore/DiagnosticLoggingClient.h> 65 65 #import <WebCore/DiagnosticLoggingKeys.h> 66 #import <WebCore/DocumentLoader.h> 66 67 #import <WebCore/DragController.h> 67 68 #import <WebCore/Editing.h> … … 2966 2967 2967 2968 auto parametersForStandardFrame = [&] { 2969 bool shouldIgnoreMetaViewport = false; 2970 if (auto* mainDocument = m_page->mainFrame().document()) { 2971 auto* loader = mainDocument->loader(); 2972 shouldIgnoreMetaViewport = loader && loader->metaViewportPolicy() == WebCore::MetaViewportPolicy::Ignore; 2973 } 2974 2968 2975 if (m_page->settings().shouldIgnoreMetaViewport()) 2969 return m_viewportConfiguration.nativeWebpageParameters();2970 2971 return ViewportConfiguration::webpageParameters();2976 shouldIgnoreMetaViewport = true; 2977 2978 return shouldIgnoreMetaViewport ? m_viewportConfiguration.nativeWebpageParameters() : ViewportConfiguration::webpageParameters(); 2972 2979 }; 2973 2980
Note:
See TracChangeset
for help on using the changeset viewer.