Title: [169998] trunk/Source/WebKit2
Revision
169998
Author
[email protected]
Date
2014-06-15 20:23:55 -0700 (Sun, 15 Jun 2014)

Log Message

<rdar://problem/17291697> [Cocoa] Can’t tell at policy decision time whether WebKit can handle the request
https://bugs.webkit.org/show_bug.cgi?id=133930

Reviewed by Sam Weinig.

* Shared/NavigationActionData.cpp:
(WebKit::NavigationActionData::NavigationActionData): Initialize new member canHandleRequest
to false.
(WebKit::NavigationActionData::encode): Encode canHandleRequest.
(WebKit::NavigationActionData::decode): Decode it.
* Shared/NavigationActionData.h: Declared new boolean member canHandleRequest.

* UIProcess/API/Cocoa/WKNavigationAction.mm:
(-[WKNavigationAction _initWithNavigationActionData:]): Set new ivar _canHandleRequest from
the action data.
(-[WKNavigationAction _canHandleRequest]): Added this getter.
* UIProcess/API/Cocoa/WKNavigationActionPrivate.h: Declared new property _canHandleRequest.

* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::createWindow): Set canHandleRequest in the NavigationActionData.

* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction): Ditto.
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Ditto.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (169997 => 169998)


--- trunk/Source/WebKit2/ChangeLog	2014-06-16 01:45:36 UTC (rev 169997)
+++ trunk/Source/WebKit2/ChangeLog	2014-06-16 03:23:55 UTC (rev 169998)
@@ -1,3 +1,30 @@
+2014-06-15  Dan Bernstein  <[email protected]>
+
+        <rdar://problem/17291697> [Cocoa] Can’t tell at policy decision time whether WebKit can handle the request
+        https://bugs.webkit.org/show_bug.cgi?id=133930
+
+        Reviewed by Sam Weinig.
+
+        * Shared/NavigationActionData.cpp:
+        (WebKit::NavigationActionData::NavigationActionData): Initialize new member canHandleRequest
+        to false.
+        (WebKit::NavigationActionData::encode): Encode canHandleRequest.
+        (WebKit::NavigationActionData::decode): Decode it.
+        * Shared/NavigationActionData.h: Declared new boolean member canHandleRequest.
+
+        * UIProcess/API/Cocoa/WKNavigationAction.mm:
+        (-[WKNavigationAction _initWithNavigationActionData:]): Set new ivar _canHandleRequest from
+        the action data.
+        (-[WKNavigationAction _canHandleRequest]): Added this getter.
+        * UIProcess/API/Cocoa/WKNavigationActionPrivate.h: Declared new property _canHandleRequest.
+
+        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
+        (WebKit::WebChromeClient::createWindow): Set canHandleRequest in the NavigationActionData.
+
+        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
+        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction): Ditto.
+        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Ditto.
+
 2014-06-15  Ryuan Choi  <[email protected]>
 
         [EFL][WK2] Change ewk_view_settings_get to ewk_page_group_settings_get

Modified: trunk/Source/WebKit2/Shared/NavigationActionData.cpp (169997 => 169998)


--- trunk/Source/WebKit2/Shared/NavigationActionData.cpp	2014-06-16 01:45:36 UTC (rev 169997)
+++ trunk/Source/WebKit2/Shared/NavigationActionData.cpp	2014-06-16 03:23:55 UTC (rev 169998)
@@ -38,6 +38,7 @@
     , modifiers()
     , mouseButton(WebMouseEvent::NoButton)
     , isProcessingUserGesture(false)
+    , canHandleRequest(false)
 {
 }
 
@@ -47,6 +48,7 @@
     encoder.encodeEnum(modifiers);
     encoder.encodeEnum(mouseButton);
     encoder << isProcessingUserGesture;
+    encoder << canHandleRequest;
 }
 
 bool NavigationActionData::decode(IPC::ArgumentDecoder& decoder, NavigationActionData& result)
@@ -59,6 +61,8 @@
         return false;
     if (!decoder.decode(result.isProcessingUserGesture))
         return false;
+    if (!decoder.decode(result.canHandleRequest))
+        return false;
 
     return true;
 }

Modified: trunk/Source/WebKit2/Shared/NavigationActionData.h (169997 => 169998)


--- trunk/Source/WebKit2/Shared/NavigationActionData.h	2014-06-16 01:45:36 UTC (rev 169997)
+++ trunk/Source/WebKit2/Shared/NavigationActionData.h	2014-06-16 03:23:55 UTC (rev 169998)
@@ -46,6 +46,7 @@
     WebEvent::Modifiers modifiers;
     WebMouseEvent::Button mouseButton;
     bool isProcessingUserGesture;
+    bool canHandleRequest;
 };
 
 }

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationAction.mm (169997 => 169998)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationAction.mm	2014-06-16 01:45:36 UTC (rev 169997)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationAction.mm	2014-06-16 03:23:55 UTC (rev 169998)
@@ -37,6 +37,7 @@
     RetainPtr<NSURLRequest> _request;
     RetainPtr<NSURL> _originalURL;
     BOOL _userInitiated;
+    BOOL _canHandleRequest;
 }
 
 static WKNavigationType toWKNavigationType(WebCore::NavigationType navigationType)
@@ -115,6 +116,7 @@
 #endif
 
     _userInitiated = navigationActionData.isProcessingUserGesture;
+    _canHandleRequest = navigationActionData.canHandleRequest;
 
     return self;
 }
@@ -165,11 +167,20 @@
     return _originalURL.get();
 }
 
+@end
+
+@implementation WKNavigationAction (WKPrivate)
+
 - (BOOL)_isUserInitiated
 {
     return _userInitiated;
 }
 
+- (BOOL)_canHandleRequest
+{
+    return _canHandleRequest;
+}
+
 @end
 
 #endif

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationActionPrivate.h (169997 => 169998)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationActionPrivate.h	2014-06-16 01:45:36 UTC (rev 169997)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationActionPrivate.h	2014-06-16 03:23:55 UTC (rev 169998)
@@ -31,6 +31,7 @@
 
 @property (nonatomic, readonly) NSURL *_originalURL;
 @property (nonatomic, readonly, getter=_isUserInitiated) BOOL _userInitiated;
+@property (nonatomic, readonly) BOOL _canHandleRequest;
 
 @end
 

Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp (169997 => 169998)


--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp	2014-06-16 01:45:36 UTC (rev 169997)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp	2014-06-16 03:23:55 UTC (rev 169998)
@@ -210,6 +210,7 @@
     navigationActionData.modifiers = InjectedBundleNavigationAction::modifiersForNavigationAction(navigationAction);
     navigationActionData.mouseButton = InjectedBundleNavigationAction::mouseButtonForNavigationAction(navigationAction);
     navigationActionData.isProcessingUserGesture = navigationAction.processingUserGesture();
+    navigationActionData.canHandleRequest = m_page->canHandleRequest(request.resourceRequest());
 
     uint64_t newPageID = 0;
     WebPageCreationParameters parameters;

Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp (169997 => 169998)


--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp	2014-06-16 01:45:36 UTC (rev 169997)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp	2014-06-16 03:23:55 UTC (rev 169998)
@@ -699,6 +699,7 @@
     navigationActionData.modifiers = action->modifiers();
     navigationActionData.mouseButton = action->mouseButton();
     navigationActionData.isProcessingUserGesture = navigationAction.processingUserGesture();
+    navigationActionData.canHandleRequest = webPage->canHandleRequest(request);
 
     webPage->send(Messages::WebPageProxy::DecidePolicyForNewWindowAction(m_frame->frameID(), navigationActionData, request, frameName, listenerID, InjectedBundleUserMessageEncoder(userData.get())));
 }
@@ -758,6 +759,7 @@
     navigationActionData.modifiers = action->modifiers();
     navigationActionData.mouseButton = action->mouseButton();
     navigationActionData.isProcessingUserGesture = navigationAction.processingUserGesture();
+    navigationActionData.canHandleRequest = webPage->canHandleRequest(request);
 
     // Notify the UIProcess.
     if (!webPage->sendSync(Messages::WebPageProxy::DecidePolicyForNavigationAction(m_frame->frameID(), navigationActionData, originatingFrame ? originatingFrame->frameID() : 0, navigationAction.resourceRequest(), request, listenerID, InjectedBundleUserMessageEncoder(userData.get())), Messages::WebPageProxy::DecidePolicyForNavigationAction::Reply(receivedPolicyAction, policyAction, downloadID)))
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to