Changeset 169998 in webkit


Ignore:
Timestamp:
Jun 15, 2014 8:23:55 PM (10 years ago)
Author:
mitz@apple.com
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.

Location:
trunk/Source/WebKit2
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r169997 r169998  
     12014-06-15  Dan Bernstein  <mitz@apple.com>
     2
     3        <rdar://problem/17291697> [Cocoa] Can’t tell at policy decision time whether WebKit can handle the request
     4        https://bugs.webkit.org/show_bug.cgi?id=133930
     5
     6        Reviewed by Sam Weinig.
     7
     8        * Shared/NavigationActionData.cpp:
     9        (WebKit::NavigationActionData::NavigationActionData): Initialize new member canHandleRequest
     10        to false.
     11        (WebKit::NavigationActionData::encode): Encode canHandleRequest.
     12        (WebKit::NavigationActionData::decode): Decode it.
     13        * Shared/NavigationActionData.h: Declared new boolean member canHandleRequest.
     14
     15        * UIProcess/API/Cocoa/WKNavigationAction.mm:
     16        (-[WKNavigationAction _initWithNavigationActionData:]): Set new ivar _canHandleRequest from
     17        the action data.
     18        (-[WKNavigationAction _canHandleRequest]): Added this getter.
     19        * UIProcess/API/Cocoa/WKNavigationActionPrivate.h: Declared new property _canHandleRequest.
     20
     21        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
     22        (WebKit::WebChromeClient::createWindow): Set canHandleRequest in the NavigationActionData.
     23
     24        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
     25        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction): Ditto.
     26        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Ditto.
     27
    1282014-06-15  Ryuan Choi  <ryuan.choi@samsung.com>
    229
  • trunk/Source/WebKit2/Shared/NavigationActionData.cpp

    r166976 r169998  
    3939    , mouseButton(WebMouseEvent::NoButton)
    4040    , isProcessingUserGesture(false)
     41    , canHandleRequest(false)
    4142{
    4243}
     
    4849    encoder.encodeEnum(mouseButton);
    4950    encoder << isProcessingUserGesture;
     51    encoder << canHandleRequest;
    5052}
    5153
     
    6062    if (!decoder.decode(result.isProcessingUserGesture))
    6163        return false;
     64    if (!decoder.decode(result.canHandleRequest))
     65        return false;
    6266
    6367    return true;
  • trunk/Source/WebKit2/Shared/NavigationActionData.h

    r166976 r169998  
    4747    WebMouseEvent::Button mouseButton;
    4848    bool isProcessingUserGesture;
     49    bool canHandleRequest;
    4950};
    5051
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationAction.mm

    r168691 r169998  
    3838    RetainPtr<NSURL> _originalURL;
    3939    BOOL _userInitiated;
     40    BOOL _canHandleRequest;
    4041}
    4142
     
    116117
    117118    _userInitiated = navigationActionData.isProcessingUserGesture;
     119    _canHandleRequest = navigationActionData.canHandleRequest;
    118120
    119121    return self;
     
    166168}
    167169
     170@end
     171
     172@implementation WKNavigationAction (WKPrivate)
     173
    168174- (BOOL)_isUserInitiated
    169175{
     
    171177}
    172178
     179- (BOOL)_canHandleRequest
     180{
     181    return _canHandleRequest;
     182}
     183
    173184@end
    174185
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationActionPrivate.h

    r168541 r169998  
    3232@property (nonatomic, readonly) NSURL *_originalURL;
    3333@property (nonatomic, readonly, getter=_isUserInitiated) BOOL _userInitiated;
     34@property (nonatomic, readonly) BOOL _canHandleRequest;
    3435
    3536@end
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp

    r169394 r169998  
    211211    navigationActionData.mouseButton = InjectedBundleNavigationAction::mouseButtonForNavigationAction(navigationAction);
    212212    navigationActionData.isProcessingUserGesture = navigationAction.processingUserGesture();
     213    navigationActionData.canHandleRequest = m_page->canHandleRequest(request.resourceRequest());
    213214
    214215    uint64_t newPageID = 0;
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp

    r169799 r169998  
    700700    navigationActionData.mouseButton = action->mouseButton();
    701701    navigationActionData.isProcessingUserGesture = navigationAction.processingUserGesture();
     702    navigationActionData.canHandleRequest = webPage->canHandleRequest(request);
    702703
    703704    webPage->send(Messages::WebPageProxy::DecidePolicyForNewWindowAction(m_frame->frameID(), navigationActionData, request, frameName, listenerID, InjectedBundleUserMessageEncoder(userData.get())));
     
    759760    navigationActionData.mouseButton = action->mouseButton();
    760761    navigationActionData.isProcessingUserGesture = navigationAction.processingUserGesture();
     762    navigationActionData.canHandleRequest = webPage->canHandleRequest(request);
    761763
    762764    // Notify the UIProcess.
Note: See TracChangeset for help on using the changeset viewer.