Changeset 259307 in webkit
- Timestamp:
- Mar 31, 2020 1:13:48 PM (4 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 30 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r259306 r259307 1 2020-03-31 Alex Christensen <achristensen@webkit.org> 2 3 Add SPI WKWebpagePreferences._userContentController 4 https://bugs.webkit.org/show_bug.cgi?id=209795 5 6 Reviewed by Tim Hatcher. 7 8 This will allow us to switch which WKUserContentController we are using at decidePolicyForNavigationAction time 9 like we do WKWebsiteDataStores. This is only allowed with main frame navigations. 10 11 To do this I moved UserContentControllerParameters into their own struct. 12 I remove unused WebsitePoliciesData.websiteDataStoreParameters. 13 I pass an API::WebsitePolicies* further down the chain instead of switching to Optional<WebsitePoliciesData>, 14 which allows us to access the WebUserContentControllerProxy* from the former in WebPageProxy::creationParameters. 15 I removed an unused WebsitePolicies constructor. 16 I added a missing copied member variable in WebsitePolicies::copy. 17 18 * NetworkProcess/NetworkSession.cpp: 19 * Shared/UserContentControllerParameters.cpp: Added. 20 (WebKit::UserContentControllerParameters::encode const): 21 (WebKit::UserContentControllerParameters::decode): 22 * Shared/UserContentControllerParameters.h: Added. 23 * Shared/WebPageCreationParameters.cpp: 24 (WebKit::WebPageCreationParameters::encode const): 25 (WebKit::WebPageCreationParameters::decode): 26 * Shared/WebPageCreationParameters.h: 27 * Shared/WebsitePoliciesData.cpp: 28 (WebKit::WebsitePoliciesData::encode const): 29 (WebKit::WebsitePoliciesData::decode): 30 * Shared/WebsitePoliciesData.h: 31 * Sources.txt: 32 * UIProcess/API/APIWebsitePolicies.cpp: 33 (API::WebsitePolicies::copy const): 34 (API::WebsitePolicies::setUserContentController): 35 (API::WebsitePolicies::data): 36 (API::WebsitePolicies::WebsitePolicies): Deleted. 37 * UIProcess/API/APIWebsitePolicies.h: 38 * UIProcess/API/C/WKPage.cpp: 39 (WKPageUpdateWebsitePolicies): 40 * UIProcess/API/Cocoa/WKWebView.mm: 41 (-[WKWebView _updateWebpagePreferences:]): 42 * UIProcess/API/Cocoa/WKWebpagePreferences.mm: 43 (-[WKWebpagePreferences _userContentController]): 44 (-[WKWebpagePreferences _setUserContentController:]): 45 * UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h: 46 * UIProcess/Cocoa/NavigationState.mm: 47 (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction): 48 * UIProcess/ProvisionalPageProxy.cpp: 49 (WebKit::ProvisionalPageProxy::ProvisionalPageProxy): 50 (WebKit::ProvisionalPageProxy::initializeWebPage): 51 (WebKit::ProvisionalPageProxy::goToBackForwardItem): 52 * UIProcess/ProvisionalPageProxy.h: 53 * UIProcess/UserContent/WebUserContentControllerProxy.cpp: 54 (WebKit::WebUserContentControllerProxy::addProcess): 55 (WebKit::WebUserContentControllerProxy::parameters const): 56 (WebKit::WebUserContentControllerProxy::contentRuleListData const): 57 (WebKit::WebUserContentControllerProxy::contentRuleListData): Deleted. 58 * UIProcess/UserContent/WebUserContentControllerProxy.h: 59 * UIProcess/WebPageProxy.cpp: 60 (WebKit::WebPageProxy::receivedNavigationPolicyDecision): 61 (WebKit::WebPageProxy::receivedPolicyDecision): 62 (WebKit::WebPageProxy::continueNavigationInNewProcess): 63 (WebKit::WebPageProxy::decidePolicyForNavigationAction): 64 (WebKit::WebPageProxy::decidePolicyForNewWindowAction): 65 (WebKit::WebPageProxy::decidePolicyForResponseShared): 66 * UIProcess/WebPageProxy.h: 67 * UIProcess/WebProcessProxy.cpp: 68 (WebKit::WebProcessProxy::addWebUserContentControllerProxy): 69 * UIProcess/WebProcessProxy.h: 70 * WebKit.xcodeproj/project.pbxproj: 71 * WebProcess/WebPage/WebPage.cpp: 72 (WebKit::m_processDisplayName): 73 * WebProcess/WebProcess.cpp: 74 (WebKit::WebProcess::didReceiveMessage): 75 1 76 2020-03-31 Alex Christensen <achristensen@webkit.org> 2 77 -
trunk/Source/WebKit/NetworkProcess/NetworkSession.cpp
r259275 r259307 33 33 #include "NetworkResourceLoadParameters.h" 34 34 #include "NetworkResourceLoader.h" 35 #include "NetworkSessionCreationParameters.h" 35 36 #include "PingLoad.h" 36 37 #include "WebPageProxy.h" -
trunk/Source/WebKit/Shared/WebPageCreationParameters.cpp
r259209 r259307 130 130 encoder << iceCandidateFilteringEnabled; 131 131 encoder << enumeratingAllNetworkInterfacesEnabled; 132 encoder << userContentWorlds; 133 encoder << userScripts; 134 encoder << userStyleSheets; 135 encoder << messageHandlers; 136 #if ENABLE(CONTENT_EXTENSIONS) 137 encoder << contentRuleLists; 138 #endif 132 encoder << userContentControllerParameters; 139 133 encoder << backgroundColor; 140 134 encoder << oldPageID; … … 403 397 return WTF::nullopt; 404 398 405 Optional<Vector<std::pair<ContentWorldIdentifier, String>>> userContentWorlds; 406 decoder >> userContentWorlds; 407 if (!userContentWorlds) 408 return WTF::nullopt; 409 parameters.userContentWorlds = WTFMove(*userContentWorlds); 410 411 Optional<Vector<WebUserScriptData>> userScripts; 412 decoder >> userScripts; 413 if (!userScripts) 414 return WTF::nullopt; 415 parameters.userScripts = WTFMove(*userScripts); 416 417 Optional<Vector<WebUserStyleSheetData>> userStyleSheets; 418 decoder >> userStyleSheets; 419 if (!userStyleSheets) 420 return WTF::nullopt; 421 parameters.userStyleSheets = WTFMove(*userStyleSheets); 422 423 Optional<Vector<WebScriptMessageHandlerData>> messageHandlers; 424 decoder >> messageHandlers; 425 if (!messageHandlers) 426 return WTF::nullopt; 427 parameters.messageHandlers = WTFMove(*messageHandlers); 428 429 #if ENABLE(CONTENT_EXTENSIONS) 430 Optional<Vector<std::pair<String, WebCompiledContentRuleListData>>> contentRuleLists; 431 decoder >> contentRuleLists; 432 if (!contentRuleLists) 433 return WTF::nullopt; 434 parameters.contentRuleLists = WTFMove(*contentRuleLists); 435 #endif 399 Optional<UserContentControllerParameters> userContentControllerParameters; 400 decoder >> userContentControllerParameters; 401 if (!userContentControllerParameters) 402 return WTF::nullopt; 403 parameters.userContentControllerParameters = WTFMove(*userContentControllerParameters); 436 404 437 405 Optional<Optional<WebCore::Color>> backgroundColor; -
trunk/Source/WebKit/Shared/WebPageCreationParameters.h
r259209 r259307 29 29 #include "LayerTreeContext.h" 30 30 #include "SessionState.h" 31 #include " WebCompiledContentRuleListData.h"31 #include "UserContentControllerParameters.h" 32 32 #include "WebCoreArgumentCoders.h" 33 33 #include "WebPageGroupData.h" 34 34 #include "WebPageProxyIdentifier.h" 35 35 #include "WebPreferencesStore.h" 36 #include "WebUserContentControllerDataTypes.h"37 36 #include <WebCore/ActivityState.h> 38 37 #include <WebCore/Color.h> … … 197 196 bool enumeratingAllNetworkInterfacesEnabled { false }; 198 197 199 // UserContentController members 200 Vector<std::pair<ContentWorldIdentifier, String>> userContentWorlds; 201 Vector<WebUserScriptData> userScripts; 202 Vector<WebUserStyleSheetData> userStyleSheets; 203 Vector<WebScriptMessageHandlerData> messageHandlers; 204 #if ENABLE(CONTENT_EXTENSIONS) 205 Vector<std::pair<String, WebCompiledContentRuleListData>> contentRuleLists; 206 #endif 198 UserContentControllerParameters userContentControllerParameters; 207 199 208 200 Optional<WebCore::Color> backgroundColor; -
trunk/Source/WebKit/Shared/WebsitePoliciesData.cpp
r256715 r259307 46 46 encoder << customHeaderFields; 47 47 encoder << popUpPolicy; 48 encoder << websiteDataStoreParameters;49 48 encoder << customUserAgent; 50 49 encoder << customUserAgentAsSiteSpecificQuirks; … … 92 91 return WTF::nullopt; 93 92 94 Optional<Optional<WebsiteDataStoreParameters>> websiteDataStoreParameters;95 decoder >> websiteDataStoreParameters;96 if (!websiteDataStoreParameters)97 return WTF::nullopt;98 99 93 Optional<String> customUserAgent; 100 94 decoder >> customUserAgent; … … 151 145 WTFMove(*customHeaderFields), 152 146 WTFMove(*popUpPolicy), 153 WTFMove(*websiteDataStoreParameters),154 147 WTFMove(*customUserAgent), 155 148 WTFMove(*customUserAgentAsSiteSpecificQuirks), -
trunk/Source/WebKit/Shared/WebsitePoliciesData.h
r256715 r259307 28 28 #include "WebsiteAutoplayPolicy.h" 29 29 #include "WebsiteAutoplayQuirk.h" 30 #include "WebsiteDataStoreParameters.h"31 30 #include "WebsiteLegacyOverflowScrollingTouchPolicy.h" 32 31 #include "WebsiteMediaSourcePolicy.h" … … 61 60 Vector<WebCore::CustomHeaderFields> customHeaderFields; 62 61 WebsitePopUpPolicy popUpPolicy { WebsitePopUpPolicy::Default }; 63 Optional<WebsiteDataStoreParameters> websiteDataStoreParameters;64 62 String customUserAgent; 65 63 String customUserAgentAsSiteSpecificQuirks; -
trunk/Source/WebKit/Sources.txt
r259200 r259307 182 182 Shared/UpdateInfo.cpp 183 183 Shared/UserData.cpp 184 Shared/UserContentControllerParameters.cpp 184 185 Shared/WebBackForwardListItem.cpp 185 186 Shared/WebCompiledContentRuleList.cpp -
trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.cpp
r256715 r259307 27 27 #include "APIWebsitePolicies.h" 28 28 29 #include "WebUserContentControllerProxy.h" 29 30 #include "WebsiteDataStore.h" 30 31 #include "WebsitePoliciesData.h" … … 33 34 34 35 WebsitePolicies::WebsitePolicies() = default; 35 36 WebsitePolicies::WebsitePolicies(bool contentBlockersEnabled, OptionSet<WebKit::WebsiteAutoplayQuirk> allowedAutoplayQuirks, WebKit::WebsiteAutoplayPolicy autoplayPolicy, Vector<WebCore::HTTPHeaderField>&& legacyCustomHeaderFields, Vector<WebCore::CustomHeaderFields>&& customHeaderFields, WebKit::WebsitePopUpPolicy popUpPolicy, RefPtr<WebKit::WebsiteDataStore>&& websiteDataStore)37 : m_contentBlockersEnabled(contentBlockersEnabled)38 , m_allowedAutoplayQuirks(allowedAutoplayQuirks)39 , m_autoplayPolicy(autoplayPolicy)40 , m_legacyCustomHeaderFields(WTFMove(legacyCustomHeaderFields))41 , m_customHeaderFields(WTFMove(customHeaderFields))42 , m_popUpPolicy(popUpPolicy)43 , m_websiteDataStore(WTFMove(websiteDataStore))44 { }45 36 46 37 Ref<WebsitePolicies> WebsitePolicies::copy() const … … 64 55 policies->setLegacyOverflowScrollingTouchPolicy(m_legacyOverflowScrollingTouchPolicy); 65 56 policies->setAllowContentChangeObserverQuirk(m_allowContentChangeObserverQuirk); 57 policies->setWebsiteDataStore(m_websiteDataStore.get()); 58 policies->setUserContentController(m_userContentController.get()); 66 59 67 60 Vector<WebCore::HTTPHeaderField> legacyCustomHeaderFields; … … 90 83 } 91 84 85 void WebsitePolicies::setUserContentController(RefPtr<WebKit::WebUserContentControllerProxy>&& controller) 86 { 87 m_userContentController = WTFMove(controller); 88 } 89 92 90 WebKit::WebsitePoliciesData WebsitePolicies::data() 93 91 { … … 109 107 WTFMove(customHeaderFields), 110 108 popUpPolicy(), 111 m_websiteDataStore ? Optional<WebKit::WebsiteDataStoreParameters> { m_websiteDataStore->parameters() } : WTF::nullopt,112 109 m_customUserAgent, 113 110 m_customUserAgentAsSiteSpecificQuirks, -
trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.h
r256715 r259307 28 28 #include "APIObject.h" 29 29 #include "WebContentMode.h" 30 #include "WebUserContentControllerProxy.h" 30 31 #include "WebsiteAutoplayPolicy.h" 31 32 #include "WebsiteAutoplayQuirk.h" … … 57 58 Ref<WebsitePolicies> copy() const; 58 59 60 WebKit::WebsitePoliciesData data(); 61 59 62 bool contentBlockersEnabled() const { return m_contentBlockersEnabled; } 60 63 void setContentBlockersEnabled(bool enabled) { m_contentBlockersEnabled = enabled; } … … 82 85 WebKit::WebsiteDataStore* websiteDataStore() const { return m_websiteDataStore.get(); } 83 86 void setWebsiteDataStore(RefPtr<WebKit::WebsiteDataStore>&&); 84 85 WebKit::WebsitePoliciesData data(); 87 88 WebKit::WebUserContentControllerProxy* userContentController() const { return m_userContentController.get(); } 89 void setUserContentController(RefPtr<WebKit::WebUserContentControllerProxy>&&); 86 90 87 91 void setCustomUserAgent(const WTF::String& customUserAgent) { m_customUserAgent = customUserAgent; } … … 122 126 123 127 private: 124 WebsitePolicies(bool contentBlockersEnabled, OptionSet<WebKit::WebsiteAutoplayQuirk>, WebKit::WebsiteAutoplayPolicy, Vector<WebCore::HTTPHeaderField>&&, Vector<WebCore::CustomHeaderFields>&&, WebKit::WebsitePopUpPolicy, RefPtr<WebKit::WebsiteDataStore>&&);125 126 128 bool m_contentBlockersEnabled { true }; 127 129 OptionSet<WebKit::WebsiteAutoplayQuirk> m_allowedAutoplayQuirks; … … 134 136 WebKit::WebsitePopUpPolicy m_popUpPolicy { WebKit::WebsitePopUpPolicy::Default }; 135 137 RefPtr<WebKit::WebsiteDataStore> m_websiteDataStore; 138 RefPtr<WebKit::WebUserContentControllerProxy> m_userContentController; 136 139 WTF::String m_customUserAgent; 137 140 WTF::String m_customUserAgentAsSiteSpecificQuirks; -
trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp
r259171 r259307 368 368 void WKPageUpdateWebsitePolicies(WKPageRef pageRef, WKWebsitePoliciesRef websitePoliciesRef) 369 369 { 370 RELEASE_ASSERT_WITH_MESSAGE(!toImpl(websitePoliciesRef)->websiteDataStore(), "Setting WebsitePolicies.websiteDataStore is only supported during WKFramePolicyListenerUseWithPolicies()."); 371 RELEASE_ASSERT_WITH_MESSAGE(!toImpl(websitePoliciesRef)->userContentController(), "Setting WebsitePolicies.userContentController is only supported during WKFramePolicyListenerUseWithPolicies()."); 370 372 auto data = toImpl(websitePoliciesRef)->data(); 371 RELEASE_ASSERT_WITH_MESSAGE(!data.websiteDataStoreParameters, "Setting WebsitePolicies.WebsiteDataStore is only supported during WKFramePolicyListenerUseWithPolicies().");372 373 toImpl(pageRef)->updateWebsitePolicies(WTFMove(data)); 373 374 } -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
r259306 r259307 2316 2316 - (void)_updateWebpagePreferences:(WKWebpagePreferences *)webpagePreferences 2317 2317 { 2318 if (webpagePreferences._websiteDataStore) 2319 [NSException raise:NSInvalidArgumentException format:@"Updating WKWebsiteDataStore is only supported during decidePolicyForNavigationAction."]; 2320 if (webpagePreferences._userContentController) 2321 [NSException raise:NSInvalidArgumentException format:@"Updating WKUserContentController is only supported during decidePolicyForNavigationAction."]; 2318 2322 auto data = webpagePreferences->_websitePolicies->data(); 2319 if (data.websiteDataStoreParameters)2320 [NSException raise:NSInvalidArgumentException format:@"Updating WKWebsiteDataStore is only supported during decidePolicyForNavigationAction."];2321 2323 _page->updateWebsitePolicies(WTFMove(data)); 2322 2324 } -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferences.mm
r256715 r259307 28 28 29 29 #import "APICustomHeaderFields.h" 30 #import "WKUserContentControllerInternal.h" 30 31 #import "WKWebpagePreferencesInternal.h" 31 32 #import "WKWebsiteDataStoreInternal.h" … … 277 278 } 278 279 280 - (WKUserContentController *)_userContentController 281 { 282 return wrapper(_websitePolicies->userContentController()); 283 } 284 285 - (void)_setUserContentController:(WKUserContentController *)userContentController 286 { 287 _websitePolicies->setUserContentController(userContentController->_userContentControllerProxy.get()); 288 } 289 279 290 - (void)_setCustomUserAgent:(NSString *)customUserAgent 280 291 { -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h
r253090 r259307 28 28 #import <WebKit/WKFoundation.h> 29 29 #import <WebKit/WKWebpagePreferences.h> 30 #import <WebKit/WKWebsiteDataStore.h>31 30 32 31 typedef NS_ENUM(NSInteger, _WKWebsiteAutoplayPolicy) { … … 57 56 58 57 @class _WKCustomHeaderFields; 58 @class WKUserContentController; 59 @class WKWebsiteDataStore; 59 60 60 61 @interface WKWebpagePreferences (WKPrivate) … … 66 67 @property (nonatomic, setter=_setPopUpPolicy:) _WKWebsitePopUpPolicy _popUpPolicy; 67 68 @property (nonatomic, strong, setter=_setWebsiteDataStore:) WKWebsiteDataStore *_websiteDataStore; 69 @property (nonatomic, strong, setter=_setUserContentController:) WKUserContentController *_userContentController WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 68 70 @property (nonatomic, copy, setter=_setCustomUserAgent:) NSString *_customUserAgent; 69 71 @property (nonatomic, copy, setter=_setCustomUserAgentAsSiteSpecificQuirks:) NSString *_customUserAgentAsSiteSpecificQuirks; -
trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.mm
r259177 r259307 607 607 608 608 if (apiWebsitePolicies) { 609 if (a uto* websiteDataStore = apiWebsitePolicies->websiteDataStore()) {610 if (subframeNavigation)611 [NSException raise:NSInvalidArgumentException format:@"WKWebpagePreferences._websiteDataStore must be nil for subframe navigations."];612 }609 if (apiWebsitePolicies->websiteDataStore() && subframeNavigation) 610 [NSException raise:NSInvalidArgumentException format:@"WKWebpagePreferences._websiteDataStore must be nil for subframe navigations."]; 611 if (apiWebsitePolicies->userContentController() && subframeNavigation) 612 [NSException raise:NSInvalidArgumentException format:@"WKWebpagePreferences._userContentController must be nil for subframe navigations."]; 613 613 if (!apiWebsitePolicies->customUserAgent().isNull() && subframeNavigation) 614 614 [NSException raise:NSInvalidArgumentException format:@"WKWebpagePreferences._customUserAgent must be nil for subframe navigations."]; -
trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp
r257963 r259307 28 28 29 29 #include "APINavigation.h" 30 #include "APIWebsitePolicies.h" 30 31 #include "DrawingAreaProxy.h" 31 32 #include "FormDataReference.h" … … 55 56 #define RELEASE_LOG_ERROR_IF_ALLOWED(channel, fmt, ...) RELEASE_LOG_ERROR_IF(m_page.isAlwaysOnLoggingAllowed(), channel, "%p - ProvisionalPageProxy::" fmt, this, ##__VA_ARGS__) 56 57 57 ProvisionalPageProxy::ProvisionalPageProxy(WebPageProxy& page, Ref<WebProcessProxy>&& process, std::unique_ptr<SuspendedPageProxy> suspendedPage, uint64_t navigationID, bool isServerRedirect, const WebCore::ResourceRequest& request, ProcessSwapRequestedByClient processSwapRequestedByClient )58 ProvisionalPageProxy::ProvisionalPageProxy(WebPageProxy& page, Ref<WebProcessProxy>&& process, std::unique_ptr<SuspendedPageProxy> suspendedPage, uint64_t navigationID, bool isServerRedirect, const WebCore::ResourceRequest& request, ProcessSwapRequestedByClient processSwapRequestedByClient, API::WebsitePolicies* websitePolicies) 58 59 : m_page(page) 59 60 , m_webPageID(suspendedPage ? suspendedPage->webPageID() : PageIdentifier::generate()) … … 89 90 } 90 91 91 initializeWebPage( );92 initializeWebPage(websitePolicies); 92 93 93 94 m_page.inspectorController().didCreateProvisionalPage(*this); … … 136 137 } 137 138 138 void ProvisionalPageProxy::initializeWebPage( )139 void ProvisionalPageProxy::initializeWebPage(RefPtr<API::WebsitePolicies>&& websitePolicies) 139 140 { 140 141 m_drawingArea = m_page.pageClient().createDrawingAreaProxy(m_process); 141 142 142 auto parameters = m_page.creationParameters(m_process, *m_drawingArea );143 auto parameters = m_page.creationParameters(m_process, *m_drawingArea, WTFMove(websitePolicies)); 143 144 parameters.isProcessSwap = true; 144 145 m_process->send(Messages::WebProcess::CreateWebPage(m_webPageID, parameters), 0); … … 169 170 } 170 171 171 void ProvisionalPageProxy::goToBackForwardItem(API::Navigation& navigation, WebBackForwardListItem& item, Optional<WebsitePoliciesData>&& websitePolicies)172 void ProvisionalPageProxy::goToBackForwardItem(API::Navigation& navigation, WebBackForwardListItem& item, RefPtr<API::WebsitePolicies>&& websitePolicies) 172 173 { 173 174 RELEASE_LOG_IF_ALLOWED(ProcessSwapping, "goToBackForwardItem: pageProxyID=%" PRIu64 " webPageID=%" PRIu64, m_page.identifier().toUInt64(), m_webPageID.toUInt64()); … … 180 181 return &item != targetItem; 181 182 }); 183 184 Optional<WebsitePoliciesData> websitePoliciesData; 185 if (websitePolicies) 186 websitePoliciesData = websitePolicies->data(); 187 182 188 send(Messages::WebPage::UpdateBackForwardListForReattach(WTFMove(itemStates))); 183 send(Messages::WebPage::GoToBackForwardItem(navigation.navigationID(), item.itemID(), *navigation.backForwardFrameLoadType(), WebCore::ShouldTreatAsContinuingLoad::Yes, WTFMove(websitePolicies )));189 send(Messages::WebPage::GoToBackForwardItem(navigation.navigationID(), item.itemID(), *navigation.backForwardFrameLoadType(), WebCore::ShouldTreatAsContinuingLoad::Yes, WTFMove(websitePoliciesData))); 184 190 m_process->startResponsivenessTimer(); 185 191 } -
trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.h
r257963 r259307 70 70 WTF_MAKE_FAST_ALLOCATED; 71 71 public: 72 ProvisionalPageProxy(WebPageProxy&, Ref<WebProcessProxy>&&, std::unique_ptr<SuspendedPageProxy>, uint64_t navigationID, bool isServerRedirect, const WebCore::ResourceRequest&, ProcessSwapRequestedByClient );72 ProvisionalPageProxy(WebPageProxy&, Ref<WebProcessProxy>&&, std::unique_ptr<SuspendedPageProxy>, uint64_t navigationID, bool isServerRedirect, const WebCore::ResourceRequest&, ProcessSwapRequestedByClient, API::WebsitePolicies*); 73 73 ~ProvisionalPageProxy(); 74 74 … … 95 95 void loadData(API::Navigation&, const IPC::DataReference&, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData, NavigatingToAppBoundDomain, NavigatedAwayFromAppBoundDomain, Optional<WebsitePoliciesData>&& = WTF::nullopt); 96 96 void loadRequest(API::Navigation&, WebCore::ResourceRequest&&, API::Object* userData, NavigatingToAppBoundDomain, NavigatedAwayFromAppBoundDomain, Optional<WebsitePoliciesData>&& = WTF::nullopt); 97 void goToBackForwardItem(API::Navigation&, WebBackForwardListItem&, Optional<WebsitePoliciesData>&&);97 void goToBackForwardItem(API::Navigation&, WebBackForwardListItem&, RefPtr<API::WebsitePolicies>&&); 98 98 void cancel(); 99 99 … … 144 144 #endif 145 145 146 void initializeWebPage( );146 void initializeWebPage(RefPtr<API::WebsitePolicies>&&); 147 147 bool validateInput(WebCore::FrameIdentifier, const Optional<uint64_t>& navigationID = WTF::nullopt); 148 148 -
trunk/Source/WebKit/UIProcess/UserContent/WebUserContentControllerProxy.cpp
r257552 r259307 97 97 #endif 98 98 99 void WebUserContentControllerProxy::addProcess(WebProcessProxy& webProcessProxy , WebPageCreationParameters& parameters)99 void WebUserContentControllerProxy::addProcess(WebProcessProxy& webProcessProxy) 100 100 { 101 101 ASSERT(!m_processes.hasNullReferences()); … … 103 103 if (m_processes.add(webProcessProxy).isNewEntry) 104 104 webProcessProxy.addMessageReceiver(Messages::WebUserContentControllerProxy::messageReceiverName(), identifier(), *this); 105 106 ASSERT(parameters.userContentWorlds.isEmpty()); 105 } 106 107 UserContentControllerParameters WebUserContentControllerProxy::parameters() const 108 { 109 UserContentControllerParameters parameters; 110 107 111 for (const auto& world : m_contentWorlds) 108 112 parameters.userContentWorlds.append(world.key->worldData()); 109 113 110 ASSERT(parameters.userScripts.isEmpty());111 114 for (auto userScript : m_userScripts->elementsOfType<API::UserScript>()) 112 115 parameters.userScripts.append({ userScript->identifier(), userScript->contentWorld().identifier(), userScript->userScript() }); 113 116 114 ASSERT(parameters.userStyleSheets.isEmpty());115 117 for (auto userStyleSheet : m_userStyleSheets->elementsOfType<API::UserStyleSheet>()) 116 118 parameters.userStyleSheets.append({ userStyleSheet->identifier(), userStyleSheet->contentWorld().identifier(), userStyleSheet->userStyleSheet() }); 117 119 118 ASSERT(parameters.messageHandlers.isEmpty());119 120 for (auto& handler : m_scriptMessageHandlers.values()) 120 121 parameters.messageHandlers.append({ handler->identifier(), handler->world().identifier(), handler->name() }); 121 122 122 123 #if ENABLE(CONTENT_EXTENSIONS) 123 ASSERT(parameters.contentRuleLists.isEmpty());124 124 parameters.contentRuleLists = contentRuleListData(); 125 125 #endif 126 } 127 128 #if ENABLE(CONTENT_EXTENSIONS) 129 Vector<std::pair<String, WebCompiledContentRuleListData>> WebUserContentControllerProxy::contentRuleListData() 126 127 return parameters; 128 } 129 130 #if ENABLE(CONTENT_EXTENSIONS) 131 Vector<std::pair<String, WebCompiledContentRuleListData>> WebUserContentControllerProxy::contentRuleListData() const 130 132 { 131 133 Vector<std::pair<String, WebCompiledContentRuleListData>> data; -
trunk/Source/WebKit/UIProcess/UserContent/WebUserContentControllerProxy.h
r257552 r259307 63 63 class WebCompiledContentRuleListData; 64 64 struct WebPageCreationParameters; 65 struct UserContentControllerParameters; 65 66 enum class InjectUserScriptImmediately : bool; 66 67 … … 76 77 static WebUserContentControllerProxy* get(UserContentControllerIdentifier); 77 78 78 void addProcess(WebProcessProxy&, WebPageCreationParameters&); 79 UserContentControllerParameters parameters() const; 80 81 void addProcess(WebProcessProxy&); 79 82 void removeProcess(WebProcessProxy&); 80 83 … … 106 109 void removeAllContentRuleLists(); 107 110 const HashMap<String, RefPtr<API::ContentRuleList>>& contentExtensionRules() { return m_contentRuleLists; } 108 Vector<std::pair<String, WebCompiledContentRuleListData>> contentRuleListData() ;111 Vector<std::pair<String, WebCompiledContentRuleListData>> contentRuleListData() const; 109 112 #endif 110 113 -
trunk/Source/WebKit/UIProcess/WebPageProxy.cpp
r259275 r259307 3161 3161 } 3162 3162 3163 void WebPageProxy::receivedNavigationPolicyDecision(PolicyAction policyAction, API::Navigation* navigation, ProcessSwapRequestedByClient processSwapRequestedByClient, WebFrameProxy& frame, API::WebsitePolicies*policies, Ref<PolicyDecisionSender>&& sender)3163 void WebPageProxy::receivedNavigationPolicyDecision(PolicyAction policyAction, API::Navigation* navigation, ProcessSwapRequestedByClient processSwapRequestedByClient, WebFrameProxy& frame, RefPtr<API::WebsitePolicies>&& policies, Ref<PolicyDecisionSender>&& sender) 3164 3164 { 3165 3165 Ref<WebsiteDataStore> websiteDataStore = m_websiteDataStore.copyRef(); 3166 Optional<WebsitePoliciesData> data;3167 3166 if (policies) { 3168 data = policies->data();3169 3167 if (policies->websiteDataStore() && policies->websiteDataStore() != websiteDataStore.ptr()) { 3170 3168 websiteDataStore = *policies->websiteDataStore(); 3171 3169 processSwapRequestedByClient = ProcessSwapRequestedByClient::Yes; 3172 3170 } 3171 if (policies->userContentController() && policies->userContentController() != m_userContentController.ptr()) 3172 processSwapRequestedByClient = ProcessSwapRequestedByClient::Yes; 3173 3173 } 3174 3174 3175 3175 if (navigation && !navigation->userContentExtensionsEnabled()) { 3176 if (! data)3177 data = WebsitePoliciesData { };3178 data->contentBlockersEnabled = false;3176 if (!policies) 3177 policies = API::WebsitePolicies::create(); 3178 policies->setContentBlockersEnabled(false); 3179 3179 } 3180 3180 3181 3181 #if ENABLE(DEVICE_ORIENTATION) 3182 if (navigation && (! data || data->deviceOrientationAndMotionAccessState== WebCore::DeviceOrientationOrMotionPermissionState::Prompt)) {3182 if (navigation && (!policies || policies->deviceOrientationAndMotionAccessState() == WebCore::DeviceOrientationOrMotionPermissionState::Prompt)) { 3183 3183 auto deviceOrientationPermission = websiteDataStore->deviceOrientationAndMotionAccessController().cachedDeviceOrientationPermission(SecurityOriginData::fromURL(navigation->currentRequest().url())); 3184 3184 if (deviceOrientationPermission != WebCore::DeviceOrientationOrMotionPermissionState::Prompt) { 3185 if (! data)3186 data = WebsitePoliciesData { };3187 data->deviceOrientationAndMotionAccessState = deviceOrientationPermission;3185 if (!policies) 3186 policies = API::WebsitePolicies::create(); 3187 policies->setDeviceOrientationAndMotionAccessState(deviceOrientationPermission); 3188 3188 } 3189 3189 } … … 3199 3199 3200 3200 if (policyAction != PolicyAction::Use || !frame.isMainFrame() || !navigation) { 3201 receivedPolicyDecision(policyAction, navigation, WTFMove( data), WTFMove(sender));3201 receivedPolicyDecision(policyAction, navigation, WTFMove(policies), WTFMove(sender)); 3202 3202 return; 3203 3203 } … … 3213 3213 3214 3214 process().processPool().processForNavigation(*this, *navigation, sourceProcess.copyRef(), sourceURL, processSwapRequestedByClient, WTFMove(websiteDataStore), [this, protectedThis = makeRef(*this), policyAction, navigation = makeRef(*navigation), sourceProcess = sourceProcess.copyRef(), 3215 data = WTFMove(data), sender = WTFMove(sender), processSwapRequestedByClient] (Ref<WebProcessProxy>&& processForNavigation, SuspendedPageProxy* destinationSuspendedPage, const String& reason) mutable {3215 policies = WTFMove(policies), sender = WTFMove(sender), processSwapRequestedByClient] (Ref<WebProcessProxy>&& processForNavigation, SuspendedPageProxy* destinationSuspendedPage, const String& reason) mutable { 3216 3216 // If the navigation has been destroyed, then no need to proceed. 3217 3217 if (isClosed() || !navigationState().hasNavigation(navigation->navigationID())) { 3218 receivedPolicyDecision(policyAction, navigation.ptr(), WTFMove( data), WTFMove(sender));3218 receivedPolicyDecision(policyAction, navigation.ptr(), WTFMove(policies), WTFMove(sender)); 3219 3219 return; 3220 3220 } … … 3238 3238 suspendedPage = nullptr; 3239 3239 3240 continueNavigationInNewProcess(navigation, WTFMove(suspendedPage), WTFMove(processForNavigation), processSwapRequestedByClient, WTFMove(data));3240 continueNavigationInNewProcess(navigation, WTFMove(suspendedPage), WTFMove(processForNavigation), processSwapRequestedByClient, std::exchange(policies, nullptr)); 3241 3241 } 3242 3242 3243 receivedPolicyDecision(policyAction, navigation.ptr(), shouldProcessSwap ? WTF::nullopt : WTFMove(data), WTFMove(sender), shouldProcessSwap ? WillContinueLoadInNewProcess::Yes : WillContinueLoadInNewProcess::No);3243 receivedPolicyDecision(policyAction, navigation.ptr(), shouldProcessSwap ? nullptr : WTFMove(policies), WTFMove(sender), shouldProcessSwap ? WillContinueLoadInNewProcess::Yes : WillContinueLoadInNewProcess::No); 3244 3244 }); 3245 3245 } 3246 3246 3247 void WebPageProxy::receivedPolicyDecision(PolicyAction action, API::Navigation* navigation, Optional<WebsitePoliciesData>&& websitePolicies, Ref<PolicyDecisionSender>&& sender, WillContinueLoadInNewProcess willContinueLoadInNewProcess)3247 void WebPageProxy::receivedPolicyDecision(PolicyAction action, API::Navigation* navigation, RefPtr<API::WebsitePolicies>&& websitePolicies, Ref<PolicyDecisionSender>&& sender, WillContinueLoadInNewProcess willContinueLoadInNewProcess) 3248 3248 { 3249 3249 if (!hasRunningProcess()) { … … 3270 3270 m_decidePolicyForResponseRequest = { }; 3271 3271 } 3272 3273 sender->send(PolicyDecision { sender->identifier(), isNavigatingToAppBoundDomain(), hasNavigatedAwayFromAppBoundDomain(), action, navigation ? navigation->navigationID() : 0, downloadID, WTFMove(websitePolicies) }); 3272 3273 Optional<WebsitePoliciesData> websitePoliciesData; 3274 if (websitePolicies) 3275 websitePoliciesData = websitePolicies->data(); 3276 3277 sender->send(PolicyDecision { sender->identifier(), isNavigatingToAppBoundDomain(), hasNavigatedAwayFromAppBoundDomain(), action, navigation ? navigation->navigationID() : 0, downloadID, WTFMove(websitePoliciesData) }); 3274 3278 } 3275 3279 … … 3313 3317 } 3314 3318 3315 void WebPageProxy::continueNavigationInNewProcess(API::Navigation& navigation, std::unique_ptr<SuspendedPageProxy>&& suspendedPage, Ref<WebProcessProxy>&& newProcess, ProcessSwapRequestedByClient processSwapRequestedByClient, Optional<WebsitePoliciesData>&& websitePolicies)3319 void WebPageProxy::continueNavigationInNewProcess(API::Navigation& navigation, std::unique_ptr<SuspendedPageProxy>&& suspendedPage, Ref<WebProcessProxy>&& newProcess, ProcessSwapRequestedByClient processSwapRequestedByClient, RefPtr<API::WebsitePolicies>&& websitePolicies) 3316 3320 { 3317 3321 RELEASE_LOG_IF_ALLOWED(Loading, "continueNavigationInNewProcess: newProcessPID = %i, hasSuspendedPage = %i", newProcess->processIdentifier(), !!suspendedPage); … … 3326 3330 } 3327 3331 3328 m_provisionalPage = makeUnique<ProvisionalPageProxy>(*this, WTFMove(newProcess), WTFMove(suspendedPage), navigation.navigationID(), navigation.currentRequestIsRedirect(), navigation.currentRequest(), processSwapRequestedByClient );3332 m_provisionalPage = makeUnique<ProvisionalPageProxy>(*this, WTFMove(newProcess), WTFMove(suspendedPage), navigation.navigationID(), navigation.currentRequestIsRedirect(), navigation.currentRequest(), processSwapRequestedByClient, websitePolicies.get()); 3329 3333 3330 3334 auto continuation = [this, protectedThis = makeRef(*this), navigation = makeRef(navigation), websitePolicies = WTFMove(websitePolicies)]() mutable { … … 3345 3349 } 3346 3350 3351 Optional<WebsitePoliciesData> websitePoliciesData; 3352 if (websitePolicies) 3353 websitePoliciesData = websitePolicies->data(); 3354 3347 3355 // FIXME: Work out timing of responding with the last policy delegate, etc 3348 3356 ASSERT(!navigation->currentRequest().isEmpty()); 3349 3357 if (auto& substituteData = navigation->substituteData()) 3350 m_provisionalPage->loadData(navigation, { substituteData->content.data(), substituteData->content.size() }, substituteData->MIMEType, substituteData->encoding, substituteData->baseURL, substituteData->userData.get(), isNavigatingToAppBoundDomain(), hasNavigatedAwayFromAppBoundDomain(), WTFMove(websitePolicies ));3358 m_provisionalPage->loadData(navigation, { substituteData->content.data(), substituteData->content.size() }, substituteData->MIMEType, substituteData->encoding, substituteData->baseURL, substituteData->userData.get(), isNavigatingToAppBoundDomain(), hasNavigatedAwayFromAppBoundDomain(), WTFMove(websitePoliciesData)); 3351 3359 else 3352 m_provisionalPage->loadRequest(navigation, ResourceRequest { navigation->currentRequest() }, nullptr, isNavigatingToAppBoundDomain(), hasNavigatedAwayFromAppBoundDomain(), WTFMove(websitePolicies ));3360 m_provisionalPage->loadRequest(navigation, ResourceRequest { navigation->currentRequest() }, nullptr, isNavigatingToAppBoundDomain(), hasNavigatedAwayFromAppBoundDomain(), WTFMove(websitePoliciesData)); 3353 3361 }; 3354 3362 if (m_inspectorController->shouldPauseLoading(*m_provisionalPage)) … … 5097 5105 #if ENABLE(CONTENT_FILTERING) 5098 5106 if (frame.didHandleContentFilterUnblockNavigation(request)) 5099 return receivedPolicyDecision(PolicyAction::Ignore, m_navigationState->navigation(navigationID), WTF::nullopt, WTFMove(sender));5107 return receivedPolicyDecision(PolicyAction::Ignore, m_navigationState->navigation(navigationID), nullptr, WTFMove(sender)); 5100 5108 #endif 5101 5109 … … 5123 5131 navigation->setEffectiveContentMode(effectiveContentModeAfterAdjustingPolicies(*policies, navigation->currentRequest())); 5124 5132 } 5125 receivedNavigationPolicyDecision(policyAction, navigation.get(), processSwapRequestedByClient, frame, policies.get(), WTFMove(sender));5133 receivedNavigationPolicyDecision(policyAction, navigation.get(), processSwapRequestedByClient, frame, WTFMove(policies), WTFMove(sender)); 5126 5134 }; 5127 5135 … … 5305 5313 }); 5306 5314 5307 receivedPolicyDecision(policyAction, nullptr, WTF::nullopt, WTFMove(sender));5315 receivedPolicyDecision(policyAction, nullptr, nullptr, WTFMove(sender)); 5308 5316 }, ShouldExpectSafeBrowsingResult::No, ShouldExpectAppBoundDomainResult::No)); 5309 5317 … … 5353 5361 }); 5354 5362 5355 receivedPolicyDecision(policyAction, navigation.get(), WTF::nullopt, WTFMove(sender));5363 receivedPolicyDecision(policyAction, navigation.get(), nullptr, WTFMove(sender)); 5356 5364 }, ShouldExpectSafeBrowsingResult::No, ShouldExpectAppBoundDomainResult::No)); 5357 5365 if (m_policyClient) … … 7649 7657 } 7650 7658 7651 WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& process, DrawingAreaProxy& drawingArea )7659 WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& process, DrawingAreaProxy& drawingArea, RefPtr<API::WebsitePolicies>&& websitePolicies) 7652 7660 { 7653 7661 WebPageCreationParameters parameters; … … 7778 7786 parameters.hasResourceLoadClient = !!m_resourceLoadClient; 7779 7787 7780 process.addWebUserContentControllerProxy(m_userContentController, parameters); 7788 std::reference_wrapper<WebUserContentControllerProxy> userContentController(m_userContentController.get()); 7789 if (auto* userContentControllerFromWebsitePolicies = websitePolicies ? websitePolicies->userContentController() : nullptr) 7790 userContentController = *userContentControllerFromWebsitePolicies; 7791 process.addWebUserContentControllerProxy(userContentController); 7792 parameters.userContentControllerParameters = userContentController.get().parameters(); 7781 7793 7782 7794 parameters.shouldCaptureAudioInUIProcess = preferences().captureAudioInUIProcessEnabled(); -
trunk/Source/WebKit/UIProcess/WebPageProxy.h
r259242 r259307 1124 1124 class PolicyDecisionSender; 1125 1125 enum class WillContinueLoadInNewProcess : bool { No, Yes }; 1126 void receivedPolicyDecision(WebCore::PolicyAction, API::Navigation*, Optional<WebsitePoliciesData>&&, Ref<PolicyDecisionSender>&&, WillContinueLoadInNewProcess = WillContinueLoadInNewProcess::No);1127 void receivedNavigationPolicyDecision(WebCore::PolicyAction, API::Navigation*, ProcessSwapRequestedByClient, WebFrameProxy&, API::WebsitePolicies*, Ref<PolicyDecisionSender>&&);1126 void receivedPolicyDecision(WebCore::PolicyAction, API::Navigation*, RefPtr<API::WebsitePolicies>&&, Ref<PolicyDecisionSender>&&, WillContinueLoadInNewProcess = WillContinueLoadInNewProcess::No); 1127 void receivedNavigationPolicyDecision(WebCore::PolicyAction, API::Navigation*, ProcessSwapRequestedByClient, WebFrameProxy&, RefPtr<API::WebsitePolicies>&&, Ref<PolicyDecisionSender>&&); 1128 1128 1129 1129 void backForwardRemovedItem(const WebCore::BackForwardItemIdentifier&); … … 1231 1231 void didCancelForOpenPanel(); 1232 1232 1233 WebPageCreationParameters creationParameters(WebProcessProxy&, DrawingAreaProxy& );1233 WebPageCreationParameters creationParameters(WebProcessProxy&, DrawingAreaProxy&, RefPtr<API::WebsitePolicies>&& = nullptr); 1234 1234 1235 1235 void handleDownloadRequest(DownloadProxy&); … … 2231 2231 void reportPageLoadResult(const WebCore::ResourceError& = { }); 2232 2232 2233 void continueNavigationInNewProcess(API::Navigation&, std::unique_ptr<SuspendedPageProxy>&&, Ref<WebProcessProxy>&&, ProcessSwapRequestedByClient, Optional<WebsitePoliciesData>&&);2233 void continueNavigationInNewProcess(API::Navigation&, std::unique_ptr<SuspendedPageProxy>&&, Ref<WebProcessProxy>&&, ProcessSwapRequestedByClient, RefPtr<API::WebsitePolicies>&&); 2234 2234 2235 2235 void setNeedsFontAttributes(bool); -
trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp
r259200 r259307 543 543 } 544 544 545 void WebProcessProxy::addWebUserContentControllerProxy(WebUserContentControllerProxy& proxy , WebPageCreationParameters& parameters)545 void WebProcessProxy::addWebUserContentControllerProxy(WebUserContentControllerProxy& proxy) 546 546 { 547 547 m_webUserContentControllerProxies.add(&proxy); 548 proxy.addProcess(*this , parameters);548 proxy.addProcess(*this); 549 549 } 550 550 -
trunk/Source/WebKit/UIProcess/WebProcessProxy.h
r259200 r259307 179 179 void removeVisitedLinkStoreUser(VisitedLinkStore&, WebPageProxyIdentifier); 180 180 181 void addWebUserContentControllerProxy(WebUserContentControllerProxy& , WebPageCreationParameters&);181 void addWebUserContentControllerProxy(WebUserContentControllerProxy&); 182 182 void didDestroyWebUserContentControllerProxy(WebUserContentControllerProxy&); 183 183 -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r259200 r259307 4035 4035 5C8DD37F1FE4519200F2A556 /* WebsiteAutoplayPolicy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebsiteAutoplayPolicy.h; sourceTree = "<group>"; }; 4036 4036 5C8DD3811FE455CA00F2A556 /* WebsiteAutoplayQuirk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebsiteAutoplayQuirk.h; sourceTree = "<group>"; }; 4037 5C9C5C022430535800BB6740 /* UserContentControllerParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserContentControllerParameters.h; sourceTree = "<group>"; }; 4038 5C9C5C032430535800BB6740 /* UserContentControllerParameters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserContentControllerParameters.cpp; sourceTree = "<group>"; }; 4037 4039 5C9E56801DF7F05500C9EE33 /* WKWebsitePolicies.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKWebsitePolicies.cpp; sourceTree = "<group>"; }; 4038 4040 5C9E56811DF7F05500C9EE33 /* WKWebsitePolicies.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebsitePolicies.h; sourceTree = "<group>"; }; … … 6045 6047 5C19A51F1FD0B14700EEA323 /* URLSchemeTaskParameters.h */, 6046 6048 41FBE821206D87F6000F0741 /* UserContentControllerIdentifier.h */, 6049 5C9C5C032430535800BB6740 /* UserContentControllerParameters.cpp */, 6050 5C9C5C022430535800BB6740 /* UserContentControllerParameters.h */, 6047 6051 1AC1336518565B5700F3EC05 /* UserData.cpp */, 6048 6052 1AC1336618565B5700F3EC05 /* UserData.h */, -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp
r259209 r259307 719 719 registerURLSchemeHandler(iterator.value, iterator.key); 720 720 721 m_userContentController->addContentWorlds(parameters.userContent Worlds);722 m_userContentController->addUserScripts(WTFMove(parameters.user Scripts), InjectUserScriptImmediately::No);723 m_userContentController->addUserStyleSheets(parameters.user StyleSheets);724 m_userContentController->addUserScriptMessageHandlers(parameters. messageHandlers);721 m_userContentController->addContentWorlds(parameters.userContentControllerParameters.userContentWorlds); 722 m_userContentController->addUserScripts(WTFMove(parameters.userContentControllerParameters.userScripts), InjectUserScriptImmediately::No); 723 m_userContentController->addUserStyleSheets(parameters.userContentControllerParameters.userStyleSheets); 724 m_userContentController->addUserScriptMessageHandlers(parameters.userContentControllerParameters.messageHandlers); 725 725 #if ENABLE(CONTENT_EXTENSIONS) 726 m_userContentController->addContentRuleLists(WTFMove(parameters. contentRuleLists));726 m_userContentController->addContentRuleLists(WTFMove(parameters.userContentControllerParameters.contentRuleLists)); 727 727 #endif 728 728 -
trunk/Source/WebKit/WebProcess/WebProcess.cpp
r259236 r259307 792 792 #endif 793 793 794 LOG_ERROR("Unhandled web process message '%s: %s' (destination: %" PRIu64 ")", decoder.messageReceiverName().toString().data(), decoder.messageName().toString().data(), decoder.destinationID());794 LOG_ERROR("Unhandled web process message '%s::%s' (destination: %" PRIu64 " pid: %d)", decoder.messageReceiverName().toString().data(), decoder.messageName().toString().data(), decoder.destinationID(), static_cast<int>(getCurrentProcessID())); 795 795 } 796 796 -
trunk/Tools/ChangeLog
r259295 r259307 1 2020-03-31 Alex Christensen <achristensen@webkit.org> 2 3 Add SPI WKWebpagePreferences._userContentController 4 https://bugs.webkit.org/show_bug.cgi?id=209795 5 6 Reviewed by Tim Hatcher. 7 8 * TestWebKitAPI/SourcesCocoa.txt: 9 * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: 10 * TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadDelegate.mm: 11 (-[TestUIDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]): Deleted. 12 * TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm: 13 * TestWebKitAPI/cocoa/TestUIDelegate.h: Added. 14 * TestWebKitAPI/cocoa/TestUIDelegate.mm: Added. 15 (-[TestUIDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]): 16 (-[TestUIDelegate waitForAlert]): 17 1 18 2020-03-31 Aakash Jain <aakash_jain@apple.com> 2 19 -
trunk/Tools/TestWebKitAPI/SourcesCocoa.txt
r252023 r259307 29 29 cocoa/TestNavigationDelegate.mm 30 30 cocoa/TestProtocol.mm 31 cocoa/TestUIDelegate.mm 31 32 cocoa/TestWKWebView.mm 32 33 -
trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
r259200 r259307 2085 2085 5CB5B3BD1FFC517E00C27BB0 /* FrameHandleSerialization.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FrameHandleSerialization.mm; sourceTree = "<group>"; }; 2086 2086 5CB7AFDB23C451E400E49CF3 /* ResourceLoadDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ResourceLoadDelegate.mm; sourceTree = "<group>"; }; 2087 5CBAA7F324327F6B00564A8B /* TestUIDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestUIDelegate.h; path = cocoa/TestUIDelegate.h; sourceTree = "<group>"; }; 2088 5CBAA7F424327F6B00564A8B /* TestUIDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = TestUIDelegate.mm; path = cocoa/TestUIDelegate.mm; sourceTree = "<group>"; }; 2087 2089 5CCB10DD2134579C00AC5AF0 /* ResponsivenessTimerDoesntFireEarly.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ResponsivenessTimerDoesntFireEarly.mm; sourceTree = "<group>"; }; 2088 2090 5CCB10DE2134579D00AC5AF0 /* RestoreSessionStateWithoutNavigation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RestoreSessionStateWithoutNavigation.mm; sourceTree = "<group>"; }; … … 2902 2904 A14FC58D1B8AE36500D107EB /* TestProtocol.h */, 2903 2905 A14FC58E1B8AE36500D107EB /* TestProtocol.mm */, 2906 5CBAA7F324327F6B00564A8B /* TestUIDelegate.h */, 2907 5CBAA7F424327F6B00564A8B /* TestUIDelegate.mm */, 2904 2908 2EFF06D21D8AEDBB0004BB30 /* TestWKWebView.h */, 2905 2909 2EFF06D31D8AEDBB0004BB30 /* TestWKWebView.mm */, -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadDelegate.mm
r258017 r259307 30 30 #import "TCPServer.h" 31 31 #import "TestNavigationDelegate.h" 32 #import "TestUIDelegate.h" 32 33 #import "TestWKWebView.h" 33 34 #import <WebKit/WKWebViewPrivate.h> … … 78 79 if (_didCompleteWithError) 79 80 _didCompleteWithError(webView, resourceLoad, error, response); 80 }81 82 @end83 84 @interface TestUIDelegate : NSObject <WKUIDelegate>85 86 @property (nonatomic, copy) void (^runJavaScriptAlertPanelWithMessage)(WKWebView *, NSString *, WKFrameInfo *, void (^)(void));87 88 @end89 90 @implementation TestUIDelegate91 92 - (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler93 {94 if (_runJavaScriptAlertPanelWithMessage)95 _runJavaScriptAlertPanelWithMessage(webView, message, frame, completionHandler);96 else97 completionHandler();98 81 } 99 82 -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm
r258457 r259307 28 28 #import "PlatformUtilities.h" 29 29 #import "TestNavigationDelegate.h" 30 #import "TestUIDelegate.h" 30 31 #import "TestWKWebView.h" 31 32 #import <WebKit/WKMutableDictionary.h> … … 1724 1725 EXPECT_NE(pid1, [cookieWebView _webProcessIdentifier]); 1725 1726 } 1727 1728 TEST(WebpagePreferences, WebsitePoliciesUserContentController) 1729 { 1730 auto makeScript = [] (NSString *script) { 1731 return [[[WKUserScript alloc] initWithSource:script injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:YES] autorelease]; 1732 }; 1733 WKWebViewConfiguration *configuration = [[WKWebViewConfiguration new] autorelease]; 1734 [configuration.userContentController addUserScript:makeScript(@"alert('testAlert1')")]; 1735 TestWKWebView *webView = [[[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration] autorelease]; 1736 TestUIDelegate *uiDelegate = [[TestUIDelegate new] autorelease]; 1737 webView.UIDelegate = uiDelegate; 1738 TestNavigationDelegate *navigationDelegate = [[TestNavigationDelegate new] autorelease]; 1739 __block bool iframeExceptionThrown = false; 1740 __block RetainPtr<WKUserContentController> replacementUserContentController; 1741 navigationDelegate.decidePolicyForNavigationActionWithPreferences = ^(WKNavigationAction *action, WKWebpagePreferences *, void (^completionHandler)(WKNavigationActionPolicy, WKWebpagePreferences *)) { 1742 if ([action.request.URL.path hasSuffix:@"/simple-iframe.html"]) 1743 return completionHandler(WKNavigationActionPolicyAllow, nil); 1744 if ([action.request.URL.path hasSuffix:@"/simple.html"]) { 1745 @try { 1746 WKWebpagePreferences *preferences = [[WKWebpagePreferences new] autorelease]; 1747 preferences._userContentController = [[WKUserContentController new] autorelease]; 1748 return completionHandler(WKNavigationActionPolicyAllow, preferences); 1749 } @catch (NSException *exception) { 1750 iframeExceptionThrown = true; 1751 } 1752 return; 1753 } 1754 1755 EXPECT_TRUE([action.request.URL.path hasSuffix:@"/simple2.html"]); 1756 WKWebpagePreferences *preferences = [[WKWebpagePreferences new] autorelease]; 1757 replacementUserContentController = adoptNS([WKUserContentController new]); 1758 [replacementUserContentController addUserScript:makeScript(@"alert('testAlert2')")]; 1759 preferences._userContentController = replacementUserContentController.get(); 1760 completionHandler(WKNavigationActionPolicyAllow, preferences); 1761 }; 1762 webView.navigationDelegate = navigationDelegate; 1763 1764 [webView loadTestPageNamed:@"simple-iframe"]; 1765 EXPECT_WK_STREQ([uiDelegate waitForAlert], "testAlert1"); 1766 TestWebKitAPI::Util::run(&iframeExceptionThrown); 1767 1768 [webView loadTestPageNamed:@"simple2"]; 1769 EXPECT_WK_STREQ([uiDelegate waitForAlert], "testAlert2"); 1770 1771 bool caughtException = false; 1772 @try { 1773 WKWebpagePreferences *preferences = [[WKWebpagePreferences new] autorelease]; 1774 preferences._userContentController = [[WKUserContentController new] autorelease]; 1775 [webView _updateWebpagePreferences:preferences]; 1776 } @catch (NSException *exception) { 1777 caughtException = true; 1778 } 1779 EXPECT_TRUE(caughtException); 1780 1781 // FIXME: Make _addUserScriptImmediately work successfully after using WKWebpagePreferences._userContentController 1782 }
Note: See TracChangeset
for help on using the changeset viewer.