From 9f697724f13da2f6e6f8e1d05121985ce5d7bb69 Mon Sep 17 00:00:00 2001 From: Alex Christensen Date: Wed, 30 Aug 2017 08:22:54 +0000 Subject: [PATCH] Merge r221103 - Stop using PolicyChecker for ContentPolicy https://bugs.webkit.org/show_bug.cgi?id=175904 Reviewed by Tim Horton. PolicyChecker is an artifact from the days before C++11. Now we have lambdas which have a cleaner flow than one class that exists to be effectively one of three lambda types. Let's remove them one at a time, starting with ContentPolicy checks. No change in behaviour. * loader/DocumentLoader.cpp: (WebCore::DocumentLoader::responseReceived): * loader/FrameLoader.cpp: (WebCore::FrameLoader::checkContentPolicy): * loader/FrameLoader.h: * loader/PolicyCallback.cpp: (WebCore::PolicyCallback::set): (WebCore::PolicyCallback::call): (WebCore::PolicyCallback::cancel): * loader/PolicyCallback.h: * loader/PolicyChecker.cpp: (WebCore::PolicyChecker::checkContentPolicy): Deleted. (WebCore::PolicyChecker::continueAfterContentPolicy): Deleted. * loader/PolicyChecker.h: --- Source/WebCore/ChangeLog | 28 ++++++++++++++++++++++++ Source/WebCore/loader/DocumentLoader.cpp | 2 +- Source/WebCore/loader/FrameLoader.cpp | 5 +++++ Source/WebCore/loader/FrameLoader.h | 4 ++++ Source/WebCore/loader/PolicyCallback.cpp | 24 -------------------- Source/WebCore/loader/PolicyCallback.h | 4 ---- Source/WebCore/loader/PolicyChecker.cpp | 14 ------------ Source/WebCore/loader/PolicyChecker.h | 2 -- 8 files changed, 38 insertions(+), 45 deletions(-) diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog index fb3816e3c662..bf7620e854e1 100644 --- a/Source/WebCore/ChangeLog +++ b/Source/WebCore/ChangeLog @@ -1,3 +1,31 @@ +2017-08-23 Alex Christensen + + Stop using PolicyChecker for ContentPolicy + https://bugs.webkit.org/show_bug.cgi?id=175904 + + Reviewed by Tim Horton. + + PolicyChecker is an artifact from the days before C++11. Now we have lambdas which + have a cleaner flow than one class that exists to be effectively one of three lambda types. + Let's remove them one at a time, starting with ContentPolicy checks. + + No change in behaviour. + + * loader/DocumentLoader.cpp: + (WebCore::DocumentLoader::responseReceived): + * loader/FrameLoader.cpp: + (WebCore::FrameLoader::checkContentPolicy): + * loader/FrameLoader.h: + * loader/PolicyCallback.cpp: + (WebCore::PolicyCallback::set): + (WebCore::PolicyCallback::call): + (WebCore::PolicyCallback::cancel): + * loader/PolicyCallback.h: + * loader/PolicyChecker.cpp: + (WebCore::PolicyChecker::checkContentPolicy): Deleted. + (WebCore::PolicyChecker::continueAfterContentPolicy): Deleted. + * loader/PolicyChecker.h: + 2017-08-22 Zan Dobersek GLContext: zero-initialize the GLContext pointer in ThreadGlobalGLContext diff --git a/Source/WebCore/loader/DocumentLoader.cpp b/Source/WebCore/loader/DocumentLoader.cpp index 7bce348c4e2d..b14b9f272ba7 100644 --- a/Source/WebCore/loader/DocumentLoader.cpp +++ b/Source/WebCore/loader/DocumentLoader.cpp @@ -704,7 +704,7 @@ void DocumentLoader::responseReceived(const ResourceResponse& response) } #endif - frameLoader()->policyChecker().checkContentPolicy(m_response, [this](PolicyAction policy) { + frameLoader()->checkContentPolicy(m_response, [this](PolicyAction policy) { continueAfterContentPolicy(policy); }); } diff --git a/Source/WebCore/loader/FrameLoader.cpp b/Source/WebCore/loader/FrameLoader.cpp index 34ce42d5bfa2..a053f1b1c65b 100644 --- a/Source/WebCore/loader/FrameLoader.cpp +++ b/Source/WebCore/loader/FrameLoader.cpp @@ -355,6 +355,11 @@ void FrameLoader::setDefersLoading(bool defers) } } +void FrameLoader::checkContentPolicy(const ResourceResponse& response, ContentPolicyDecisionFunction&& function) +{ + client().dispatchDecidePolicyForResponse(response, activeDocumentLoader()->request(), WTFMove(function)); +} + void FrameLoader::changeLocation(FrameLoadRequest&& request) { urlSelected(WTFMove(request), nullptr); diff --git a/Source/WebCore/loader/FrameLoader.h b/Source/WebCore/loader/FrameLoader.h index b43907bec6cf..01aa3392f044 100644 --- a/Source/WebCore/loader/FrameLoader.h +++ b/Source/WebCore/loader/FrameLoader.h @@ -83,6 +83,8 @@ struct WindowFeatures; WEBCORE_EXPORT bool isBackForwardLoadType(FrameLoadType); WEBCORE_EXPORT bool isReload(FrameLoadType); +using ContentPolicyDecisionFunction = WTF::Function; + class FrameLoader { WTF_MAKE_NONCOPYABLE(FrameLoader); public: @@ -207,6 +209,8 @@ class FrameLoader { void setDefersLoading(bool); + void checkContentPolicy(const ResourceResponse&, ContentPolicyDecisionFunction&&); + void didExplicitOpen(); // Callbacks from DocumentWriter diff --git a/Source/WebCore/loader/PolicyCallback.cpp b/Source/WebCore/loader/PolicyCallback.cpp index 5e71d74d3ee3..047b16235653 100644 --- a/Source/WebCore/loader/PolicyCallback.cpp +++ b/Source/WebCore/loader/PolicyCallback.cpp @@ -46,7 +46,6 @@ void PolicyCallback::set(const ResourceRequest& request, FormState* formState, N m_navigationFunction = WTFMove(function); m_newWindowFunction = nullptr; - m_contentFunction = nullptr; } void PolicyCallback::set(const ResourceRequest& request, FormState* formState, const String& frameName, const NavigationAction& navigationAction, NewWindowPolicyDecisionFunction&& function) @@ -58,18 +57,6 @@ void PolicyCallback::set(const ResourceRequest& request, FormState* formState, c m_navigationFunction = nullptr; m_newWindowFunction = WTFMove(function); - m_contentFunction = nullptr; -} - -void PolicyCallback::set(ContentPolicyDecisionFunction&& function) -{ - m_request = ResourceRequest(); - m_formState = nullptr; - m_frameName = String(); - - m_navigationFunction = nullptr; - m_newWindowFunction = nullptr; - m_contentFunction = WTFMove(function); } void PolicyCallback::call(bool shouldContinue) @@ -78,15 +65,6 @@ void PolicyCallback::call(bool shouldContinue) m_navigationFunction(m_request, m_formState.get(), shouldContinue); if (m_newWindowFunction) m_newWindowFunction(m_request, m_formState.get(), m_frameName, m_navigationAction, shouldContinue); - ASSERT(!m_contentFunction); -} - -void PolicyCallback::call(PolicyAction action) -{ - ASSERT(!m_navigationFunction); - ASSERT(!m_newWindowFunction); - ASSERT(m_contentFunction); - m_contentFunction(action); } void PolicyCallback::clearRequest() @@ -103,8 +81,6 @@ void PolicyCallback::cancel() m_navigationFunction(m_request, m_formState.get(), false); if (m_newWindowFunction) m_newWindowFunction(m_request, m_formState.get(), m_frameName, m_navigationAction, false); - if (m_contentFunction) - m_contentFunction(PolicyIgnore); } } // namespace WebCore diff --git a/Source/WebCore/loader/PolicyCallback.h b/Source/WebCore/loader/PolicyCallback.h index 05d2217c1bfc..5683e7a3233d 100644 --- a/Source/WebCore/loader/PolicyCallback.h +++ b/Source/WebCore/loader/PolicyCallback.h @@ -41,7 +41,6 @@ namespace WebCore { class FormState; -using ContentPolicyDecisionFunction = Function; using NavigationPolicyDecisionFunction = Function; using NewWindowPolicyDecisionFunction = Function; @@ -49,13 +48,11 @@ class PolicyCallback { public: void set(const ResourceRequest&, FormState*, NavigationPolicyDecisionFunction&&); void set(const ResourceRequest&, FormState*, const String& frameName, const NavigationAction&, NewWindowPolicyDecisionFunction&&); - void set(ContentPolicyDecisionFunction&&); const ResourceRequest& request() const { return m_request; } void clearRequest(); void call(bool shouldContinue); - void call(PolicyAction); void cancel(); private: @@ -66,7 +63,6 @@ class PolicyCallback { NavigationPolicyDecisionFunction m_navigationFunction; NewWindowPolicyDecisionFunction m_newWindowFunction; - ContentPolicyDecisionFunction m_contentFunction; }; } // namespace WebCore diff --git a/Source/WebCore/loader/PolicyChecker.cpp b/Source/WebCore/loader/PolicyChecker.cpp index 5c6897572661..5ac0b7c2ed84 100644 --- a/Source/WebCore/loader/PolicyChecker.cpp +++ b/Source/WebCore/loader/PolicyChecker.cpp @@ -167,14 +167,6 @@ void PolicyChecker::checkNewWindowPolicy(const NavigationAction& action, const R }); } -void PolicyChecker::checkContentPolicy(const ResourceResponse& response, ContentPolicyDecisionFunction function) -{ - m_callback.set(WTFMove(function)); - m_frame.loader().client().dispatchDecidePolicyForResponse(response, m_frame.loader().activeDocumentLoader()->request(), [this](PolicyAction action) { - continueAfterContentPolicy(action); - }); -} - void PolicyChecker::cancelCheck() { m_frame.loader().client().cancelPolicyCheck(); @@ -251,12 +243,6 @@ void PolicyChecker::continueAfterNewWindowPolicy(PolicyAction policy) callback.call(policy == PolicyUse); } -void PolicyChecker::continueAfterContentPolicy(PolicyAction policy) -{ - PolicyCallback callback = WTFMove(m_callback); - callback.call(policy); -} - void PolicyChecker::handleUnimplementablePolicy(const ResourceError& error) { m_delegateIsHandlingUnimplementablePolicy = true; diff --git a/Source/WebCore/loader/PolicyChecker.h b/Source/WebCore/loader/PolicyChecker.h index 16b0bed82fb6..20afc03d44e7 100644 --- a/Source/WebCore/loader/PolicyChecker.h +++ b/Source/WebCore/loader/PolicyChecker.h @@ -56,7 +56,6 @@ class PolicyChecker { void checkNavigationPolicy(const ResourceRequest&, bool didReceiveRedirectResponse, DocumentLoader*, FormState*, NavigationPolicyDecisionFunction); void checkNavigationPolicy(const ResourceRequest&, bool didReceiveRedirectResponse, NavigationPolicyDecisionFunction); void checkNewWindowPolicy(const NavigationAction&, const ResourceRequest&, FormState*, const String& frameName, NewWindowPolicyDecisionFunction); - void checkContentPolicy(const ResourceResponse&, ContentPolicyDecisionFunction); // FIXME: These are different. They could use better names. void cancelCheck(); @@ -86,7 +85,6 @@ class PolicyChecker { private: void continueAfterNavigationPolicy(PolicyAction); void continueAfterNewWindowPolicy(PolicyAction); - void continueAfterContentPolicy(PolicyAction); void handleUnimplementablePolicy(const ResourceError&);