Changeset 219034 in webkit


Ignore:
Timestamp:
Jun 30, 2017, 7:25:59 PM (8 years ago)
Author:
Megan Gardner
Message:

Add API to get WKActivatedElementInfo
https://bugs.webkit.org/show_bug.cgi?id=174001
<rdar://problem/29165518>

Source/WebKit2:

Adding a way to get a WKActivatedElementInfo for a point on a WKWebView.

Reviewed by Tim Horton.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView requestActivatedElementAtPosition:completionBlock:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/Cocoa/_WKActivatedElementInfo.mm:

(+[_WKActivatedElementInfo infoWithType:withInteractionInformationAtPosition:]):
(-[_WKActivatedElementInfo infoWithType:withInteractionInformationAtPosition:]):

  • UIProcess/API/Cocoa/_WKActivatedElementInfoInternal.h:

Tools:

Tests for now SPI to get activatedElementInfo.

Reviewed by Tim Horton.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/WKRequestActivatedElementInfo.mm: Added.

(TestWebKitAPI::TEST):

Location:
trunk
Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r219029 r219034  
     12017-06-30  Megan Gardner  <megan_gardner@apple.com>
     2
     3        Add API to get WKActivatedElementInfo
     4        https://bugs.webkit.org/show_bug.cgi?id=174001
     5        <rdar://problem/29165518>
     6       
     7        Adding a way to get a WKActivatedElementInfo for a point on a WKWebView.
     8
     9        Reviewed by Tim Horton.
     10
     11        * UIProcess/API/Cocoa/WKWebView.mm:
     12        (-[WKWebView requestActivatedElementAtPosition:completionBlock:]):
     13        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
     14        * UIProcess/API/Cocoa/_WKActivatedElementInfo.mm:
     15        (+[_WKActivatedElementInfo infoWithType:withInteractionInformationAtPosition:]):
     16        (-[_WKActivatedElementInfo infoWithType:withInteractionInformationAtPosition:]):
     17        * UIProcess/API/Cocoa/_WKActivatedElementInfoInternal.h:
     18
    1192017-06-30  Tim Horton  <timothy_horton@apple.com>
    220
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm

    r219012 r219034  
    8282#import "WebURLSchemeHandlerCocoa.h"
    8383#import "WebViewImpl.h"
     84#import "_WKActivatedElementInfoInternal.h"
    8485#import "_WKDiagnosticLoggingDelegate.h"
    8586#import "_WKFindDelegate.h"
     
    52555256}
    52565257
     5258- (void)_requestActivatedElementAtPosition:(CGPoint)position completionBlock:(void (^)(_WKActivatedElementInfo *))block
     5259{
     5260    auto infoRequest = WebKit::InteractionInformationRequest(WebCore::roundedIntPoint(position));
     5261    infoRequest.includeSnapshot = true;
     5262   
     5263    [_contentView doAfterPositionInformationUpdate:[capturedBlock = makeBlockPtr(block)] (WebKit::InteractionInformationAtPosition information) {
     5264        capturedBlock([_WKActivatedElementInfo activatedElementInfoWithInteractionInformationAtPosition:information]);
     5265    } forRequest:infoRequest];
     5266}
     5267
    52575268- (CGRect)_contentVisibleRect
    52585269{
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h

    r218998 r219034  
    2828#if WK_API_ENABLED
    2929
     30#import <WebKit/_WKActivatedElementInfo.h>
    3031#import <WebKit/_WKFindOptions.h>
    3132#import <WebKit/_WKLayoutMode.h>
     
    363364- (_WKDraggableElementInfo *)_draggableElementAtPosition:(CGPoint)position WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
    364365- (void)_requestDraggableElementAtPosition:(CGPoint)position completionBlock:(void (^)(_WKDraggableElementInfo *))block WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
     366
     367- (void)_requestActivatedElementAtPosition:(CGPoint)position completionBlock:(void (^)(_WKActivatedElementInfo *))block WK_API_AVAILABLE(ios(WK_IOS_TBA));
    365368
    366369#endif // TARGET_OS_IPHONE
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKActivatedElementInfo.h

    r218444 r219034  
    3838    _WKActivatedElementTypeImage,
    3939    _WKActivatedElementTypeAttachment WK_API_AVAILABLE(macosx(10.12), ios(10.0)),
     40    _WKActivatedElementTypeUnspecified WK_API_AVAILABLE(macosx(10.13), ios(11.0)),
    4041} WK_API_AVAILABLE(macosx(10.10), ios(8.0));
    4142
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKActivatedElementInfo.mm

    r213170 r219034  
    5353    RetainPtr<NSImage> _nsImage;
    5454#endif
     55}
     56
     57+ (instancetype)activatedElementInfoWithInteractionInformationAtPosition:(const WebKit::InteractionInformationAtPosition&)information
     58{
     59    return [[[self alloc] _initWithInteractionInformationAtPosition:information] autorelease];
     60}
     61
     62- (instancetype)_initWithInteractionInformationAtPosition:(const WebKit::InteractionInformationAtPosition&)information
     63{
     64    if (!(self = [super init]))
     65        return nil;
     66   
     67    _URL = information.url;
     68    _interactionLocation = information.request.point;
     69    _title = information.title;
     70    _boundingRect = information.bounds;
     71   
     72    if (information.isAttachment)
     73        _type = _WKActivatedElementTypeAttachment;
     74    else if (information.isImage)
     75        _type = _WKActivatedElementTypeImage;
     76    else if (information.isLink)
     77        _type = _WKActivatedElementTypeLink;
     78    else
     79        _type = _WKActivatedElementTypeUnspecified;
     80   
     81    _image = information.image;
     82    _ID = information.idAttribute;
     83   
     84    return self;
    5585}
    5686
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKActivatedElementInfoInternal.h

    r213170 r219034  
    2424 */
    2525
     26#import "InteractionInformationAtPosition.h"
    2627#import "_WKActivatedElementInfo.h"
    2728
     
    3435@interface _WKActivatedElementInfo ()
    3536
     37+ (instancetype)activatedElementInfoWithInteractionInformationAtPosition:(const WebKit::InteractionInformationAtPosition&)information;
     38- (instancetype)_initWithInteractionInformationAtPosition:(const WebKit::InteractionInformationAtPosition&)information;
    3639- (instancetype)_initWithType:(_WKActivatedElementType)type URL:(NSURL *)url location:(CGPoint)location title:(NSString *)title ID:(NSString *)ID rect:(CGRect)rect image:(WebKit::ShareableBitmap*)image;
    3740- (instancetype)_initWithType:(_WKActivatedElementType)type URL:(NSURL *)url location:(CGPoint)location title:(NSString *)title ID:(NSString *)ID rect:(CGRect)rect image:(WebKit::ShareableBitmap*)image userInfo:(NSDictionary *)userInfo;
  • trunk/Tools/ChangeLog

    r219025 r219034  
     12017-06-30  Megan Gardner  <megan_gardner@apple.com>
     2
     3        Add API to get WKActivatedElementInfo
     4        https://bugs.webkit.org/show_bug.cgi?id=174001
     5        <rdar://problem/29165518>
     6       
     7        Tests for now SPI to get activatedElementInfo.
     8
     9        Reviewed by Tim Horton.
     10
     11        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
     12        * TestWebKitAPI/Tests/WebKit2Cocoa/WKRequestActivatedElementInfo.mm: Added.
     13        (TestWebKitAPI::TEST):
     14
    1152017-06-30  Chris Dumez  <cdumez@apple.com>
    216
  • trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj

    r219013 r219034  
    133133                3FCC4FE51EC4E8520076E37C /* PictureInPictureDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3FCC4FE41EC4E8520076E37C /* PictureInPictureDelegate.mm */; };
    134134                3FCC4FE81EC4E8CA0076E37C /* PictureInPictureDelegate.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 3FCC4FE61EC4E87E0076E37C /* PictureInPictureDelegate.html */; };
     135                44817A2F1F0486BF00003810 /* WKRequestActivatedElementInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = 44817A2E1F0486BF00003810 /* WKRequestActivatedElementInfo.mm */; };
    135136                448D7E471EA6C55500ECC756 /* EnvironmentUtilitiesTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 448D7E451EA6C55500ECC756 /* EnvironmentUtilitiesTest.cpp */; };
    136137                46397B951DC2C850009A78AE /* DOMNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = 46397B941DC2C850009A78AE /* DOMNode.mm */; };
     
    11431144                440A1D3814A0103A008A66F2 /* URL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = URL.cpp; sourceTree = "<group>"; };
    11441145                442BBF681C91CAD90017087F /* RefLogger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RefLogger.cpp; sourceTree = "<group>"; };
     1146                44817A2E1F0486BF00003810 /* WKRequestActivatedElementInfo.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKRequestActivatedElementInfo.mm; sourceTree = "<group>"; };
    11451147                448D7E451EA6C55500ECC756 /* EnvironmentUtilitiesTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EnvironmentUtilitiesTest.cpp; sourceTree = "<group>"; };
    11461148                44A622C114A0E2B60048515B /* WTFStringUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WTFStringUtilities.h; sourceTree = "<group>"; };
     
    18901892                                2D00065D1C1F58940088E6A7 /* WKPDFViewResizeCrash.mm */,
    18911893                                2D21FE581F04642800B58E7D /* WKPDFViewStablePresentationUpdateCallback.mm */,
     1894                                44817A2E1F0486BF00003810 /* WKRequestActivatedElementInfo.mm */,
    18921895                                5E4B1D2C1D404C6100053621 /* WKScrollViewDelegateCrash.mm */,
    18931896                                51C683DD1EA134DB00650183 /* WKURLSchemeHandler-1.mm */,
     
    32303233                                51D124981E763B02002B2820 /* WKHTTPCookieStore.mm in Sources */,
    32313234                                7CCE7F1D1A411AE600447C4C /* WKImageCreateCGImageCrash.cpp in Sources */,
     3235                                44817A2F1F0486BF00003810 /* WKRequestActivatedElementInfo.mm in Sources */,
    32323236                                375E0E171D66674400EFEC2C /* WKNSNumber.mm in Sources */,
    32333237                                37B47E301D64E7CA005F4EFF /* WKObject.mm in Sources */,
Note: See TracChangeset for help on using the changeset viewer.