Changeset 163629 in webkit


Ignore:
Timestamp:
Feb 7, 2014 10:32:04 AM (10 years ago)
Author:
mitz@apple.com
Message:

[Cocoa] API::FrameHandle has a generic wrapper
https://bugs.webkit.org/show_bug.cgi?id=128366

Reviewed by Anders Carlsson.

Added WKFrameHandle.

  • Shared/API/Cocoa/WKFrameHandle.h: Added.
  • Shared/API/Cocoa/WKFrameHandle.mm: Added.

(-[WKFrameHandle dealloc]): Calls the API::FrameHandle destructor.
(-[WKFrameHandle isEqual:]): Checks for frame ID equality.
(-[WKFrameHandle hash]): Returns the frame ID.
(-[WKFrameHandle _frameID]): Ditto.
(-[WKFrameHandle copyWithZone:]): Retains self.
(+[WKFrameHandle supportsSecureCoding]): Returns YES.
(-[WKFrameHandle initWithCoder:]): Decodes the frame ID and constructs an API::FrameHandle
with it.
(-[WKFrameHandle encodeWithCoder:]): Encodes the frame ID.
(-[WKFrameHandle _apiObject]): Returns the wrapped API::FrameHandle.

  • Shared/API/Cocoa/WKFrameHandleInternal.h: Added.

(WebKit::wrapper): Added. Returns an API::FrameHandle’s wrapper as a WKFrameHandle.

  • Shared/APIFrameHandle.cpp:

(API::FrameHandle::create): Changed to return a PassRefPtr.

  • Shared/APIFrameHandle.h: Made the constructor public for -[WKFrameHandle initWithCoder:].
  • Shared/Cocoa/APIObject.mm:

(API::Object::newObject): Allocate a WKFrameHandle if the object is an API::FrameHandle.

  • WebKit2.xcodeproj/project.pbxproj: Added references to new files.
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h: Declared handle property.
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:

(+[WKWebProcessPlugInFrame lookUpFrameFromHandle:]): Added. Calls WebProcess::webFrame to
look up a frame with the given handle’s frame ID.
(-[WKWebProcessPlugInFrame handle]): Added. Returns a new handle with the frame’s ID.

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrameInternal.h: Updated #import.
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFramePrivate.h: Added.
Location:
trunk/Source/WebKit2
Files:
4 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r163628 r163629  
     12014-02-07  Dan Bernstein  <mitz@apple.com>
     2
     3        [Cocoa] API::FrameHandle has a generic wrapper
     4        https://bugs.webkit.org/show_bug.cgi?id=128366
     5
     6        Reviewed by Anders Carlsson.
     7
     8        Added WKFrameHandle.
     9
     10        * Shared/API/Cocoa/WKFrameHandle.h: Added.
     11        * Shared/API/Cocoa/WKFrameHandle.mm: Added.
     12        (-[WKFrameHandle dealloc]): Calls the API::FrameHandle destructor.
     13        (-[WKFrameHandle isEqual:]): Checks for frame ID equality.
     14        (-[WKFrameHandle hash]): Returns the frame ID.
     15        (-[WKFrameHandle _frameID]): Ditto.
     16        (-[WKFrameHandle copyWithZone:]): Retains self.
     17        (+[WKFrameHandle supportsSecureCoding]): Returns YES.
     18        (-[WKFrameHandle initWithCoder:]): Decodes the frame ID and constructs an API::FrameHandle
     19        with it.
     20        (-[WKFrameHandle encodeWithCoder:]): Encodes the frame ID.
     21        (-[WKFrameHandle _apiObject]): Returns the wrapped API::FrameHandle.
     22        * Shared/API/Cocoa/WKFrameHandleInternal.h: Added.
     23        (WebKit::wrapper): Added. Returns an API::FrameHandle’s wrapper as a WKFrameHandle.
     24
     25        * Shared/APIFrameHandle.cpp:
     26        (API::FrameHandle::create): Changed to return a PassRefPtr.
     27        * Shared/APIFrameHandle.h: Made the constructor public for -[WKFrameHandle initWithCoder:].
     28
     29        * Shared/Cocoa/APIObject.mm:
     30        (API::Object::newObject): Allocate a WKFrameHandle if the object is an API::FrameHandle.
     31
     32        * WebKit2.xcodeproj/project.pbxproj: Added references to new files.
     33
     34        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h: Declared handle property.
     35        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:
     36        (+[WKWebProcessPlugInFrame lookUpFrameFromHandle:]): Added. Calls WebProcess::webFrame to
     37        look up a frame with the given handle’s frame ID.
     38        (-[WKWebProcessPlugInFrame handle]): Added. Returns a new handle with the frame’s ID.
     39        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrameInternal.h: Updated #import.
     40        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFramePrivate.h: Added.
     41
    1422014-02-07  Dan Bernstein  <mitz@apple.com>
    243
  • trunk/Source/WebKit2/Shared/APIFrameHandle.cpp

    r160341 r163629  
    2929namespace API {
    3030
    31 RefPtr<FrameHandle> FrameHandle::create(uint64_t frameID)
     31PassRefPtr<FrameHandle> FrameHandle::create(uint64_t frameID)
    3232{
    3333    return adoptRef(new FrameHandle(frameID));
  • trunk/Source/WebKit2/Shared/APIFrameHandle.h

    r160384 r163629  
    3434class FrameHandle : public ObjectImpl<Object::Type::FrameHandle> {
    3535public:
    36     static RefPtr<FrameHandle> create(uint64_t frameID);
     36    explicit FrameHandle(uint64_t frameID);
     37
     38    static PassRefPtr<FrameHandle> create(uint64_t frameID);
    3739    virtual ~FrameHandle();
    3840
     
    4042
    4143private:
    42     explicit FrameHandle(uint64_t frameID);
    43 
    4444    uint64_t m_frameID;
    4545};
  • trunk/Source/WebKit2/Shared/Cocoa/APIObject.mm

    r162580 r163629  
    3434#import "WKBrowsingContextGroupInternal.h"
    3535#import "WKConnectionInternal.h"
     36#import "WKFrameHandleInternal.h"
    3637#import "WKNSArray.h"
    3738#import "WKNSData.h"
     
    117118        break;
    118119
     120    case Type::FrameHandle:
     121        wrapper = [WKFrameHandle alloc];
     122        break;
     123
    119124    case Type::NavigationData:
    120125        wrapper = [WKNavigationData alloc];
  • trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj

    r163600 r163629  
    566566                373CEAD6185417AE008C363D /* WKNSData.h in Headers */ = {isa = PBXBuildFile; fileRef = 373CEAD4185417AE008C363D /* WKNSData.h */; };
    567567                373CEAD81859553F008C363D /* WKPagePolicyClientInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 373CEAD71859553F008C363D /* WKPagePolicyClientInternal.h */; };
     568                373D122218A473010066D9CC /* WKFrameHandle.mm in Sources */ = {isa = PBXBuildFile; fileRef = 373D122018A473010066D9CC /* WKFrameHandle.mm */; };
     569                373D122318A473010066D9CC /* WKFrameHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = 373D122118A473010066D9CC /* WKFrameHandle.h */; settings = {ATTRIBUTES = (Private, ); }; };
     570                373D122518A473B30066D9CC /* WKBrowsingContextHandleInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 373D122418A473B30066D9CC /* WKBrowsingContextHandleInternal.h */; };
     571                373D122718A473F60066D9CC /* WKFrameHandleInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 373D122618A473F60066D9CC /* WKFrameHandleInternal.h */; };
     572                373D122D18A4B6EB0066D9CC /* WKWebProcessPlugInFramePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 373D122C18A4B6A80066D9CC /* WKWebProcessPlugInFramePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
    568573                374436881820E7240049579F /* WKObject.mm in Sources */ = {isa = PBXBuildFile; fileRef = 374436871820E7240049579F /* WKObject.mm */; };
    569574                3760881E150413E900FC82C7 /* WebRenderObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3760881C150413E900FC82C7 /* WebRenderObject.cpp */; };
     
    22712276                373CEAD4185417AE008C363D /* WKNSData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKNSData.h; sourceTree = "<group>"; };
    22722277                373CEAD71859553F008C363D /* WKPagePolicyClientInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPagePolicyClientInternal.h; sourceTree = "<group>"; };
     2278                373D122018A473010066D9CC /* WKFrameHandle.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKFrameHandle.mm; sourceTree = "<group>"; };
     2279                373D122118A473010066D9CC /* WKFrameHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKFrameHandle.h; sourceTree = "<group>"; };
     2280                373D122418A473B30066D9CC /* WKBrowsingContextHandleInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKBrowsingContextHandleInternal.h; sourceTree = "<group>"; };
     2281                373D122618A473F60066D9CC /* WKFrameHandleInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKFrameHandleInternal.h; sourceTree = "<group>"; };
     2282                373D122C18A4B6A80066D9CC /* WKWebProcessPlugInFramePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebProcessPlugInFramePrivate.h; sourceTree = "<group>"; };
    22732283                374436871820E7240049579F /* WKObject.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKObject.mm; sourceTree = "<group>"; };
    22742284                375FB4731883415600BE34D4 /* Info-iOS.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-iOS.plist"; sourceTree = "<group>"; };
     
    40954105                                1F01816A1858DC1500F92884 /* WKWebProcessPlugInFrame.mm */,
    40964106                                1F01816B1858DC1500F92884 /* WKWebProcessPlugInFrameInternal.h */,
     4107                                373D122C18A4B6A80066D9CC /* WKWebProcessPlugInFramePrivate.h */,
    40974108                                1F01816C1858DC1500F92884 /* WKWebProcessPlugInHitTestResult.h */,
    40984109                                1F01816D1858DC1600F92884 /* WKWebProcessPlugInHitTestResult.mm */,
     
    43904401                                1AE00D4E182D6F5000087DD7 /* WKBrowsingContextHandleInternal.h */,
    43914402                                37DFA6FF1810BB92001F4A9F /* WKFoundation.h */,
     4403                                373D122118A473010066D9CC /* WKFrameHandle.h */,
     4404                                373D122018A473010066D9CC /* WKFrameHandle.mm */,
     4405                                373D122618A473F60066D9CC /* WKFrameHandleInternal.h */,
     4406                                373D122418A473B30066D9CC /* WKBrowsingContextHandleInternal.h */,
    43924407                                1A9E32991822E1CC00F5D04C /* WKRemoteObject.h */,
    43934408                                1A9E32981822E1CC00F5D04C /* WKRemoteObject.mm */,
     
    62706285                                518E8F0C16B2093700E91429 /* DownloadManager.h in Headers */,
    62716286                                1AB7D4CA1288AAA700CFD08C /* DownloadProxy.h in Headers */,
     6287                                373D122D18A4B6EB0066D9CC /* WKWebProcessPlugInFramePrivate.h in Headers */,
    62726288                                1AD25E96167AB08100EA9BCD /* DownloadProxyMap.h in Headers */,
    62736289                                1AB7D61A1288B9D900CFD08C /* DownloadProxyMessages.h in Headers */,
     
    64426458                                1AB16AEA164B3A8800290D62 /* RemoteLayerTreeContext.h in Headers */,
    64436459                                1AB16ADE1648598400290D62 /* RemoteLayerTreeDrawingArea.h in Headers */,
     6460                                373D122518A473B30066D9CC /* WKBrowsingContextHandleInternal.h in Headers */,
    64446461                                1AB16AE21648656D00290D62 /* RemoteLayerTreeDrawingAreaProxy.h in Headers */,
    64456462                                1AA3D75C1651B44F008713D0 /* RemoteLayerTreeHost.h in Headers */,
     
    66046621                                51032F1E180F791700961BB7 /* DatabaseToWebProcessConnectionMessages.h in Headers */,
    66056622                                51A9E1061315CCFC009E7031 /* WebKeyValueStorageManager.h in Headers */,
     6623                                373D122718A473F60066D9CC /* WKFrameHandleInternal.h in Headers */,
    66066624                                1AE00D611831792100087DD7 /* FrameLoadState.h in Headers */,
    66076625                                BCB63478116BF10600603215 /* WebKit2_C.h in Headers */,
     
    68086826                                BCD597D7112B56DC00EC8C23 /* WKPage.h in Headers */,
    68096827                                2D6CD119189058A500E5A4A0 /* ViewSnapshotStore.h in Headers */,
     6828                                373D122318A473010066D9CC /* WKFrameHandle.h in Headers */,
    68106829                                BC7B633712A45ABA00D174A4 /* WKPageGroup.h in Headers */,
    68116830                                BC2D021912AC426C00E732A3 /* WKPageLoadTypes.h in Headers */,
     
    81168135                                BC204EEE11C83EC8008F3375 /* WKBundle.cpp in Sources */,
    81178136                                935EEB9E127761AC003322B8 /* WKBundleBackForwardList.cpp in Sources */,
     8137                                373D122218A473010066D9CC /* WKFrameHandle.mm in Sources */,
    81188138                                935EEBA0127761AC003322B8 /* WKBundleBackForwardListItem.cpp in Sources */,
    81198139                                51FA2D7715212E2600C1BA0B /* WKBundleDOMWindowExtension.cpp in Sources */,
  • trunk/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h

    r163449 r163629  
    3232#import <JavaScriptCore/JSContext.h>
    3333
     34@class WKFrameHandle;
    3435@class WKWebProcessPlugInHitTestResult;
    3536@class WKWebProcessPlugInNodeHandle;
     
    4344@property (nonatomic, readonly) BOOL containsAnyFormElements;
    4445
     46@property (nonatomic, readonly) WKFrameHandle *handle;
     47
    4548- (JSContext *)jsContextForWorld:(WKWebProcessPlugInScriptWorld *)world;
    4649- (WKWebProcessPlugInHitTestResult *)hitTest:(CGPoint)point;
  • trunk/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm

    r163449 r163629  
    2929#if WK_API_ENABLED
    3030
     31#import "WKFrameHandleInternal.h"
    3132#import "WKNSArray.h"
    3233#import "WKNSURLExtras.h"
     
    3435#import "WKWebProcessPlugInNodeHandleInternal.h"
    3536#import "WKWebProcessPlugInScriptWorldInternal.h"
     37#import "WebProcess.h"
    3638#import <JavaScriptCore/JSValue.h>
    3739#import <WebCore/IntPoint.h>
     
    4143@implementation WKWebProcessPlugInFrame {
    4244    API::ObjectStorage<WebFrame> _frame;
     45}
     46
     47+ (instancetype)lookUpFrameFromHandle:(WKFrameHandle *)handle
     48{
     49    WebFrame* webFrame = WebProcess::shared().webFrame(handle._frameID);
     50    if (!webFrame)
     51        return nil;
     52
     53    return wrapper(*webFrame);
    4354}
    4455
     
    8192}
    8293
     94- (WKFrameHandle *)handle
     95{
     96    return [wrapper(*API::FrameHandle::create(_frame->frameID()).leakRef()) autorelease];
     97}
     98
    8399#pragma mark WKObject protocol implementation
    84100
  • trunk/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrameInternal.h

    r160530 r163629  
    2424 */
    2525
    26 #import "WKWebProcessPlugInFrame.h"
     26#import "WKWebProcessPlugInFramePrivate.h"
    2727
    2828#if WK_API_ENABLED
Note: See TracChangeset for help on using the changeset viewer.