Changeset 249448 in webkit


Ignore:
Timestamp:
Sep 3, 2019 5:39:10 PM (5 years ago)
Author:
dino@apple.com
Message:

Test for ContextMenus with images
https://bugs.webkit.org/show_bug.cgi?id=201437

Reviewed by Wenson Hsieh.

Add a test for ContextMenus that trigger on images, and make
sure that they ask for alternate URLs (added in r249171).

  • TestWebKitAPI/Tests/WebKitCocoa/ContextMenus.mm:

(contextMenuWebViewDriver):
(-[TestContextMenuImageUIDelegate _webView:contextMenuConfigurationForElement:completionHandler:]):
(-[TestContextMenuImageUIDelegate _webView:alternateURLFromImage:userInfo:]):
(-[TestContextMenuImageUIDelegate webView:contextMenuWillPresentForElement:]):
(-[TestContextMenuImageUIDelegate webView:contextMenuForElement:willCommitWithAnimator:]):
(-[TestContextMenuImageUIDelegate webView:contextMenuDidEndForElement:]):
(TEST):

Location:
trunk/Tools
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r249443 r249448  
     12019-09-03  Dean Jackson  <dino@apple.com>
     2
     3        Test for ContextMenus with images
     4        https://bugs.webkit.org/show_bug.cgi?id=201437
     5
     6        Reviewed by Wenson Hsieh.
     7
     8        Add a test for ContextMenus that trigger on images, and make
     9        sure that they ask for alternate URLs (added in r249171).
     10
     11        * TestWebKitAPI/Tests/WebKitCocoa/ContextMenus.mm:
     12        (contextMenuWebViewDriver):
     13        (-[TestContextMenuImageUIDelegate _webView:contextMenuConfigurationForElement:completionHandler:]):
     14        (-[TestContextMenuImageUIDelegate _webView:alternateURLFromImage:userInfo:]):
     15        (-[TestContextMenuImageUIDelegate webView:contextMenuWillPresentForElement:]):
     16        (-[TestContextMenuImageUIDelegate webView:contextMenuForElement:willCommitWithAnimator:]):
     17        (-[TestContextMenuImageUIDelegate webView:contextMenuDidEndForElement:]):
     18        (TEST):
     19
    1202019-09-03  Jonathan Bedard  <jbedard@apple.com>
    221
  • trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/ContextMenus.mm

    r248900 r249448  
    4141static bool previewActionItemsCalled;
    4242static bool didEndCalled;
     43static bool alternateURLRequested;
    4344static RetainPtr<NSURL> linkURL;
    4445
    45 static RetainPtr<TestContextMenuDriver> contextMenuWebViewDriver(Class delegateClass)
     46static RetainPtr<TestContextMenuDriver> contextMenuWebViewDriver(Class delegateClass, NSString *customHTMLString = nil)
    4647{
    4748    static auto window = adoptNS([[UIWindow alloc] initWithFrame:NSMakeRect(0, 0, 800, 600)]);
     
    5455    [window addSubview:webView];
    5556    [webView setUIDelegate:uiDelegate.get()];
    56     linkURL = [NSURL URLWithString:@"http://127.0.0.1/"];
    57     [webView synchronouslyLoadHTMLString:[NSString stringWithFormat:@"<a href='%@'>This is a link</a>", linkURL.get()]];
     57    if (!customHTMLString) {
     58        linkURL = [NSURL URLWithString:@"http://127.0.0.1/"];
     59        [webView synchronouslyLoadHTMLString:[NSString stringWithFormat:@"<a href='%@'>This is a link</a>", linkURL.get()]];
     60    } else
     61        [webView synchronouslyLoadHTMLString:customHTMLString];
    5862    return driver;
    5963}
     
    125129}
    126130
     131@interface TestContextMenuImageUIDelegate : NSObject <WKUIDelegate>
     132@end
     133
     134@implementation TestContextMenuImageUIDelegate
     135
     136- (void)_webView:(WKWebView *)webView contextMenuConfigurationForElement:(WKContextMenuElementInfo *)elementInfo completionHandler:(void(^)(UIContextMenuConfiguration * _Nullable))completionHandler
     137{
     138    contextMenuRequested = true;
     139    completionHandler(nil);
     140}
     141
     142- (NSURL *)_webView:(WKWebView *)webView alternateURLFromImage:(UIImage *)image userInfo:(NSDictionary **)userInfo
     143{
     144    alternateURLRequested = true;
     145    return linkURL.get();
     146}
     147
     148- (void)webView:(WKWebView *)webView contextMenuWillPresentForElement:(WKContextMenuElementInfo *)elementInfo
     149{
     150    willPresentCalled = true;
     151    EXPECT_TRUE([elementInfo.linkURL.absoluteString isEqualToString:[linkURL absoluteString]]);
     152}
     153
     154- (void)webView:(WKWebView *)webView contextMenuForElement:(WKContextMenuElementInfo *)elementInfo willCommitWithAnimator:(id<UIContextMenuInteractionCommitAnimating>)animator
     155{
     156    willCommitCalled = true;
     157}
     158
     159- (void)webView:(WKWebView *)webView contextMenuDidEndForElement:(WKContextMenuElementInfo *)elementInfo
     160{
     161    didEndCalled = true;
     162}
     163
     164@end
     165
     166TEST(WebKit, ContextMenuImage)
     167{
     168    linkURL = [NSURL URLWithString:@"http://127.0.0.1/image"];
     169    auto driver = contextMenuWebViewDriver([TestContextMenuImageUIDelegate class], @"<img style='width:400px;height:400px' src='data:image/png;base64,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'>");
     170    [driver begin:^(BOOL result) {
     171        EXPECT_TRUE(result);
     172        [driver clickDown];
     173        [driver clickUp];
     174    }];
     175    TestWebKitAPI::Util::run(&willPresentCalled);
     176    EXPECT_TRUE(contextMenuRequested);
     177    EXPECT_TRUE(alternateURLRequested);
     178    EXPECT_TRUE(willPresentCalled);
     179    EXPECT_FALSE(willCommitCalled);
     180    EXPECT_FALSE(didEndCalled);
     181}
     182
     183
    127184#pragma clang diagnostic push
    128185#pragma clang diagnostic ignored "-Wdeprecated-declarations"
Note: See TracChangeset for help on using the changeset viewer.