- 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)))