Changeset 234154 in webkit
- Timestamp:
- Jul 24, 2018 10:27:15 AM (6 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r234153 r234154 1 2018-07-24 Alex Christensen <achristensen@webkit.org> 2 3 Reduce getters/setters in WebFramePolicyListenerProxy 4 https://bugs.webkit.org/show_bug.cgi?id=187830 5 6 Reviewed by Dean Jackson. 7 8 This is a step towards making it a lambda, which has no getters or setters. 9 No change in behavior. 10 11 setApplyPolicyInNewProcessIfPossible can be replaced by passing another parameter. 12 This bit was just piggy-backing on the WebFramePolicyListenerProxy. 13 14 isMainFrame was only used in an assert, which has a corresponding ObjC exception in 15 NavigationState::NavigationClient::decidePolicyForNavigationAction for the one relevant client. 16 17 * UIProcess/API/C/WKFramePolicyListener.cpp: 18 (WKFramePolicyListenerUseInNewProcess): 19 (useWithPolicies): 20 (WKFramePolicyListenerUseWithPolicies): 21 (WKFramePolicyListenerUseInNewProcessWithPolicies): 22 * UIProcess/Cocoa/NavigationState.mm: 23 (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction): 24 * UIProcess/WebFramePolicyListenerProxy.cpp: 25 (WebKit::WebFramePolicyListenerProxy::receivedPolicyDecision): 26 (WebKit::WebFramePolicyListenerProxy::use): 27 (WebKit::WebFramePolicyListenerProxy::download): 28 (WebKit::WebFramePolicyListenerProxy::ignore): 29 (WebKit::WebFramePolicyListenerProxy::isMainFrame const): Deleted. 30 * UIProcess/WebFramePolicyListenerProxy.h: 31 (WebKit::WebFramePolicyListenerProxy::setApplyPolicyInNewProcessIfPossible): Deleted. 32 (WebKit::WebFramePolicyListenerProxy::applyPolicyInNewProcessIfPossible const): Deleted. 33 * UIProcess/WebFrameProxy.cpp: 34 (WebKit::WebFrameProxy::receivedPolicyDecision): 35 * UIProcess/WebFrameProxy.h: 36 * UIProcess/WebPageProxy.cpp: 37 (WebKit::WebPageProxy::receivedPolicyDecision): 38 (WebKit::WebPageProxy::decidePolicyForNavigationAction): 39 * UIProcess/WebPageProxy.h: 40 * UIProcess/WebProcessPool.cpp: 41 (WebKit::WebProcessPool::processForNavigation): 42 (WebKit::WebProcessPool::processForNavigationInternal): 43 * UIProcess/WebProcessPool.h: 44 1 45 2018-07-24 Alex Christensen <achristensen@webkit.org> 2 46 -
trunk/Source/WebKit/UIProcess/API/C/WKFramePolicyListener.cpp
r233986 r234154 32 32 #include "WebFramePolicyListenerProxy.h" 33 33 #include "WebFrameProxy.h" 34 #include "WebProcessPool.h" 34 35 #include "WebsitePoliciesData.h" 35 36 … … 48 49 void WKFramePolicyListenerUseInNewProcess(WKFramePolicyListenerRef policyListenerRef) 49 50 { 50 toImpl(policyListenerRef)->setApplyPolicyInNewProcessIfPossible(true); 51 toImpl(policyListenerRef)->use(std::nullopt); 51 toImpl(policyListenerRef)->use(std::nullopt, ShouldProcessSwapIfPossible::Yes); 52 52 } 53 53 54 void WKFramePolicyListenerUseWithPolicies(WKFramePolicyListenerRef policyListenerRef, WKWebsitePoliciesRef websitePolicies)54 static void useWithPolicies(WKFramePolicyListenerRef policyListenerRef, WKWebsitePoliciesRef websitePolicies, ShouldProcessSwapIfPossible shouldProcessSwapIfPossible) 55 55 { 56 56 auto data = toImpl(websitePolicies)->data(); … … 59 59 auto& sessionID = data.websiteDataStoreParameters->networkSessionParameters.sessionID; 60 60 RELEASE_ASSERT_WITH_MESSAGE(sessionID.isEphemeral() || sessionID == PAL::SessionID::defaultSessionID(), "If WebsitePolicies specifies a WebsiteDataStore, the data store's session must be default or non-persistent."); 61 RELEASE_ASSERT_WITH_MESSAGE(toImpl(policyListenerRef)->isMainFrame(), "WebsitePolicies cannot specify a WebsiteDataStore for subframe navigations.");62 61 63 62 toImpl(policyListenerRef)->changeWebsiteDataStore(toImpl(websitePolicies)->websiteDataStore()->websiteDataStore()); 64 63 } 65 64 66 toImpl(policyListenerRef)->use(WTFMove(data)); 65 toImpl(policyListenerRef)->use(WTFMove(data), shouldProcessSwapIfPossible); 66 } 67 68 void WKFramePolicyListenerUseWithPolicies(WKFramePolicyListenerRef policyListenerRef, WKWebsitePoliciesRef websitePolicies) 69 { 70 useWithPolicies(policyListenerRef, websitePolicies, ShouldProcessSwapIfPossible::No); 67 71 } 68 72 69 73 void WKFramePolicyListenerUseInNewProcessWithPolicies(WKFramePolicyListenerRef policyListenerRef, WKWebsitePoliciesRef websitePolicies) 70 74 { 71 toImpl(policyListenerRef)->setApplyPolicyInNewProcessIfPossible(true); 72 WKFramePolicyListenerUseWithPolicies(policyListenerRef, websitePolicies); 75 useWithPolicies(policyListenerRef, websitePolicies, ShouldProcessSwapIfPossible::Yes); 73 76 } 74 77 -
trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.mm
r233986 r234154 552 552 #pragma clang diagnostic pop 553 553 tryAppLink(WTFMove(navigationAction), mainFrameURLString, [actionPolicy, localListener = WTFMove(localListener), data = WTFMove(data)](bool followedLinkToApp) mutable { 554 localListener->setApplyPolicyInNewProcessIfPossible(actionPolicy == _WKNavigationActionPolicyAllowInNewProcess);555 554 if (followedLinkToApp) { 556 555 localListener->ignore(); … … 558 557 } 559 558 560 localListener->use(WTFMove(data) );559 localListener->use(WTFMove(data), actionPolicy == _WKNavigationActionPolicyAllowInNewProcess ? ShouldProcessSwapIfPossible::Yes : ShouldProcessSwapIfPossible::No); 561 560 }); 562 561 -
trunk/Source/WebKit/UIProcess/WebFramePolicyListenerProxy.cpp
r234153 r234154 41 41 } 42 42 43 void WebFramePolicyListenerProxy::receivedPolicyDecision(WebCore::PolicyAction action, std::optional<WebsitePoliciesData>&& data )43 void WebFramePolicyListenerProxy::receivedPolicyDecision(WebCore::PolicyAction action, std::optional<WebsitePoliciesData>&& data, ShouldProcessSwapIfPossible swap) 44 44 { 45 45 if (!m_frame) 46 46 return; 47 47 48 m_frame->receivedPolicyDecision(action, m_listenerID, m_navigation.get(), WTFMove(data) );48 m_frame->receivedPolicyDecision(action, m_listenerID, m_navigation.get(), WTFMove(data), swap); 49 49 m_frame = nullptr; 50 50 } … … 58 58 } 59 59 60 bool WebFramePolicyListenerProxy::isMainFrame() const61 {62 if (!m_frame)63 return false;64 65 return m_frame->isMainFrame();66 }67 68 60 void WebFramePolicyListenerProxy::setNavigation(Ref<API::Navigation>&& navigation) 69 61 { … … 71 63 } 72 64 73 void WebFramePolicyListenerProxy::use(std::optional<WebsitePoliciesData>&& data )65 void WebFramePolicyListenerProxy::use(std::optional<WebsitePoliciesData>&& data, ShouldProcessSwapIfPossible swap) 74 66 { 75 receivedPolicyDecision(WebCore::PolicyAction::Use, WTFMove(data) );67 receivedPolicyDecision(WebCore::PolicyAction::Use, WTFMove(data), swap); 76 68 } 77 69 78 70 void WebFramePolicyListenerProxy::download() 79 71 { 80 receivedPolicyDecision(WebCore::PolicyAction::Download, std::nullopt );72 receivedPolicyDecision(WebCore::PolicyAction::Download, std::nullopt, ShouldProcessSwapIfPossible::No); 81 73 } 82 74 83 75 void WebFramePolicyListenerProxy::ignore() 84 76 { 85 receivedPolicyDecision(WebCore::PolicyAction::Ignore, std::nullopt );77 receivedPolicyDecision(WebCore::PolicyAction::Ignore, std::nullopt, ShouldProcessSwapIfPossible::No); 86 78 } 87 79 -
trunk/Source/WebKit/UIProcess/WebFramePolicyListenerProxy.h
r234153 r234154 52 52 }; 53 53 54 enum class ShouldProcessSwapIfPossible { No, Yes }; 55 54 56 class WebFramePolicyListenerProxy : public API::ObjectImpl<API::Object::Type::FramePolicyListener> { 55 57 public: … … 60 62 } 61 63 62 void use(std::optional<WebsitePoliciesData>&& );64 void use(std::optional<WebsitePoliciesData>&&, ShouldProcessSwapIfPossible = ShouldProcessSwapIfPossible::No); 63 65 void download(); 64 66 void ignore(); … … 71 73 72 74 void changeWebsiteDataStore(WebsiteDataStore&); 73 bool isMainFrame() const;74 75 void setApplyPolicyInNewProcessIfPossible(bool applyPolicyInNewProcessIfPossible) { m_applyPolicyInNewProcessIfPossible = applyPolicyInNewProcessIfPossible; }76 bool applyPolicyInNewProcessIfPossible() const { return m_applyPolicyInNewProcessIfPossible; }77 75 78 76 private: 79 77 WebFramePolicyListenerProxy(WebFrameProxy*, uint64_t listenerID, PolicyListenerType); 80 78 81 void receivedPolicyDecision(WebCore::PolicyAction, std::optional<WebsitePoliciesData>&& );79 void receivedPolicyDecision(WebCore::PolicyAction, std::optional<WebsitePoliciesData>&&, ShouldProcessSwapIfPossible); 82 80 83 81 PolicyListenerType m_policyType; … … 85 83 uint64_t m_listenerID { 0 }; 86 84 RefPtr<API::Navigation> m_navigation; 87 bool m_applyPolicyInNewProcessIfPossible { false };88 85 }; 89 86 -
trunk/Source/WebKit/UIProcess/WebFrameProxy.cpp
r234153 r234154 179 179 } 180 180 181 void WebFrameProxy::receivedPolicyDecision(PolicyAction action, uint64_t listenerID, API::Navigation* navigation, std::optional<WebsitePoliciesData>&& data )181 void WebFrameProxy::receivedPolicyDecision(PolicyAction action, uint64_t listenerID, API::Navigation* navigation, std::optional<WebsitePoliciesData>&& data, ShouldProcessSwapIfPossible swap) 182 182 { 183 183 if (!m_page) … … 186 186 ASSERT(m_activeListener); 187 187 ASSERT(m_activeListener->listenerID() == listenerID); 188 m_page->receivedPolicyDecision(action, *this, listenerID, navigation, WTFMove(data) );188 m_page->receivedPolicyDecision(action, *this, listenerID, navigation, WTFMove(data), swap); 189 189 } 190 190 -
trunk/Source/WebKit/UIProcess/WebFrameProxy.h
r234009 r234154 53 53 class WebPageProxy; 54 54 class WebsiteDataStore; 55 enum class ShouldProcessSwapIfPossible; 55 56 enum class PolicyListenerType; 56 57 struct WebsitePoliciesData; … … 117 118 118 119 // Policy operations. 119 void receivedPolicyDecision(WebCore::PolicyAction, uint64_t listenerID, API::Navigation*, std::optional<WebsitePoliciesData>&& );120 void receivedPolicyDecision(WebCore::PolicyAction, uint64_t listenerID, API::Navigation*, std::optional<WebsitePoliciesData>&&, ShouldProcessSwapIfPossible); 120 121 121 122 WebFramePolicyListenerProxy& setUpPolicyListenerProxy(uint64_t listenerID, PolicyListenerType); -
trunk/Source/WebKit/UIProcess/WebPageProxy.cpp
r234143 r234154 2407 2407 } 2408 2408 2409 void WebPageProxy::receivedPolicyDecision(PolicyAction action, WebFrameProxy& frame, uint64_t listenerID, API::Navigation* navigation, std::optional<WebsitePoliciesData>&& websitePolicies )2409 void WebPageProxy::receivedPolicyDecision(PolicyAction action, WebFrameProxy& frame, uint64_t listenerID, API::Navigation* navigation, std::optional<WebsitePoliciesData>&& websitePolicies, ShouldProcessSwapIfPossible shouldProcessSwapIfPossible) 2410 2410 { 2411 2411 if (!isValid()) … … 2439 2439 2440 2440 if (action == PolicyAction::Use && navigation && frame.isMainFrame()) { 2441 auto proposedProcess = process().processPool().processForNavigation(*this, *navigation, activePolicyListener->applyPolicyInNewProcessIfPossible(), action);2441 auto proposedProcess = process().processPool().processForNavigation(*this, *navigation, shouldProcessSwapIfPossible, action); 2442 2442 2443 2443 if (proposedProcess.ptr() != &process()) { … … 4029 4029 #if ENABLE(CONTENT_FILTERING) 4030 4030 if (frame->didHandleContentFilterUnblockNavigation(request)) 4031 return receivedPolicyDecision(PolicyAction::Ignore, *frame, listenerID, &m_navigationState->navigation(newNavigationID), { });4031 return receivedPolicyDecision(PolicyAction::Ignore, *frame, listenerID, &m_navigationState->navigation(newNavigationID), std::nullopt, ShouldProcessSwapIfPossible::No); 4032 4032 #else 4033 4033 UNUSED_PARAM(newNavigationID); -
trunk/Source/WebKit/UIProcess/WebPageProxy.h
r234143 r234154 260 260 struct URLSchemeTaskParameters; 261 261 262 enum class ShouldProcessSwapIfPossible; 263 262 264 #if USE(QUICK_LOOK) 263 265 class QuickLookDocumentData; … … 907 909 #endif 908 910 909 void receivedPolicyDecision(WebCore::PolicyAction, WebFrameProxy&, uint64_t listenerID, API::Navigation* navigationID, std::optional<WebsitePoliciesData>&&);911 void receivedPolicyDecision(WebCore::PolicyAction, WebFrameProxy&, uint64_t listenerID, API::Navigation*, std::optional<WebsitePoliciesData>&&, ShouldProcessSwapIfPossible); 910 912 911 913 void backForwardRemovedItem(const WebCore::BackForwardItemIdentifier&); -
trunk/Source/WebKit/UIProcess/WebProcessPool.cpp
r234009 r234154 2108 2108 } 2109 2109 2110 Ref<WebProcessProxy> WebProcessPool::processForNavigation(WebPageProxy& page, const API::Navigation& navigation, boolshouldProcessSwapIfPossible, PolicyAction& action)2110 Ref<WebProcessProxy> WebProcessPool::processForNavigation(WebPageProxy& page, const API::Navigation& navigation, ShouldProcessSwapIfPossible shouldProcessSwapIfPossible, PolicyAction& action) 2111 2111 { 2112 2112 auto process = processForNavigationInternal(page, navigation, shouldProcessSwapIfPossible, action); … … 2126 2126 } 2127 2127 2128 Ref<WebProcessProxy> WebProcessPool::processForNavigationInternal(WebPageProxy& page, const API::Navigation& navigation, boolshouldProcessSwapIfPossible, PolicyAction& action)2129 { 2130 if (!m_configuration->processSwapsOnNavigation() && !shouldProcessSwapIfPossible)2128 Ref<WebProcessProxy> WebProcessPool::processForNavigationInternal(WebPageProxy& page, const API::Navigation& navigation, ShouldProcessSwapIfPossible shouldProcessSwapIfPossible, PolicyAction& action) 2129 { 2130 if (!m_configuration->processSwapsOnNavigation() && shouldProcessSwapIfPossible == ShouldProcessSwapIfPossible::No) 2131 2131 return page.process(); 2132 2132 … … 2172 2172 2173 2173 auto targetURL = navigation.currentRequest().url(); 2174 if ( !shouldProcessSwapIfPossible) {2174 if (shouldProcessSwapIfPossible == ShouldProcessSwapIfPossible::No) { 2175 2175 if (navigation.treatAsSameOriginNavigation()) 2176 2176 return page.process(); -
trunk/Source/WebKit/UIProcess/WebProcessPool.h
r233986 r234154 111 111 #endif 112 112 113 enum class ShouldProcessSwapIfPossible; 114 113 115 class WebProcessPool final : public API::ObjectImpl<API::Object::Type::ProcessPool>, public CanMakeWeakPtr<WebProcessPool>, private IPC::MessageReceiver { 114 116 public: … … 453 455 #endif 454 456 455 Ref<WebProcessProxy> processForNavigation(WebPageProxy&, const API::Navigation&, bool shouldProcessSwapIfPossible, WebCore::PolicyAction&);457 Ref<WebProcessProxy> processForNavigation(WebPageProxy&, const API::Navigation&, ShouldProcessSwapIfPossible, WebCore::PolicyAction&); 456 458 void registerSuspendedPageProxy(SuspendedPageProxy&); 457 459 void unregisterSuspendedPageProxy(SuspendedPageProxy&); … … 471 473 void platformInvalidateContext(); 472 474 473 Ref<WebProcessProxy> processForNavigationInternal(WebPageProxy&, const API::Navigation&, bool shouldProcessSwapIfPossible, WebCore::PolicyAction&);475 Ref<WebProcessProxy> processForNavigationInternal(WebPageProxy&, const API::Navigation&, ShouldProcessSwapIfPossible, WebCore::PolicyAction&); 474 476 475 477 RefPtr<WebProcessProxy> tryTakePrewarmedProcess(WebsiteDataStore&);
Note: See TracChangeset
for help on using the changeset viewer.