Changeset 207447 in webkit


Ignore:
Timestamp:
Oct 17, 2016 6:08:25 PM (8 years ago)
Author:
commit-queue@webkit.org
Message:

Add test and infrastructure for link popover
https://bugs.webkit.org/show_bug.cgi?id=163406

Patch by Megan Gardner <Megan Gardner> on 2016-10-17
Reviewed by Simon Fraser.

Source/WebKit2:

Add infrastructure to see when a link popover appears, and what URL it has loaded.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView didShowForcePressPreview]):
(-[WKWebView didDismissForcePressPreview]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _contentsOfUserInterfaceItem:]):
(-[WKContentView _presentedViewControllerForPreviewItemController:]):
(-[WKContentView _previewItemController:didDismissPreview:committing:]):
(-[WKContentView _previewItemControllerDidCancelPreview:]):

Tools:

Added functionality test for link popovers.
Can query for what URL is loaded, and that the popover has appeared or has
been dismissed.
Added a link popover test.

  • DumpRenderTree/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::platformSetDidShowForcePressPreviewCallback):
(WTR::UIScriptController::platformSetDidDismissForcePressPreviewCallback):
(WTR::UIScriptController::platformSetDidEndFormControlInteractionCallback): Deleted.

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • TestRunnerShared/UIScriptContext/UIScriptContext.h:
  • TestRunnerShared/UIScriptContext/UIScriptController.cpp:

(WTR::UIScriptController::setDidShowForcePressPreviewCallback):
(WTR::UIScriptController::didShowForcePressPreviewCallback):
(WTR::UIScriptController::setDidDismissForcePressPreviewCallback):
(WTR::UIScriptController::didDismissForcePressPreviewCallback):
(WTR::UIScriptController::platformSetDidShowForcePressPreviewCallback):
(WTR::UIScriptController::platformSetDidDismissForcePressPreviewCallback):
(WTR::UIScriptController::didEndFormControlInteractionCallback): Deleted.
(WTR::UIScriptController::platformSetDidEndFormControlInteractionCallback): Deleted.

  • TestRunnerShared/UIScriptContext/UIScriptController.h:
  • WebKitTestRunner/cocoa/TestRunnerWKWebView.h:
  • WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:

(-[TestRunnerWKWebView dealloc]):
(-[TestRunnerWKWebView didShowForcePressPreview]):
(-[TestRunnerWKWebView didDismissForcePressPreview]):

  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::platformSetDidShowForcePressPreviewCallback):
(WTR::UIScriptController::platformSetDidDismissForcePressPreviewCallback):
(WTR::UIScriptController::platformSetDidEndFormControlInteractionCallback): Deleted.

LayoutTests:

  • fast/events/touch/ios/iphone7/force-press-on-link-expected.txt: Added.
  • fast/events/touch/ios/iphone7/force-press-on-link.html: Added.
Location:
trunk
Files:
2 added
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r207444 r207447  
     12016-10-17  Megan Gardner  <megan_gardner@apple.com>
     2
     3        Add test and infrastructure for link popover
     4        https://bugs.webkit.org/show_bug.cgi?id=163406
     5
     6        Reviewed by Simon Fraser.
     7
     8        * fast/events/touch/ios/iphone7/force-press-on-link-expected.txt: Added.
     9        * fast/events/touch/ios/iphone7/force-press-on-link.html: Added.
     10
    1112016-10-17  Joseph Pecoraro  <pecoraro@apple.com>
    212
  • trunk/Source/WebKit2/ChangeLog

    r207445 r207447  
     12016-10-17  Megan Gardner  <megan_gardner@apple.com>
     2
     3        Add test and infrastructure for link popover
     4        https://bugs.webkit.org/show_bug.cgi?id=163406
     5
     6        Reviewed by Simon Fraser.
     7
     8        Add infrastructure to see when a link popover appears, and what URL it has loaded.
     9
     10        * UIProcess/API/Cocoa/WKWebView.mm:
     11        (-[WKWebView didShowForcePressPreview]):
     12        (-[WKWebView didDismissForcePressPreview]):
     13        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
     14        * UIProcess/ios/WKContentViewInteraction.mm:
     15        (-[WKContentView _contentsOfUserInterfaceItem:]):
     16        (-[WKContentView _presentedViewControllerForPreviewItemController:]):
     17        (-[WKContentView _previewItemController:didDismissPreview:committing:]):
     18        (-[WKContentView _previewItemControllerDidCancelPreview:]):
     19
    1202016-10-17  Tim Horton  <timothy_horton@apple.com>
    221
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm

    r207298 r207447  
    45484548}
    45494549
     4550- (void)_didShowForcePressPreview
     4551{
     4552    // For subclasses to override.
     4553}
     4554
     4555- (void)_didDismissForcePressPreview
     4556{
     4557    // For subclasses to override.
     4558}
     4559
    45504560- (NSArray<UIView *> *)_uiTextSelectionRectViews
    45514561{
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h

    r206829 r207447  
    269269- (void)didEndFormControlInteraction WK_API_AVAILABLE(ios(WK_IOS_TBA));
    270270
     271- (void)_didShowForcePressPreview WK_API_AVAILABLE(ios(WK_IOS_TBA));
     272- (void)_didDismissForcePressPreview WK_API_AVAILABLE(ios(WK_IOS_TBA));
     273
    271274@property (nonatomic, readonly) NSArray<UIView *> *_uiTextSelectionRectViews WK_API_AVAILABLE(ios(WK_IOS_TBA));
    272275
  • trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm

    r206702 r207447  
    38503850        return @{ userInterfaceItem: [_actionSheetAssistant currentAvailableActionTitles] };
    38513851   
     3852    if ([userInterfaceItem isEqualToString:@"linkPreviewPopoverContents"]) {
     3853        NSString *url = [_previewItemController previewData][UIPreviewDataLink];
     3854        return @{ userInterfaceItem: @{ @"pageURL": url } };
     3855    }
     3856   
    38523857    return nil;
    38533858}
     
    40234028{
    40244029    id <WKUIDelegatePrivate> uiDelegate = static_cast<id <WKUIDelegatePrivate>>([_webView UIDelegate]);
     4030   
     4031    [_webView _didShowForcePressPreview];
    40254032
    40264033    NSURL *targetURL = controller.previewData[UIPreviewDataLink];
     
    41294136    else if ([uiDelegate respondsToSelector:@selector(_webView:didDismissPreviewViewController:)])
    41304137        [uiDelegate _webView:_webView didDismissPreviewViewController:viewController];
     4138   
     4139    [_webView _didDismissForcePressPreview];
    41314140}
    41324141
     
    41624171{
    41634172    _highlightLongPressCanClick = NO;
     4173   
     4174    [_webView _didDismissForcePressPreview];
    41644175}
    41654176
  • trunk/Tools/ChangeLog

    r207445 r207447  
     12016-10-17  Megan Gardner  <megan_gardner@apple.com>
     2
     3        Add test and infrastructure for link popover
     4        https://bugs.webkit.org/show_bug.cgi?id=163406
     5
     6        Reviewed by Simon Fraser.
     7
     8        Added functionality test for link popovers.
     9        Can query for what URL is loaded, and that the popover has appeared or has
     10        been dismissed.
     11        Added a link popover test.
     12
     13        * DumpRenderTree/ios/UIScriptControllerIOS.mm:
     14        (WTR::UIScriptController::platformSetDidShowForcePressPreviewCallback):
     15        (WTR::UIScriptController::platformSetDidDismissForcePressPreviewCallback):
     16        (WTR::UIScriptController::platformSetDidEndFormControlInteractionCallback): Deleted.
     17        * TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
     18        * TestRunnerShared/UIScriptContext/UIScriptContext.h:
     19        * TestRunnerShared/UIScriptContext/UIScriptController.cpp:
     20        (WTR::UIScriptController::setDidShowForcePressPreviewCallback):
     21        (WTR::UIScriptController::didShowForcePressPreviewCallback):
     22        (WTR::UIScriptController::setDidDismissForcePressPreviewCallback):
     23        (WTR::UIScriptController::didDismissForcePressPreviewCallback):
     24        (WTR::UIScriptController::platformSetDidShowForcePressPreviewCallback):
     25        (WTR::UIScriptController::platformSetDidDismissForcePressPreviewCallback):
     26        (WTR::UIScriptController::didEndFormControlInteractionCallback): Deleted.
     27        (WTR::UIScriptController::platformSetDidEndFormControlInteractionCallback): Deleted.
     28        * TestRunnerShared/UIScriptContext/UIScriptController.h:
     29        * WebKitTestRunner/cocoa/TestRunnerWKWebView.h:
     30        * WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:
     31        (-[TestRunnerWKWebView dealloc]):
     32        (-[TestRunnerWKWebView didShowForcePressPreview]):
     33        (-[TestRunnerWKWebView didDismissForcePressPreview]):
     34        * WebKitTestRunner/ios/UIScriptControllerIOS.mm:
     35        (WTR::UIScriptController::platformSetDidShowForcePressPreviewCallback):
     36        (WTR::UIScriptController::platformSetDidDismissForcePressPreviewCallback):
     37        (WTR::UIScriptController::platformSetDidEndFormControlInteractionCallback): Deleted.
     38
    1392016-10-17  Tim Horton  <timothy_horton@apple.com>
    240
  • trunk/Tools/DumpRenderTree/ios/UIScriptControllerIOS.mm

    r206798 r207447  
    174174{
    175175}
     176   
     177void UIScriptController::platformSetDidShowForcePressPreviewCallback()
     178{
     179}
     180
     181void UIScriptController::platformSetDidDismissForcePressPreviewCallback()
     182{
     183}
    176184
    177185void UIScriptController::platformSetWillBeginZoomingCallback()
  • trunk/Tools/TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl

    r207153 r207447  
    123123    attribute object didEndFormControlInteractionCallback;
    124124
     125    // Force press preview handling
     126    attribute object didShowForcePressPreviewCallback;
     127    attribute object didDismissForcePressPreviewCallback;
     128
    125129    // <select> picker
    126130    void selectFormAccessoryPickerRow(long rowIndex);
  • trunk/Tools/TestRunnerShared/UIScriptContext/UIScriptContext.h

    r206449 r207447  
    5757    CallbackTypeDidStartFormControlInteraction,
    5858    CallbackTypeDidEndFormControlInteraction,
     59    CallbackTypeDidShowForcePressPreview,
     60    CallbackTypeDidDismissForcePressPreview,
    5961    CallbackTypeNonPersistent = firstNonPersistentCallbackID
    6062} CallbackType;
  • trunk/Tools/TestRunnerShared/UIScriptContext/UIScriptController.cpp

    r206798 r207447  
    8080    return m_context->callbackWithID(CallbackTypeDidEndFormControlInteraction);
    8181}
     82   
     83void UIScriptController::setDidShowForcePressPreviewCallback(JSValueRef callback)
     84{
     85    m_context->registerCallback(callback, CallbackTypeDidShowForcePressPreview);
     86    platformSetDidShowForcePressPreviewCallback();
     87}
     88
     89JSValueRef UIScriptController::didShowForcePressPreviewCallback() const
     90{
     91    return m_context->callbackWithID(CallbackTypeDidShowForcePressPreview);
     92}
     93
     94void UIScriptController::setDidDismissForcePressPreviewCallback(JSValueRef callback)
     95{
     96    m_context->registerCallback(callback, CallbackTypeDidDismissForcePressPreview);
     97    platformSetDidDismissForcePressPreviewCallback();
     98}
     99
     100JSValueRef UIScriptController::didDismissForcePressPreviewCallback() const
     101{
     102    return m_context->callbackWithID(CallbackTypeDidDismissForcePressPreview);
     103}
    82104
    83105void UIScriptController::setWillBeginZoomingCallback(JSValueRef callback)
     
    254276{
    255277}
     278   
     279void UIScriptController::platformSetDidShowForcePressPreviewCallback()
     280{
     281}
     282
     283void UIScriptController::platformSetDidDismissForcePressPreviewCallback()
     284{
     285}
    256286
    257287void UIScriptController::platformSetWillBeginZoomingCallback()
  • trunk/Tools/TestRunnerShared/UIScriptContext/UIScriptController.h

    r206798 r207447  
    8686    void setDidEndFormControlInteractionCallback(JSValueRef);
    8787    JSValueRef didEndFormControlInteractionCallback() const;
     88   
     89    void setDidShowForcePressPreviewCallback(JSValueRef);
     90    JSValueRef didShowForcePressPreviewCallback() const;
     91   
     92    void setDidDismissForcePressPreviewCallback(JSValueRef);
     93    JSValueRef didDismissForcePressPreviewCallback() const;
    8894
    8995    void setWillBeginZoomingCallback(JSValueRef);
     
    119125    void platformSetDidStartFormControlInteractionCallback();
    120126    void platformSetDidEndFormControlInteractionCallback();
     127    void platformSetDidShowForcePressPreviewCallback();
     128    void platformSetDidDismissForcePressPreviewCallback();
    121129    void platformSetWillBeginZoomingCallback();
    122130    void platformSetDidEndZoomingCallback();
  • trunk/Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.h

    r204728 r207447  
    3434@property (nonatomic, copy) void (^didStartFormControlInteractionCallback)(void);
    3535@property (nonatomic, copy) void (^didEndFormControlInteractionCallback)(void);
     36@property (nonatomic, copy) void (^didShowForcePressPreviewCallback)(void);
     37@property (nonatomic, copy) void (^didDismissForcePressPreviewCallback)(void);
    3638@property (nonatomic, copy) void (^willBeginZoomingCallback)(void);
    3739@property (nonatomic, copy) void (^didEndZoomingCallback)(void);
  • trunk/Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm

    r204728 r207447  
    7676    self.didStartFormControlInteractionCallback = nil;
    7777    self.didEndFormControlInteractionCallback = nil;
     78    self.didShowForcePressPreviewCallback = nil;
     79    self.didDismissForcePressPreviewCallback = nil;
    7880    self.willBeginZoomingCallback = nil;
    7981    self.didEndZoomingCallback = nil;
     
    98100    if (self.didEndFormControlInteractionCallback)
    99101        self.didEndFormControlInteractionCallback();
     102}
     103
     104- (void)_didShowForcePressPreview
     105{
     106    if (self.didShowForcePressPreviewCallback)
     107        self.didShowForcePressPreviewCallback();
     108}
     109
     110- (void)_didDismissForcePressPreview
     111{
     112    if (self.didDismissForcePressPreviewCallback)
     113        self.didDismissForcePressPreviewCallback();
    100114}
    101115
  • trunk/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm

    r206798 r207447  
    368368    };
    369369}
     370   
     371void UIScriptController::platformSetDidShowForcePressPreviewCallback()
     372{
     373    TestRunnerWKWebView *webView = TestController::singleton().mainWebView()->platformView();
     374    webView.didShowForcePressPreviewCallback = ^ {
     375        if (!m_context)
     376            return;
     377        m_context->fireCallback(CallbackTypeDidShowForcePressPreview);
     378    };
     379}
     380
     381void UIScriptController::platformSetDidDismissForcePressPreviewCallback()
     382{
     383    TestRunnerWKWebView *webView = TestController::singleton().mainWebView()->platformView();
     384    webView.didDismissForcePressPreviewCallback = ^ {
     385        if (!m_context)
     386            return;
     387        m_context->fireCallback(CallbackTypeDidEndFormControlInteraction);
     388    };
     389}
    370390
    371391void UIScriptController::platformSetWillBeginZoomingCallback()
Note: See TracChangeset for help on using the changeset viewer.