Changeset 286831 in webkit
- Timestamp:
- Dec 9, 2021, 9:05:27 PM (5 years ago)
- Location:
- trunk/Source
- Files:
-
- 9 edited
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/loader/DocumentLoader.h (modified) (4 diffs)
-
WebKit/ChangeLog (modified) (1 diff)
-
WebKit/Shared/WebsitePoliciesData.cpp (modified) (4 diffs)
-
WebKit/Shared/WebsitePoliciesData.h (modified) (1 diff)
-
WebKit/UIProcess/API/APIWebsitePolicies.cpp (modified) (2 diffs)
-
WebKit/UIProcess/API/APIWebsitePolicies.h (modified) (2 diffs)
-
WebKit/UIProcess/API/Cocoa/WKWebpagePreferences.mm (modified) (2 diffs)
-
WebKit/UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r286827 r286831 1 2021-12-09 Wenson Hsieh <wenson_hsieh@apple.com> 2 3 Add a new WKWebpagePreferences SPI for modal container observation policies 4 https://bugs.webkit.org/show_bug.cgi?id=234013 5 rdar://86219613 6 7 Reviewed by Brent Fulgham. 8 9 Add a new website policy flag `ModalContainerObservationPolicy`. Refer to rdar://86219613 for more info. 10 11 * loader/DocumentLoader.h: 12 (WebCore::DocumentLoader::modalContainerObservationPolicy const): 13 (WebCore::DocumentLoader::setModalContainerObservationPolicy): 14 1 15 2021-12-09 Cathie Chen <cathiechen@igalia.com> 2 16 -
trunk/Source/WebCore/loader/DocumentLoader.h
r286545 r286831 145 145 }; 146 146 147 enum class ModalContainerObservationPolicy : uint8_t { 148 Disabled, 149 Prompt, 150 Allow, 151 Disallow, 152 }; 153 147 154 DECLARE_ALLOCATOR_WITH_HEAP_IDENTIFIER(DocumentLoader); 148 155 class DocumentLoader … … 343 350 WEBCORE_EXPORT MouseEventPolicy mouseEventPolicy() const; 344 351 void setMouseEventPolicy(MouseEventPolicy policy) { m_mouseEventPolicy = policy; } 352 353 ModalContainerObservationPolicy modalContainerObservationPolicy() const { return m_modalContainerObservationPolicy; } 354 void setModalContainerObservationPolicy(ModalContainerObservationPolicy policy) { m_modalContainerObservationPolicy = policy; } 345 355 346 356 void addSubresourceLoader(ResourceLoader&); … … 668 678 LegacyOverflowScrollingTouchPolicy m_legacyOverflowScrollingTouchPolicy { LegacyOverflowScrollingTouchPolicy::Default }; 669 679 MouseEventPolicy m_mouseEventPolicy { MouseEventPolicy::Default }; 680 ModalContainerObservationPolicy m_modalContainerObservationPolicy { ModalContainerObservationPolicy::Disabled }; 670 681 671 682 #if ENABLE(SERVICE_WORKER) … … 783 794 }; 784 795 796 template<> struct EnumTraits<WebCore::ModalContainerObservationPolicy> { 797 using values = EnumValues< 798 WebCore::ModalContainerObservationPolicy, 799 WebCore::ModalContainerObservationPolicy::Disabled, 800 WebCore::ModalContainerObservationPolicy::Prompt, 801 WebCore::ModalContainerObservationPolicy::Allow, 802 WebCore::ModalContainerObservationPolicy::Disallow 803 >; 804 }; 805 785 806 } // namespace WTF -
trunk/Source/WebKit/ChangeLog
r286830 r286831 1 2021-12-09 Wenson Hsieh <wenson_hsieh@apple.com> 2 3 Add a new WKWebpagePreferences SPI for modal container observation policies 4 https://bugs.webkit.org/show_bug.cgi?id=234013 5 rdar://86219613 6 7 Reviewed by Brent Fulgham. 8 9 Add a new website policy flag `ModalContainerObservationPolicy`, and expose it as SPI on WKWebpagePreferences. 10 Refer to rdar://86219613 for additional details. 11 12 * Shared/WebsitePoliciesData.cpp: 13 (WebKit::WebsitePoliciesData::encode const): 14 (WebKit::WebsitePoliciesData::decode): 15 (WebKit::WebsitePoliciesData::applyToDocumentLoader): 16 * Shared/WebsitePoliciesData.h: 17 * UIProcess/API/APIWebsitePolicies.cpp: 18 (API::WebsitePolicies::copy const): 19 (API::WebsitePolicies::data): 20 * UIProcess/API/APIWebsitePolicies.h: 21 * UIProcess/API/Cocoa/WKWebpagePreferences.mm: 22 (WebKit::modalContainerObservationPolicy): 23 (WebKit::coreModalContainerObservationPolicy): 24 (-[WKWebpagePreferences _setModalContainerObservationPolicy:]): 25 (-[WKWebpagePreferences _modalContainerObservationPolicy]): 26 * UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h: 27 1 28 2021-12-09 Jigen Zhou <jigen.zhou@sony.com> 2 29 -
trunk/Source/WebKit/Shared/WebsitePoliciesData.cpp
r286545 r286831 55 55 encoder << allowsContentJavaScript; 56 56 encoder << mouseEventPolicy; 57 encoder << modalContainerObservationPolicy; 57 58 encoder << idempotentModeAutosizingOnlyHonorsPercentages; 58 59 } … … 145 146 decoder >> mouseEventPolicy; 146 147 if (!mouseEventPolicy) 148 return std::nullopt; 149 150 std::optional<WebCore::ModalContainerObservationPolicy> modalContainerObservationPolicy; 151 decoder >> modalContainerObservationPolicy; 152 if (!modalContainerObservationPolicy) 147 153 return std::nullopt; 148 154 … … 172 178 WTFMove(*allowsContentJavaScript), 173 179 WTFMove(*mouseEventPolicy), 180 WTFMove(*modalContainerObservationPolicy), 174 181 WTFMove(*idempotentModeAutosizingOnlyHonorsPercentages), 175 182 } }; … … 296 303 } 297 304 305 documentLoader.setModalContainerObservationPolicy(websitePolicies.modalContainerObservationPolicy); 298 306 documentLoader.setAllowContentChangeObserverQuirk(websitePolicies.allowContentChangeObserverQuirk); 299 307 documentLoader.setIdempotentModeAutosizingOnlyHonorsPercentages(websitePolicies.idempotentModeAutosizingOnlyHonorsPercentages); -
trunk/Source/WebKit/Shared/WebsitePoliciesData.h
r286545 r286831 72 72 WebCore::AllowsContentJavaScript allowsContentJavaScript { WebCore::AllowsContentJavaScript::Yes }; 73 73 WebCore::MouseEventPolicy mouseEventPolicy { WebCore::MouseEventPolicy::Default }; 74 WebCore::ModalContainerObservationPolicy modalContainerObservationPolicy { WebCore::ModalContainerObservationPolicy::Disabled }; 74 75 bool idempotentModeAutosizingOnlyHonorsPercentages { false }; 75 76 -
trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.cpp
r285980 r286831 77 77 policies->setCaptivePortalModeEnabled(m_captivePortalModeEnabled); 78 78 policies->setMouseEventPolicy(m_mouseEventPolicy); 79 policies->setModalContainerObservationPolicy(m_modalContainerObservationPolicy); 79 80 return policies; 80 81 } … … 122 123 m_allowsContentJavaScript, 123 124 m_mouseEventPolicy, 125 m_modalContainerObservationPolicy, 124 126 m_idempotentModeAutosizingOnlyHonorsPercentages 125 127 }; -
trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.h
r286602 r286831 136 136 void setMouseEventPolicy(WebCore::MouseEventPolicy policy) { m_mouseEventPolicy = policy; } 137 137 138 WebCore::ModalContainerObservationPolicy modalContainerObservationPolicy() const { return m_modalContainerObservationPolicy; } 139 void setModalContainerObservationPolicy(WebCore::ModalContainerObservationPolicy policy) { m_modalContainerObservationPolicy = policy; } 140 138 141 bool idempotentModeAutosizingOnlyHonorsPercentages() const { return m_idempotentModeAutosizingOnlyHonorsPercentages; } 139 142 void setIdempotentModeAutosizingOnlyHonorsPercentages(bool idempotentModeAutosizingOnlyHonorsPercentages) { m_idempotentModeAutosizingOnlyHonorsPercentages = idempotentModeAutosizingOnlyHonorsPercentages; } … … 166 169 WebCore::AllowsContentJavaScript m_allowsContentJavaScript { WebCore::AllowsContentJavaScript::Yes }; 167 170 WebCore::MouseEventPolicy m_mouseEventPolicy { WebCore::MouseEventPolicy::Default }; 171 WebCore::ModalContainerObservationPolicy m_modalContainerObservationPolicy { WebCore::ModalContainerObservationPolicy::Disabled }; 168 172 bool m_idempotentModeAutosizingOnlyHonorsPercentages { false }; 169 173 std::optional<bool> m_captivePortalModeEnabled; -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferences.mm
r286661 r286831 105 105 } 106 106 107 static _WKWebsiteModalContainerObservationPolicy modalContainerObservationPolicy(WebCore::ModalContainerObservationPolicy policy) 108 { 109 switch (policy) { 110 case WebCore::ModalContainerObservationPolicy::Disabled: 111 return _WKWebsiteModalContainerObservationPolicyDisabled; 112 case WebCore::ModalContainerObservationPolicy::Prompt: 113 return _WKWebsiteModalContainerObservationPolicyPrompt; 114 case WebCore::ModalContainerObservationPolicy::Allow: 115 return _WKWebsiteModalContainerObservationPolicyAllow; 116 case WebCore::ModalContainerObservationPolicy::Disallow: 117 return _WKWebsiteModalContainerObservationPolicyDisallow; 118 } 119 ASSERT_NOT_REACHED(); 120 return _WKWebsiteModalContainerObservationPolicyDisabled; 121 } 122 123 static WebCore::ModalContainerObservationPolicy coreModalContainerObservationPolicy(_WKWebsiteModalContainerObservationPolicy policy) 124 { 125 switch (policy) { 126 case _WKWebsiteModalContainerObservationPolicyDisabled: 127 return WebCore::ModalContainerObservationPolicy::Disabled; 128 case _WKWebsiteModalContainerObservationPolicyPrompt: 129 return WebCore::ModalContainerObservationPolicy::Prompt; 130 case _WKWebsiteModalContainerObservationPolicyAllow: 131 return WebCore::ModalContainerObservationPolicy::Allow; 132 case _WKWebsiteModalContainerObservationPolicyDisallow: 133 return WebCore::ModalContainerObservationPolicy::Disallow; 134 } 135 ASSERT_NOT_REACHED(); 136 return WebCore::ModalContainerObservationPolicy::Disabled; 137 } 138 107 139 class WebPagePreferencesCaptivePortalModeObserver final : public CaptivePortalModeObserver { 108 140 WTF_MAKE_FAST_ALLOCATED; … … 494 526 } 495 527 528 - (void)_setModalContainerObservationPolicy:(_WKWebsiteModalContainerObservationPolicy)policy 529 { 530 _websitePolicies->setModalContainerObservationPolicy(WebKit::coreModalContainerObservationPolicy(policy)); 531 } 532 533 - (_WKWebsiteModalContainerObservationPolicy)_modalContainerObservationPolicy 534 { 535 return WebKit::modalContainerObservationPolicy(_websitePolicies->modalContainerObservationPolicy()); 536 } 537 496 538 #if USE(APPLE_INTERNAL_SDK) 497 539 #import <WebKitAdditions/WKWebpagePreferencesAdditions.mm> -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h
r286545 r286831 63 63 } WK_API_AVAILABLE(macos(11.0), ios(14.0)); 64 64 65 typedef NS_OPTIONS(NSUInteger, _WKWebsiteModalContainerObservationPolicy) { 66 _WKWebsiteModalContainerObservationPolicyDisabled, 67 _WKWebsiteModalContainerObservationPolicyPrompt, 68 _WKWebsiteModalContainerObservationPolicyAllow, 69 _WKWebsiteModalContainerObservationPolicyDisallow, 70 } WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 71 65 72 @class _WKCustomHeaderFields; 66 73 @class WKUserContentController; … … 86 93 87 94 @property (nonatomic, setter=_setMouseEventPolicy:) _WKWebsiteMouseEventPolicy _mouseEventPolicy WK_API_AVAILABLE(macos(11.0), ios(14.0)); 95 @property (nonatomic, setter=_setModalContainerObservationPolicy:) _WKWebsiteModalContainerObservationPolicy _modalContainerObservationPolicy WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 88 96 89 97 @property (nonatomic, setter=_setCaptivePortalModeEnabled:) BOOL _captivePortalModeEnabled WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
Note:
See TracChangeset
for help on using the changeset viewer.