Changeset 160280 in webkit
- Timestamp:
- Dec 7, 2013 10:17:18 PM (10 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r160278 r160280 1 2013-12-07 Sam Weinig <sam@webkit.org> 2 3 [Cocoa] Make WKWebProcessPlugInController work with WKObject wrapping 4 https://bugs.webkit.org/show_bug.cgi?id=125404 5 6 Reviewed by Dan Bernstein. 7 8 * Shared/Cocoa/APIObject.mm: 9 (API::Object::newObject): 10 * Shared/mac/ObjCObjectGraphCoders.mm: 11 * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm: 12 (-[WKWebProcessPlugInController dealloc]): 13 (didCreatePage): 14 (willDestroyPage): 15 (-[WKWebProcessPlugInController _setPrincipalClassInstance:]): 16 (-[WKWebProcessPlugInController API::]): 17 * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInInternal.h: 18 (WebKit::wrapper): 19 * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInPrivate.h: 20 * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm: 21 (WebKit::InjectedBundle::load): 22 1 23 2013-12-07 Dan Bernstein <mitz@apple.com> 2 24 … … 6 28 Reviewed by Sam Weinig. 7 29 8 Added WKNSData, an NSData subclass that conf roms to WKObject and wraps a WebData.30 Added WKNSData, an NSData subclass that conforms to WKObject and wraps a WebData. 9 31 10 32 * Shared/Cocoa/APIObject.mm: -
trunk/Source/WebKit2/Shared/Cocoa/APIObject.mm
r160278 r160280 45 45 #import "WKProcessGroupInternal.h" 46 46 #import "WKWebProcessPlugInBrowserContextControllerInternal.h" 47 #import "WKWebProcessPlugInInternal.h" 47 48 48 49 namespace API { … … 81 82 case Type::BackForwardListItem: 82 83 wrapper = [WKBackForwardListItem alloc]; 84 break; 85 86 case Type::Bundle: 87 wrapper = [WKWebProcessPlugInController alloc]; 83 88 break; 84 89 -
trunk/Source/WebKit2/Shared/mac/ObjCObjectGraphCoders.mm
r160277 r160280 41 41 #import "WKBundleAPICast.h" 42 42 #import "WKWebProcessPlugInBrowserContextControllerInternal.h" 43 #import "WKWebProcessPlugInBrowserContextControllerPrivate.h"44 43 #import "WKWebProcessPlugInInternal.h" 45 44 #import "WebPage.h" -
trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm
r160277 r160280 29 29 #if WK_API_ENABLED 30 30 31 #import "InjectedBundle.h"32 31 #import "WKConnectionInternal.h" 33 32 #import "WKBundle.h" … … 40 39 41 40 @interface WKWebProcessPlugInController () { 41 API::ObjectStorage<InjectedBundle> _bundle; 42 42 RetainPtr<id <WKWebProcessPlugIn>> _principalClassInstance; 43 RefPtr<InjectedBundle> _bundle;44 RetainPtr<WKConnection *> _connectionWrapper;45 43 } 46 44 @end … … 48 46 @implementation WKWebProcessPlugInController 49 47 48 - (void)dealloc 49 { 50 _bundle->~InjectedBundle(); 51 52 [super dealloc]; 53 } 54 50 55 static void didCreatePage(WKBundleRef bundle, WKBundlePageRef page, const void* clientInfo) 51 56 { 52 57 WKWebProcessPlugInController *plugInController = (WKWebProcessPlugInController *)clientInfo; 53 id <WKWebProcessPlugIn> principalClassInstance = plugInController->_principalClassInstance.get();58 id <WKWebProcessPlugIn> principalClassInstance = plugInController->_principalClassInstance.get(); 54 59 55 60 if ([principalClassInstance respondsToSelector:@selector(webProcessPlugIn:didCreateBrowserContextController:)]) … … 60 65 { 61 66 WKWebProcessPlugInController *plugInController = (WKWebProcessPlugInController *)clientInfo; 62 id <WKWebProcessPlugIn> principalClassInstance = plugInController->_principalClassInstance.get();67 id <WKWebProcessPlugIn> principalClassInstance = plugInController->_principalClassInstance.get(); 63 68 64 69 if ([principalClassInstance respondsToSelector:@selector(webProcessPlugIn:willDestroyBrowserContextController:)]) … … 79 84 } 80 85 81 static WKWebProcessPlugInController *sharedInstance; 82 83 + (WKWebProcessPlugInController *)_shared 86 - (void)_setPrincipalClassInstance:(id <WKWebProcessPlugIn>)principalClassInstance 84 87 { 85 ASSERT_WITH_MESSAGE(sharedInstance, "+[WKWebProcessPlugIn _shared] called without first initializing it."); 86 return sharedInstance; 87 } 88 89 - (id)_initWithPrincipalClassInstance:(id<WKWebProcessPlugIn>)principalClassInstance bundle:(InjectedBundle&)bundle 90 { 91 self = [super init]; 92 if (!self) 93 return nil; 94 88 ASSERT(!_principalClassInstance); 95 89 _principalClassInstance = principalClassInstance; 96 _bundle = &bundle;97 98 ASSERT_WITH_MESSAGE(!sharedInstance, "WKWebProcessPlugInController initialized multiple times.");99 sharedInstance = self;100 90 101 91 setUpBundleClient(self, *_bundle); 102 103 return self;104 92 } 105 93 … … 107 95 { 108 96 return wrapper(*_bundle->webConnectionToUIProcess()); 97 } 98 99 #pragma mark WKObject protocol implementation 100 101 - (API::Object&)_apiObject 102 { 103 return *_bundle; 109 104 } 110 105 -
trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInInternal.h
r160277 r160280 24 24 */ 25 25 26 #import "WKWebProcessPlugIn .h"26 #import "WKWebProcessPlugInPrivate.h" 27 27 28 28 #if WK_API_ENABLED 29 29 30 30 #import "InjectedBundle.h" 31 #import "WKObject.h" 31 32 32 @interface WKWebProcessPlugInController () 33 namespace WebKit { 33 34 34 + (WKWebProcessPlugInController *)_shared; 35 - (id)_initWithPrincipalClassInstance:(id<WKWebProcessPlugIn>)principalClassInstance bundle:(WebKit::InjectedBundle&)bundle; 35 inline WKWebProcessPlugInController *wrapper(InjectedBundle& bundle) 36 { 37 ASSERT([bundle.wrapper() isKindOfClass:[WKWebProcessPlugInController class]]); 38 return (WKWebProcessPlugInController *)bundle.wrapper(); 39 } 36 40 41 } 42 43 @interface WKWebProcessPlugInController () <WKObject> 44 - (void)_setPrincipalClassInstance:(id <WKWebProcessPlugIn>)principalClassInstance; 37 45 @end 38 46 -
trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInPrivate.h
r157620 r160280 30 30 @interface WKWebProcessPlugInController (Private) 31 31 32 @property (readonly) WKBundleRef _bundleRef;32 @property (readonly) WKBundleRef _bundleRef; 33 33 34 34 @end -
trunk/Source/WebKit2/WebProcess/InjectedBundle/mac/InjectedBundleMac.mm
r160277 r160280 99 99 } 100 100 101 id <WKWebProcessPlugIn> instance = (id<WKWebProcessPlugIn>)[[principalClass alloc] init];101 id <WKWebProcessPlugIn> instance = (id <WKWebProcessPlugIn>)[[principalClass alloc] init]; 102 102 if (!instance) { 103 103 WTFLogAlways("InjectedBundle::load failed - Could not initialize an instance of the principal class.\n"); … … 105 105 } 106 106 107 // Create the shared WKWebProcessPlugInController.108 [ [WKWebProcessPlugInController alloc] _initWithPrincipalClassInstance:instance bundle:*this];107 WKWebProcessPlugInController* plugInController = WebKit::wrapper(*this); 108 [plugInController _setPrincipalClassInstance:instance]; 109 109 110 110 if ([instance respondsToSelector:@selector(webProcessPlugIn:initializeWithObject:)]) { … … 112 112 if (initializationUserData && initializationUserData->type() == API::Object::Type::ObjCObjectGraph) 113 113 objCInitializationUserData = static_cast<ObjCObjectGraph*>(initializationUserData)->rootObject(); 114 [instance webProcessPlugIn: [WKWebProcessPlugInController _shared]initializeWithObject:objCInitializationUserData.get()];114 [instance webProcessPlugIn:plugInController initializeWithObject:objCInitializationUserData.get()]; 115 115 } else if ([instance respondsToSelector:@selector(webProcessPlugInInitialize:)]) { 116 116 #pragma clang diagnostic push 117 117 #pragma clang diagnostic ignored "-Wdeprecated-declarations" 118 [instance webProcessPlugInInitialize: [WKWebProcessPlugInController _shared]];118 [instance webProcessPlugInInitialize:plugInController]; 119 119 #pragma clang diagnostic pop 120 120 }
Note: See TracChangeset
for help on using the changeset viewer.