Changeset 162639 in webkit
- Timestamp:
- Jan 23, 2014 2:01:23 PM (10 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 9 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r162638 r162639 1 2014-01-23 Anders Carlsson <andersca@apple.com> 2 3 Add API::PolicyClient base class 4 https://bugs.webkit.org/show_bug.cgi?id=127509 5 6 Reviewed by Tim Horton. 7 8 * UIProcess/API/APIPolicyClient.h: Copied from Source/WebKit2/UIProcess/WebPolicyClient.h. 9 (API::PolicyClient::~PolicyClient): 10 * UIProcess/API/C/WKPage.cpp: 11 (WKPageSetPagePolicyClient): 12 * UIProcess/API/Cocoa/WKBrowsingContextController.mm: 13 (setUpPagePolicyClient): 14 (-[WKBrowsingContextController setPolicyDelegate:]): 15 * UIProcess/WebInspectorProxy.cpp: 16 (WebKit::WebInspectorProxy::createInspectorPage): 17 * UIProcess/WebPageProxy.cpp: 18 (WebKit::WebPageProxy::setPolicyClient): 19 (WebKit::WebPageProxy::close): 20 (WebKit::WebPageProxy::decidePolicyForNavigationAction): 21 (WebKit::WebPageProxy::decidePolicyForNewWindowAction): 22 (WebKit::WebPageProxy::decidePolicyForResponse): 23 (WebKit::WebPageProxy::unableToImplementPolicy): 24 * UIProcess/WebPageProxy.h: 25 * UIProcess/WebPolicyClient.cpp: 26 (WebKit::WebPolicyClient::WebPolicyClient): 27 (WebKit::WebPolicyClient::decidePolicyForNavigationAction): 28 (WebKit::WebPolicyClient::decidePolicyForNewWindowAction): 29 (WebKit::WebPolicyClient::decidePolicyForResponse): 30 * UIProcess/WebPolicyClient.h: 31 * WebKit2.xcodeproj/project.pbxproj: 32 1 33 2014-01-23 Anders Carlsson <andersca@apple.com> 2 34 -
trunk/Source/WebKit2/UIProcess/API/APIPolicyClient.h
r162638 r162639 1 1 /* 2 * Copyright (C) 201 0Apple Inc. All rights reserved.2 * Copyright (C) 2014 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 24 24 */ 25 25 26 #ifndef WebPolicyClient_h27 #define WebPolicyClient_h26 #ifndef APIPolicyClient_h 27 #define APIPolicyClient_h 28 28 29 #include "APIClient.h"30 #include "WKPage.h"31 #include "WKPagePolicyClientInternal.h"32 29 #include "WebEvent.h" 33 30 #include <WebCore/FrameLoaderTypes.h> 34 31 #include <wtf/Forward.h> 35 36 namespace API {37 class Object;38 39 template<> struct ClientTraits<WKPagePolicyClientBase> {40 typedef std::tuple<WKPagePolicyClientV0, WKPagePolicyClientV1, WKPagePolicyClientInternal> Versions;41 };42 }43 32 44 33 namespace WebCore { … … 49 38 50 39 namespace WebKit { 51 52 40 class WebPageProxy; 53 41 class WebFrameProxy; 54 42 class WebFramePolicyListenerProxy; 43 } 55 44 56 class WebPolicyClient : public API::Client<WKPagePolicyClientBase> { 45 namespace API { 46 class Object; 47 48 class PolicyClient { 57 49 public: 58 bool decidePolicyForNavigationAction(WebPageProxy*, WebFrameProxy*, WebCore::NavigationType, WebEvent::Modifiers, WebMouseEvent::Button, WebFrameProxy* originatingFrame, const WebCore::ResourceRequest& originalRequest, const WebCore::ResourceRequest&, WebFramePolicyListenerProxy*, API::Object* userData); 59 bool decidePolicyForNewWindowAction(WebPageProxy*, WebFrameProxy*, WebCore::NavigationType, WebEvent::Modifiers, WebMouseEvent::Button, const WebCore::ResourceRequest&, const String& frameName, WebFramePolicyListenerProxy*, API::Object* userData); 60 bool decidePolicyForResponse(WebPageProxy*, WebFrameProxy*, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, bool canShowMIMEType, WebFramePolicyListenerProxy*, API::Object* userData); 61 void unableToImplementPolicy(WebPageProxy*, WebFrameProxy*, const WebCore::ResourceError&, API::Object* userData); 50 virtual ~PolicyClient() { } 51 52 virtual void decidePolicyForNavigationAction(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, WebCore::NavigationType, WebKit::WebEvent::Modifiers, WebKit::WebMouseEvent::Button, WebKit::WebFrameProxy* originatingFrame, const WebCore::ResourceRequest& originalRequest, const WebCore::ResourceRequest&, WebKit::WebFramePolicyListenerProxy*, API::Object* userData) = 0; 53 virtual void decidePolicyForNewWindowAction(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, WebCore::NavigationType, WebKit::WebEvent::Modifiers, WebKit::WebMouseEvent::Button, const WebCore::ResourceRequest&, const WTF::String& frameName, WebKit::WebFramePolicyListenerProxy*, API::Object* userData) = 0; 54 virtual void decidePolicyForResponse(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, bool canShowMIMEType, WebKit::WebFramePolicyListenerProxy*, API::Object* userData) = 0; 55 virtual void unableToImplementPolicy(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, const WebCore::ResourceError&, API::Object* userData) = 0; 62 56 }; 63 57 64 } // namespace WebKit58 } // namespace API 65 59 66 #endif // WebPolicyClient_h60 #endif // APIPolicyClient_h -
trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp
r162568 r162639 35 35 #include "WebBackForwardList.h" 36 36 #include "WebPageProxy.h" 37 #include "WebPolicyClient.h" 37 38 #include "WebProcessProxy.h" 38 39 #include <WebCore/Page.h> … … 673 674 void WKPageSetPagePolicyClient(WKPageRef pageRef, const WKPagePolicyClientBase* wkClient) 674 675 { 675 toImpl(pageRef)-> initializePolicyClient(wkClient);676 toImpl(pageRef)->setPolicyClient(std::make_unique<WebPolicyClient>(wkClient)); 676 677 } 677 678 -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextController.mm
r162580 r162639 58 58 #import "WebContext.h" 59 59 #import "WebPageProxy.h" 60 #import "WebPolicyClient.h" 60 61 61 62 using namespace WebCore; … … 713 714 }; 714 715 715 page. initializePolicyClient(&policyClient.base);716 page.setPolicyClient(std::make_unique<WebPolicyClient>(&policyClient.base)); 716 717 } 717 718 … … 743 744 setUpPagePolicyClient(self, *_page); 744 745 else 745 _page-> initializePolicyClient(nullptr);746 _page->setPolicyClient(nullptr); 746 747 } 747 748 -
trunk/Source/WebKit2/UIProcess/WebInspectorProxy.cpp
r161045 r162639 38 38 #include "WebPageGroup.h" 39 39 #include "WebPageProxy.h" 40 #include "WebPolicyClient.h" 40 41 #include "WebPreferences.h" 41 42 #include "WebProcessProxy.h" … … 450 451 }; 451 452 452 inspectorPage-> initializePolicyClient(reinterpret_cast<const WKPagePolicyClientBase*>(&policyClient));453 inspectorPage->setPolicyClient(std::make_unique<WebPolicyClient>(&policyClient.base)); 453 454 454 455 String url = inspectorPageURL(); -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r162629 r162639 421 421 } 422 422 423 void WebPageProxy:: initializePolicyClient(const WKPagePolicyClientBase*policyClient)424 { 425 m_policyClient .initialize(policyClient);423 void WebPageProxy::setPolicyClient(std::unique_ptr<API::PolicyClient> policyClient) 424 { 425 m_policyClient = std::move(policyClient); 426 426 } 427 427 … … 561 561 562 562 m_loaderClient.initialize(0); 563 m_policyClient .initialize(0);563 m_policyClient = nullptr; 564 564 m_formClient.initialize(0); 565 565 m_uiClient.initialize(0); … … 2459 2459 m_inDecidePolicyForNavigationAction = true; 2460 2460 m_syncNavigationActionPolicyActionIsValid = false; 2461 2462 if (!m_policyClient .decidePolicyForNavigationAction(this, frame, navigationType, modifiers, mouseButton, originatingFrame, originalRequest, request, listener.get(), userData.get()))2461 2462 if (!m_policyClient) 2463 2463 listener->use(); 2464 else 2465 m_policyClient->decidePolicyForNavigationAction(this, frame, navigationType, modifiers, mouseButton, originatingFrame, originalRequest, request, listener.get(), userData.get()); 2464 2466 2465 2467 m_inDecidePolicyForNavigationAction = false; … … 2487 2489 WebEvent::Modifiers modifiers = static_cast<WebEvent::Modifiers>(opaqueModifiers); 2488 2490 WebMouseEvent::Button mouseButton = static_cast<WebMouseEvent::Button>(opaqueMouseButton); 2489 2490 2491 RefPtr<WebFramePolicyListenerProxy> listener = frame->setUpPolicyListenerProxy(listenerID); 2491 if (!m_policyClient.decidePolicyForNewWindowAction(this, frame, navigationType, modifiers, mouseButton, request, frameName, listener.get(), userData.get())) 2492 2493 if (!m_policyClient) 2492 2494 listener->use(); 2495 else 2496 m_policyClient->decidePolicyForNewWindowAction(this, frame, navigationType, modifiers, mouseButton, request, frameName, listener.get(), userData.get()); 2493 2497 } 2494 2498 … … 2507 2511 RefPtr<WebFramePolicyListenerProxy> listener = frame->setUpPolicyListenerProxy(listenerID); 2508 2512 2509 if (!m_policyClient .decidePolicyForResponse(this, frame, response, request, canShowMIMEType, listener.get(), userData.get()))2513 if (!m_policyClient) 2510 2514 listener->use(); 2515 else 2516 m_policyClient->decidePolicyForResponse(this, frame, response, request, canShowMIMEType, listener.get(), userData.get()); 2511 2517 } 2512 2518 … … 2542 2548 MESSAGE_CHECK(frame); 2543 2549 2544 m_policyClient.unableToImplementPolicy(this, frame, error, userData.get()); 2550 if (m_policyClient) 2551 m_policyClient->unableToImplementPolicy(this, frame, error, userData.get()); 2545 2552 } 2546 2553 -
trunk/Source/WebKit2/UIProcess/WebPageProxy.h
r162629 r162639 28 28 29 29 #include "APIObject.h" 30 #include "APIPolicyClient.h" 30 31 #include "APISession.h" 31 32 #include "AutoCorrectionCallback.h" … … 58 59 #include <WebCore/AlternativeTextClient.h> // FIXME: Needed by WebPageProxyMessages.h for DICTATION_ALTERNATIVES. 59 60 #include "WebPageProxyMessages.h" 60 #include "WebPolicyClient.h"61 61 #include "WebPopupMenuProxy.h" 62 62 #include "WebUIClient.h" … … 369 369 void initializeFormClient(const WKPageFormClientBase*); 370 370 void initializeLoaderClient(const WKPageLoaderClientBase*); 371 void initializePolicyClient(const WKPagePolicyClientBase*);371 void setPolicyClient(std::unique_ptr<API::PolicyClient>); 372 372 void initializeUIClient(const WKPageUIClientBase*); 373 373 #if PLATFORM(EFL) … … 1165 1165 PageClient& m_pageClient; 1166 1166 WebLoaderClient m_loaderClient; 1167 WebPolicyClientm_policyClient;1167 std::unique_ptr<API::PolicyClient> m_policyClient; 1168 1168 WebFormClient m_formClient; 1169 1169 WebUIClient m_uiClient; -
trunk/Source/WebKit2/UIProcess/WebPolicyClient.cpp
r160853 r162639 30 30 #include "APIURLRequest.h" 31 31 #include "WKAPICast.h" 32 #include "WebFramePolicyListenerProxy.h" 32 33 33 34 using namespace WebCore; … … 35 36 namespace WebKit { 36 37 37 bool WebPolicyClient::decidePolicyForNavigationAction(WebPageProxy* page, WebFrameProxy* frame, NavigationType type, WebEvent::Modifiers modifiers, WebMouseEvent::Button mouseButton, WebFrameProxy* originatingFrame, const ResourceRequest& originalResourceRequest, const ResourceRequest& resourceRequest, WebFramePolicyListenerProxy* listener, API::Object* userData)38 WebPolicyClient::WebPolicyClient(const WKPagePolicyClientBase* client) 38 39 { 39 if (!m_client.decidePolicyForNavigationAction_deprecatedForUseWithV0 && !m_client.decidePolicyForNavigationAction_deprecatedForUseWithV1 && !m_client.decidePolicyForNavigationAction) 40 return false; 40 initialize(client); 41 } 42 43 void WebPolicyClient::decidePolicyForNavigationAction(WebPageProxy* page, WebFrameProxy* frame, WebCore::NavigationType type, WebEvent::Modifiers modifiers, WebMouseEvent::Button mouseButton, WebFrameProxy* originatingFrame, const WebCore::ResourceRequest& originalResourceRequest, const WebCore::ResourceRequest& resourceRequest, WebFramePolicyListenerProxy* listener, API::Object* userData) 44 { 45 if (!m_client.decidePolicyForNavigationAction_deprecatedForUseWithV0 && !m_client.decidePolicyForNavigationAction_deprecatedForUseWithV1 && !m_client.decidePolicyForNavigationAction) { 46 listener->use(); 47 return; 48 } 41 49 42 50 RefPtr<API::URLRequest> originalRequest = API::URLRequest::create(originalResourceRequest); … … 49 57 else 50 58 m_client.decidePolicyForNavigationAction(toAPI(page), toAPI(frame), toAPI(type), toAPI(modifiers), toAPI(mouseButton), toAPI(originatingFrame), toAPI(originalRequest.get()), toAPI(request.get()), toAPI(listener), toAPI(userData), m_client.base.clientInfo); 51 52 return true;53 59 } 54 60 55 boolWebPolicyClient::decidePolicyForNewWindowAction(WebPageProxy* page, WebFrameProxy* frame, NavigationType type, WebEvent::Modifiers modifiers, WebMouseEvent::Button mouseButton, const ResourceRequest& resourceRequest, const String& frameName, WebFramePolicyListenerProxy* listener, API::Object* userData)61 void WebPolicyClient::decidePolicyForNewWindowAction(WebPageProxy* page, WebFrameProxy* frame, NavigationType type, WebEvent::Modifiers modifiers, WebMouseEvent::Button mouseButton, const ResourceRequest& resourceRequest, const String& frameName, WebFramePolicyListenerProxy* listener, API::Object* userData) 56 62 { 57 if (!m_client.decidePolicyForNewWindowAction) 58 return false; 63 if (!m_client.decidePolicyForNewWindowAction) { 64 listener->use(); 65 return; 66 } 59 67 60 68 RefPtr<API::URLRequest> request = API::URLRequest::create(resourceRequest); 61 69 62 70 m_client.decidePolicyForNewWindowAction(toAPI(page), toAPI(frame), toAPI(type), toAPI(modifiers), toAPI(mouseButton), toAPI(request.get()), toAPI(frameName.impl()), toAPI(listener), toAPI(userData), m_client.base.clientInfo); 63 return true;64 71 } 65 72 66 boolWebPolicyClient::decidePolicyForResponse(WebPageProxy* page, WebFrameProxy* frame, const ResourceResponse& resourceResponse, const ResourceRequest& resourceRequest, bool canShowMIMEType, WebFramePolicyListenerProxy* listener, API::Object* userData)73 void WebPolicyClient::decidePolicyForResponse(WebPageProxy* page, WebFrameProxy* frame, const ResourceResponse& resourceResponse, const ResourceRequest& resourceRequest, bool canShowMIMEType, WebFramePolicyListenerProxy* listener, API::Object* userData) 67 74 { 68 if (!m_client.decidePolicyForResponse_deprecatedForUseWithV0 && !m_client.decidePolicyForResponse) 69 return false; 75 if (m_client.decidePolicyForResponse_deprecatedForUseWithV0 && !m_client.decidePolicyForResponse) { 76 listener->use(); 77 return; 78 } 70 79 71 80 RefPtr<API::URLResponse> response = API::URLResponse::create(resourceResponse); … … 76 85 else 77 86 m_client.decidePolicyForResponse(toAPI(page), toAPI(frame), toAPI(response.get()), toAPI(request.get()), canShowMIMEType, toAPI(listener), toAPI(userData), m_client.base.clientInfo); 78 79 return true;80 87 } 81 88 -
trunk/Source/WebKit2/UIProcess/WebPolicyClient.h
r160495 r162639 28 28 29 29 #include "APIClient.h" 30 #include "APIPolicyClient.h" 30 31 #include "WKPage.h" 31 32 #include "WKPagePolicyClientInternal.h" … … 42 43 } 43 44 44 namespace WebCore {45 class ResourceError;46 class ResourceRequest;47 class ResourceResponse;48 }49 50 45 namespace WebKit { 51 46 52 class WebP ageProxy;53 class WebFrameProxy; 54 class WebFramePolicyListenerProxy;47 class WebPolicyClient final : public API::Client<WKPagePolicyClientBase>, public API::PolicyClient { 48 public: 49 explicit WebPolicyClient(const WKPagePolicyClientBase*); 55 50 56 class WebPolicyClient : public API::Client<WKPagePolicyClientBase> { 57 public: 58 bool decidePolicyForNavigationAction(WebPageProxy*, WebFrameProxy*, WebCore::NavigationType, WebEvent::Modifiers, WebMouseEvent::Button, WebFrameProxy* originatingFrame, const WebCore::ResourceRequest& originalRequest, const WebCore::ResourceRequest&, WebFramePolicyListenerProxy*, API::Object* userData); 59 bool decidePolicyForNewWindowAction(WebPageProxy*, WebFrameProxy*, WebCore::NavigationType, WebEvent::Modifiers, WebMouseEvent::Button, const WebCore::ResourceRequest&, const String& frameName, WebFramePolicyListenerProxy*, API::Object* userData); 60 bool decidePolicyForResponse(WebPageProxy*, WebFrameProxy*, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, bool canShowMIMEType, WebFramePolicyListenerProxy*, API::Object* userData); 61 void unableToImplementPolicy(WebPageProxy*, WebFrameProxy*, const WebCore::ResourceError&, API::Object* userData); 51 private: 52 virtual void decidePolicyForNavigationAction(WebPageProxy*, WebFrameProxy*, WebCore::NavigationType, WebEvent::Modifiers, WebMouseEvent::Button, WebFrameProxy* originatingFrame, const WebCore::ResourceRequest& originalRequest, const WebCore::ResourceRequest&, WebFramePolicyListenerProxy*, API::Object* userData) override; 53 virtual void decidePolicyForNewWindowAction(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, WebCore::NavigationType, WebKit::WebEvent::Modifiers, WebKit::WebMouseEvent::Button, const WebCore::ResourceRequest&, const String& frameName, WebKit::WebFramePolicyListenerProxy*, API::Object* userData) override; 54 virtual void decidePolicyForResponse(WebPageProxy*, WebFrameProxy*, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, bool canShowMIMEType, WebFramePolicyListenerProxy*, API::Object* userData) override; 55 virtual void unableToImplementPolicy(WebPageProxy*, WebFrameProxy*, const WebCore::ResourceError&, API::Object* userData) override; 62 56 }; 63 57 -
trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj
r162562 r162639 344 344 1AF1AC6B1651759E00C17D7F /* RemoteLayerTreeTransaction.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AF1AC691651759E00C17D7F /* RemoteLayerTreeTransaction.mm */; }; 345 345 1AF1AC6C1651759E00C17D7F /* RemoteLayerTreeTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AF1AC6A1651759E00C17D7F /* RemoteLayerTreeTransaction.h */; }; 346 1AFDD3151891B54000153970 /* APIPolicyClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AFDD3141891B54000153970 /* APIPolicyClient.h */; }; 346 347 1AFF49001833DE78009AB15A /* WKDeprecatedFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AFF48FE1833DE78009AB15A /* WKDeprecatedFunctions.cpp */; }; 347 348 1C8E25A81270E3BB00BC7BD0 /* WebInspectorFrontendClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C8E256B1270DE3800BC7BD0 /* WebInspectorFrontendClient.cpp */; }; … … 1984 1985 1AF1AC691651759E00C17D7F /* RemoteLayerTreeTransaction.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RemoteLayerTreeTransaction.mm; sourceTree = "<group>"; }; 1985 1986 1AF1AC6A1651759E00C17D7F /* RemoteLayerTreeTransaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteLayerTreeTransaction.h; sourceTree = "<group>"; }; 1987 1AFDD3141891B54000153970 /* APIPolicyClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIPolicyClient.h; sourceTree = "<group>"; }; 1986 1988 1AFF48FE1833DE78009AB15A /* WKDeprecatedFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKDeprecatedFunctions.cpp; sourceTree = "<group>"; }; 1987 1989 1BB417C912C00CCA002BE67B /* TextCheckerCompletion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextCheckerCompletion.cpp; sourceTree = "<group>"; }; … … 5006 5008 BC8A501311765F4500757573 /* cpp */, 5007 5009 BC111B47112F616900337BAB /* mac */, 5010 1AFDD3141891B54000153970 /* APIPolicyClient.h */, 5008 5011 ); 5009 5012 path = API; … … 6624 6627 BCE4695A1214EDF4000B98EB /* WKFormSubmissionListener.h in Headers */, 6625 6628 BCD0139B110FA420003B8A67 /* WKFrame.h in Headers */, 6629 1AFDD3151891B54000153970 /* APIPolicyClient.h in Headers */, 6626 6630 BCB9F6A51123DD0D00A137E0 /* WKFramePolicyListener.h in Headers */, 6627 6631 E1AEA22F14687BDB00804569 /* WKFullKeyboardAccessWatcher.h in Headers */,
Note: See TracChangeset
for help on using the changeset viewer.