Changeset 221982 in webkit


Ignore:
Timestamp:
Sep 13, 2017 11:38:04 AM (7 years ago)
Author:
achristensen@apple.com
Message:

Add WKUIDelegatePrivate equivalent of WKPageUIClient's setIsResizable, getWindowFrame, and setWindowFrame
https://bugs.webkit.org/show_bug.cgi?id=176857
<rdar://problem/29270035>

Reviewed by Tim Horton.

Source/WebKit:

isResizable is unreachable code because nothing sends Messages::WebPageProxy::GetIsResizable, so I removed it.

  • UIProcess/API/APIUIClient.h:

(API::UIClient::setStatusBarIsVisible):
(API::UIClient::isResizable): Deleted.

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/API/glib/WebKitUIClient.cpp:
  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::setIsResizable):
(WebKit::UIDelegate::UIClient::setWindowFrame):
(WebKit::UIDelegate::UIClient::windowFrame):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::getIsResizable): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:

(-[ModalDelegate _webViewRunModal:]):
(-[ModalDelegate _webView:setResizable:]):
(-[WindowFrameDelegate _webView:setWindowFrame:]):
(-[WindowFrameDelegate _webView:getWindowFrameWithCompletionHandler:]):
(-[WindowFrameDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
(TEST):
(-[ResizableDelegate _webView:setResizable:]):
(-[ResizableDelegate _webView:getIsResizableWithCompletionHandler:]):
(-[ResizableDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):

Location:
trunk
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r221977 r221982  
     12017-09-13  Alex Christensen  <achristensen@webkit.org>
     2
     3        Add WKUIDelegatePrivate equivalent of WKPageUIClient's setIsResizable, getWindowFrame, and setWindowFrame
     4        https://bugs.webkit.org/show_bug.cgi?id=176857
     5        <rdar://problem/29270035>
     6
     7        Reviewed by Tim Horton.
     8
     9        isResizable is unreachable code because nothing sends Messages::WebPageProxy::GetIsResizable, so I removed it.
     10
     11        * UIProcess/API/APIUIClient.h:
     12        (API::UIClient::setStatusBarIsVisible):
     13        (API::UIClient::isResizable): Deleted.
     14        * UIProcess/API/C/WKPage.cpp:
     15        (WKPageSetPageUIClient):
     16        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
     17        * UIProcess/API/glib/WebKitUIClient.cpp:
     18        * UIProcess/Cocoa/UIDelegate.h:
     19        * UIProcess/Cocoa/UIDelegate.mm:
     20        (WebKit::UIDelegate::setDelegate):
     21        (WebKit::UIDelegate::UIClient::setIsResizable):
     22        (WebKit::UIDelegate::UIClient::setWindowFrame):
     23        (WebKit::UIDelegate::UIClient::windowFrame):
     24        * UIProcess/WebPageProxy.cpp:
     25        (WebKit::WebPageProxy::getIsResizable): Deleted.
     26        * UIProcess/WebPageProxy.h:
     27        * UIProcess/WebPageProxy.messages.in:
     28
    1292017-09-13  Youenn Fablet  <youenn@apple.com>
    230
  • trunk/Source/WebKit/UIProcess/API/APIUIClient.h

    r221922 r221982  
    103103    virtual void statusBarIsVisible(WebKit::WebPageProxy&, Function<void(bool)>&& completionHandler) { completionHandler(true); }
    104104    virtual void setStatusBarIsVisible(WebKit::WebPageProxy&, bool) { }
    105     virtual void isResizable(WebKit::WebPageProxy&, Function<void(bool)>&& completionHandler) { completionHandler(true); }
    106105    virtual void setIsResizable(WebKit::WebPageProxy&, bool) { }
    107106
  • trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp

    r221922 r221982  
    18751875        }
    18761876
    1877         void isResizable(WebPageProxy& page, Function<void(bool)>&& completionHandler) final
    1878         {
    1879             if (!m_client.isResizable)
    1880                 return completionHandler(true);
    1881             completionHandler(m_client.isResizable(toAPI(&page), m_client.base.clientInfo));
    1882         }
    1883 
    18841877        void setIsResizable(WebPageProxy& page, bool resizable) final
    18851878        {
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h

    r221930 r221982  
    165165- (void)_webView:(WKWebView *)webview mouseDidMoveOverElement:(_WKHitTestResult *)hitTestResult withFlags:(NSEventModifierFlags)flags userInfo:(id <NSSecureCoding>)userInfo;
    166166- (void)_webView:(WKWebView *)webView didExceedBackgroundResourceLimitWhileInForeground:(_WKResourceLimit)limit WK_API_AVAILABLE(macosx(WK_MAC_TBA));
     167- (void)_webView:(WKWebView *)webView setResizable:(BOOL)isResizable WK_API_AVAILABLE(macosx(WK_MAC_TBA));
     168- (void)_webView:(WKWebView *)webView getWindowFrameWithCompletionHandler:(void (^)(CGRect))completionHandler WK_API_AVAILABLE(macosx(WK_MAC_TBA));
     169- (void)_webView:(WKWebView *)webView setWindowFrame:(CGRect)frame WK_API_AVAILABLE(macosx(WK_MAC_TBA));
    167170- (void)_webView:(WKWebView *)webView unavailablePlugInButtonClickedWithReason:(_WKPlugInUnavailabilityReason)reason plugInInfo:(NSDictionary *)plugInInfo;
    168171- (NSMenu *)_webView:(WKWebView *)webView contextMenu:(NSMenu *)menu forElement:(_WKContextMenuElementInfo *)element WK_API_AVAILABLE(macosx(10.12));
  • trunk/Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp

    r221922 r221982  
    128128    }
    129129
    130     void isResizable(WebPageProxy&, Function<void(bool)>&& completionHandler) final
    131     {
    132         completionHandler(webkit_window_properties_get_resizable(webkit_web_view_get_window_properties(m_webView)));
    133     }
    134 
    135130    void setIsResizable(WebPageProxy&, bool resizable) final
    136131    {
  • trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h

    r221922 r221982  
    102102        void runModal(WebPageProxy&) final;
    103103        void pageDidScroll(WebPageProxy*) final;
     104        void setIsResizable(WebPageProxy&, bool) final;
     105        void setWindowFrame(WebPageProxy&, const WebCore::FloatRect&) final;
     106        void windowFrame(WebPageProxy&, Function<void(WebCore::FloatRect)>&&) final;
    104107        void didNotHandleWheelEvent(WebPageProxy*, const NativeWebWheelEvent&) final;
    105108        void decidePolicyForNotificationPermissionRequest(WebPageProxy&, API::SecurityOrigin&, Function<void(bool)>&&) final;
     
    158161        bool webViewTakeFocus : 1;
    159162        bool webViewDidScroll : 1;
     163        bool webViewSetResizable : 1;
     164        bool webViewSetWindowFrame : 1;
    160165        bool webViewDidNotHandleWheelEvent : 1;
    161166        bool webViewHandleAutoplayEventWithFlags : 1;
    162167        bool webViewUnavailablePlugInButtonClicked : 1;
    163168        bool webViewDidClickAutoFillButtonWithUserInfo : 1;
     169        bool webViewGetWindowFrameWithCompletionHandler : 1;
    164170        bool webViewMouseDidMoveOverElementWithFlagsUserInfo : 1;
    165171        bool webViewGetToolbarsAreVisibleWithCompletionHandler : 1;
  • trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm

    r221922 r221982  
    115115    m_delegateMethods.webViewGetToolbarsAreVisibleWithCompletionHandler = [delegate respondsToSelector:@selector(_webView:getToolbarsAreVisibleWithCompletionHandler:)];
    116116    m_delegateMethods.webViewDidNotHandleWheelEvent = [delegate respondsToSelector:@selector(_webView:didNotHandleWheelEvent:)];
     117    m_delegateMethods.webViewSetResizable = [delegate respondsToSelector:@selector(_webView:setResizable:)];
     118    m_delegateMethods.webViewGetWindowFrameWithCompletionHandler = [delegate respondsToSelector:@selector(_webView:getWindowFrameWithCompletionHandler:)];
     119    m_delegateMethods.webViewSetWindowFrame = [delegate respondsToSelector:@selector(_webView:setWindowFrame:)];
    117120    m_delegateMethods.webViewUnavailablePlugInButtonClicked = [delegate respondsToSelector:@selector(_webView:unavailablePlugInButtonClickedWithReason:plugInInfo:)];
    118121    m_delegateMethods.webViewHandleAutoplayEventWithFlags = [delegate respondsToSelector:@selector(_webView:handleAutoplayEvent:withFlags:)];
     
    517520   
    518521    [(id <WKUIDelegatePrivate>)delegate _webView:m_uiDelegate.m_webView didNotHandleWheelEvent:event.nativeEvent()];
     522}
     523
     524void UIDelegate::UIClient::setIsResizable(WebKit::WebPageProxy&, bool resizable)
     525{
     526    if (!m_uiDelegate.m_delegateMethods.webViewSetResizable)
     527        return;
     528   
     529    auto delegate = m_uiDelegate.m_delegate.get();
     530    if (!delegate)
     531        return;
     532   
     533    [(id <WKUIDelegatePrivate>)delegate _webView:m_uiDelegate.m_webView setResizable:resizable];
     534}
     535
     536void UIDelegate::UIClient::setWindowFrame(WebKit::WebPageProxy&, const WebCore::FloatRect& frame)
     537{
     538    if (!m_uiDelegate.m_delegateMethods.webViewSetWindowFrame)
     539        return;
     540   
     541    auto delegate = m_uiDelegate.m_delegate.get();
     542    if (!delegate)
     543        return;
     544   
     545    [(id <WKUIDelegatePrivate>)delegate _webView:m_uiDelegate.m_webView setWindowFrame:frame];
     546}
     547
     548void UIDelegate::UIClient::windowFrame(WebKit::WebPageProxy&, Function<void(WebCore::FloatRect)>&& completionHandler)
     549{
     550    if (!m_uiDelegate.m_delegateMethods.webViewGetWindowFrameWithCompletionHandler)
     551        return completionHandler({ });
     552   
     553    auto delegate = m_uiDelegate.m_delegate.get();
     554    if (!delegate)
     555        return completionHandler({ });
     556   
     557    [(id <WKUIDelegatePrivate>)delegate _webView:m_uiDelegate.m_webView getWindowFrameWithCompletionHandler:BlockPtr<void(CGRect)>::fromCallable([completionHandler = WTFMove(completionHandler), checker = CompletionHandlerCallChecker::create(delegate.get(), @selector(_webView:getWindowFrameWithCompletionHandler:))](CGRect frame) {
     558        if (checker->completionHandlerHasBeenCalled())
     559            return;
     560        checker->didCallCompletionHandler();
     561        completionHandler(frame);
     562    }).get()];
    519563}
    520564
  • trunk/Source/WebKit/UIProcess/WebPageProxy.cpp

    r221922 r221982  
    40934093}
    40944094
    4095 void WebPageProxy::getIsResizable(Ref<Messages::WebPageProxy::GetIsResizable::DelayedReply>&& reply)
    4096 {
    4097     m_uiClient->isResizable(*this, [reply = WTFMove(reply)] (bool resizable) {
    4098         reply->send(resizable);
    4099     });
    4100 }
    4101 
    41024095void WebPageProxy::setWindowFrame(const FloatRect& newWindowFrame)
    41034096{
  • trunk/Source/WebKit/UIProcess/WebPageProxy.h

    r221899 r221982  
    13161316    void getStatusBarIsVisible(Ref<Messages::WebPageProxy::GetStatusBarIsVisible::DelayedReply>&&);
    13171317    void setIsResizable(bool isResizable);
    1318     void getIsResizable(Ref<Messages::WebPageProxy::GetIsResizable::DelayedReply>&&);
    13191318    void screenToRootView(const WebCore::IntPoint& screenPoint, Ref<Messages::WebPageProxy::ScreenToRootView::DelayedReply>&&);
    13201319    void rootViewToScreen(const WebCore::IntRect& viewRect, Ref<Messages::WebPageProxy::RootViewToScreen::DelayedReply>&&);
  • trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in

    r221887 r221982  
    5858    GetStatusBarIsVisible() -> (bool statusBarIsVisible) Delayed
    5959    SetIsResizable(bool isResizable)
    60     GetIsResizable() -> (bool isResizable) Delayed
    6160    SetWindowFrame(WebCore::FloatRect windowFrame)
    6261    GetWindowFrame() -> (WebCore::FloatRect windowFrame) Delayed
  • trunk/Tools/ChangeLog

    r221977 r221982  
     12017-09-13  Alex Christensen  <achristensen@webkit.org>
     2
     3        Add WKUIDelegatePrivate equivalent of WKPageUIClient's setIsResizable, getWindowFrame, and setWindowFrame
     4        https://bugs.webkit.org/show_bug.cgi?id=176857
     5        <rdar://problem/29270035>
     6
     7        Reviewed by Tim Horton.
     8
     9        * TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
     10        (-[ModalDelegate _webViewRunModal:]):
     11        (-[ModalDelegate _webView:setResizable:]):
     12        (-[WindowFrameDelegate _webView:setWindowFrame:]):
     13        (-[WindowFrameDelegate _webView:getWindowFrameWithCompletionHandler:]):
     14        (-[WindowFrameDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
     15        (TEST):
     16        (-[ResizableDelegate _webView:setResizable:]):
     17        (-[ResizableDelegate _webView:getIsResizableWithCompletionHandler:]):
     18        (-[ResizableDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
     19
    1202017-09-13  Youenn Fablet  <youenn@apple.com>
    221
  • trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm

    r221923 r221982  
    202202}
    203203
     204static bool resizableSet;
     205
    204206@interface ModalDelegate : NSObject <WKUIDelegatePrivate>
    205207@end
     
    209211- (void)_webViewRunModal:(WKWebView *)webView
    210212{
     213    EXPECT_TRUE(resizableSet);
    211214    EXPECT_EQ(webView, createdWebView.get());
    212215    done = true;
     216}
     217
     218- (void)_webView:(WKWebView *)webView setResizable:(BOOL)isResizable
     219{
     220    EXPECT_FALSE(isResizable);
     221    resizableSet = true;
    213222}
    214223
     
    231240    [webView synchronouslyLoadHTMLString:html];
    232241    [webView sendClicksAtPoint:NSMakePoint(20, 600 - 20) numberOfClicks:1];
     242    TestWebKitAPI::Util::run(&done);
     243}
     244
     245static bool receivedWindowFrame;
     246
     247@interface WindowFrameDelegate : NSObject <WKUIDelegatePrivate>
     248@end
     249
     250@implementation WindowFrameDelegate
     251
     252- (void)_webView:(WKWebView *)webView setWindowFrame:(CGRect)frame
     253{
     254    EXPECT_EQ(frame.origin.x, 160);
     255    EXPECT_EQ(frame.origin.y, 230);
     256    EXPECT_EQ(frame.size.width, 350);
     257    EXPECT_EQ(frame.size.height, 450);
     258    receivedWindowFrame = true;
     259}
     260
     261- (void)_webView:(WKWebView *)webView getWindowFrameWithCompletionHandler:(void (^)(CGRect))completionHandler
     262{
     263    completionHandler(CGRectMake(150, 250, 350, 450));
     264}
     265
     266- (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler
     267{
     268    EXPECT_STREQ("350", message.UTF8String);
     269    completionHandler();
     270    done = true;
     271}
     272
     273@end
     274
     275TEST(WebKit, WindowFrame)
     276{
     277    auto delegate = adoptNS([[WindowFrameDelegate alloc] init]);
     278    auto webView = adoptNS([[WKWebView alloc] init]);
     279    [webView setUIDelegate:delegate.get()];
     280    [webView loadHTMLString:@"<script>moveBy(10,20);alert(outerWidth);</script>" baseURL:nil];
     281    TestWebKitAPI::Util::run(&receivedWindowFrame);
    233282    TestWebKitAPI::Util::run(&done);
    234283}
Note: See TracChangeset for help on using the changeset viewer.