Changeset 195623 in webkit


Ignore:
Timestamp:
Jan 26, 2016 2:22:14 PM (8 years ago)
Author:
andersca@apple.com
Message:

Add a private WKUIDelegate method for getting a presenting view controller for a WKWebView on iOS
https://bugs.webkit.org/show_bug.cgi?id=153510

Reviewed by Dan Bernstein.

  • UIProcess/API/APIUIClient.h:

(API::UIClient::presentingViewController):

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::presentingViewController):

Location:
trunk/Source/WebKit2
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r195607 r195623  
     12016-01-26  Anders Carlsson  <andersca@apple.com>
     2
     3        Add a private WKUIDelegate method for getting a presenting view controller for a WKWebView on iOS
     4        https://bugs.webkit.org/show_bug.cgi?id=153510
     5
     6        Reviewed by Dan Bernstein.
     7
     8        * UIProcess/API/APIUIClient.h:
     9        (API::UIClient::presentingViewController):
     10        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
     11        * UIProcess/Cocoa/UIDelegate.h:
     12        * UIProcess/Cocoa/UIDelegate.mm:
     13        (WebKit::UIDelegate::setDelegate):
     14        (WebKit::UIDelegate::UIClient::presentingViewController):
     15
    1162016-01-26  Dean Jackson  <dino@apple.com>
    217
  • trunk/Source/WebKit2/UIProcess/API/APIUIClient.h

    r194470 r195623  
    3838OBJC_CLASS NSArray;
    3939OBJC_CLASS _WKActivatedElementInfo;
     40OBJC_CLASS UIViewController;
    4041#endif
    4142
     
    162163    virtual RetainPtr<NSArray> actionsForElement(_WKActivatedElementInfo *, RetainPtr<NSArray> defaultActions) { return defaultActions; }
    163164    virtual void didNotHandleTapAsClick(const WebCore::IntPoint&) { }
     165    virtual UIViewController *presentingViewController() { return nullptr; }
    164166#endif
    165167
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h

    r195574 r195623  
    8484- (UIViewController *)_webView:(WKWebView *)webView previewingViewControllerForElement:(_WKPreviewElementInfo *)elementInfo defaultActions:(NSArray<UIPreviewActionItem *> *)previewActions WK_AVAILABLE(NA, WK_IOS_TBA);
    8585- (void)_webView:(WKWebView *)webView commitPreviewingViewController:(UIViewController *)previewingViewController WK_AVAILABLE(NA, WK_IOS_TBA);
     86
     87- (UIViewController *)_presentingViewControllerForWebView:(WKWebView *)webView WK_AVAILABLE(NA, WK_IOS_TBA);
    8688#else
    8789- (NSMenu *)_webView:(WKWebView *)webView contextMenu:(NSMenu *)menu forElement:(_WKContextMenuElementInfo *)element WK_AVAILABLE(WK_MAC_TBA, NA);
  • trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.h

    r192397 r195623  
    9494        virtual RetainPtr<NSArray> actionsForElement(_WKActivatedElementInfo *, RetainPtr<NSArray> defaultActions) override;
    9595        virtual void didNotHandleTapAsClick(const WebCore::IntPoint&) override;
     96        virtual UIViewController *presentingViewController() override;
    9697#endif
    9798        virtual void imageOrMediaDocumentSizeChanged(const WebCore::IntSize&) override;
     
    122123        bool webViewActionsForElementDefaultActions : 1;
    123124        bool webViewDidNotHandleTapAsClickAtPoint : 1;
     125        bool presentingViewControllerForWebView : 1;
    124126#endif
    125127        bool webViewImageOrMediaDocumentSizeChanged : 1;
  • trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm

    r194470 r195623  
    9393    m_delegateMethods.webViewActionsForElementDefaultActions = [delegate respondsToSelector:@selector(_webView:actionsForElement:defaultActions:)];
    9494    m_delegateMethods.webViewDidNotHandleTapAsClickAtPoint = [delegate respondsToSelector:@selector(_webView:didNotHandleTapAsClickAtPoint:)];
     95    m_delegateMethods.presentingViewControllerForWebView = [delegate respondsToSelector:@selector(_presentingViewControllerForWebView:)];
    9596#endif
    9697    m_delegateMethods.webViewImageOrMediaDocumentSizeChanged = [delegate respondsToSelector:@selector(_webView:imageOrMediaDocumentSizeChanged:)];
     
    381382    [static_cast<id <WKUIDelegatePrivate>>(delegate) _webView:m_uiDelegate.m_webView didNotHandleTapAsClickAtPoint:point];
    382383}
     384
     385UIViewController *UIDelegate::UIClient::presentingViewController()
     386{
     387    if (!m_uiDelegate.m_delegateMethods.presentingViewControllerForWebView)
     388        return nullptr;
     389
     390    auto delegate = m_uiDelegate.m_delegate.get();
     391    if (!delegate)
     392        return nullptr;
     393
     394    return [static_cast<id <WKUIDelegatePrivate>>(delegate) _presentingViewControllerForWebView:m_uiDelegate.m_webView];
     395}
     396
    383397#endif
    384398
Note: See TracChangeset for help on using the changeset viewer.