Diff
Modified: trunk/Source/WebKit2/ChangeLog (131263 => 131264)
--- trunk/Source/WebKit2/ChangeLog 2012-10-14 00:58:15 UTC (rev 131263)
+++ trunk/Source/WebKit2/ChangeLog 2012-10-14 02:21:36 UTC (rev 131264)
@@ -1,3 +1,40 @@
+2012-10-13 Sam Weinig <[email protected]>
+
+ Use class extension rather than a void* member for new Objective-C WebProcessPlugIn SPI
+ https://bugs.webkit.org/show_bug.cgi?id=99256
+
+ Reviewed by Dan Bernstein.
+
+ A bit of good old fashion cleanup.
+
+ * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h:
+ Remove the void* member.
+
+ * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm:
+ Move members from the WKWebProcessPlugInControllerData struct to a class extension.
+
+ (didCreatePage):
+ (willDestroyPage):
+ (-[WKWebProcessPlugInController _initWithPrincipalClassInstance:bundleRef:]):
+ Directly access the members instead of using properties, now that it is not inconvenient.
+
+ * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.h:
+ Remove the void* member.
+
+ * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
+ Move members from the WKWebProcessPlugInBrowserContextControllerData struct to a class extension.
+
+ (-[WKWebProcessPlugInBrowserContextController _initWithBundlePageRef:]):
+ (-[WKWebProcessPlugInBrowserContextController _bundlePageRef]):
+ Remove unnecessary casts..
+
+ * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerInternal.h:
+ * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h:
+ Add space before the parenthesis of a category to be consistent.
+
+ * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInInternal.h:
+ Remove unnecessary forward declare.
+
2012-10-13 Andy Estes <[email protected]>
Add a private header for WKWebProcessPlugInBrowserContextController that defines a property for getting the WKBundlePageRef
Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h (131263 => 131264)
--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h 2012-10-14 00:58:15 UTC (rev 131263)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h 2012-10-14 02:21:36 UTC (rev 131264)
@@ -39,11 +39,7 @@
@end
WK_EXPORT
-@interface WKWebProcessPlugInController : NSObject {
-@private
- void *_private;
-}
-
+@interface WKWebProcessPlugInController : NSObject
@end
#endif // defined(__LP64__) && defined(__clang__)
Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm (131263 => 131264)
--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm 2012-10-14 00:58:15 UTC (rev 131263)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm 2012-10-14 02:21:36 UTC (rev 131264)
@@ -39,33 +39,25 @@
typedef HashMap<WKBundlePageRef, RetainPtr<WKWebProcessPlugInBrowserContextController *> > BundlePageWrapperCache;
-struct WKWebProcessPlugInControllerData {
+@interface WKWebProcessPlugInController () {
RetainPtr<id<WKWebProcessPlugIn> > _principalClassInstance;
WKRetainPtr<WKBundleRef> _bundleRef;
BundlePageWrapperCache _bundlePageWrapperCache;
-};
-
-@interface WKWebProcessPlugInController ()
-
-@property(readonly) id<WKWebProcessPlugIn> _principalClassInstance;
-@property(readonly) WKBundleRef _bundleRef;
-@property(readonly) BundlePageWrapperCache& _bundlePageWrapperCache;
-
+}
@end
-
@implementation WKWebProcessPlugInController (Internal)
static void didCreatePage(WKBundleRef bundle, WKBundlePageRef page, const void* clientInfo)
{
WKWebProcessPlugInController *plugInController = (WKWebProcessPlugInController *)clientInfo;
- id<WKWebProcessPlugIn> principalClassInstance = plugInController._principalClassInstance;
+ id<WKWebProcessPlugIn> principalClassInstance = plugInController->_principalClassInstance.get();
if ([principalClassInstance respondsToSelector:@selector(webProcessPlugIn:didCreateBrowserContextController:)]) {
- ASSERT(!plugInController._bundlePageWrapperCache.contains(page));
+ ASSERT(!plugInController->_bundlePageWrapperCache.contains(page));
WKWebProcessPlugInBrowserContextController* browserContextController = [[WKWebProcessPlugInBrowserContextController alloc] _initWithBundlePageRef:page];
- plugInController._bundlePageWrapperCache.set(page, browserContextController);
+ plugInController->_bundlePageWrapperCache.set(page, browserContextController);
[principalClassInstance webProcessPlugIn:plugInController didCreateBrowserContextController:browserContextController];
}
@@ -74,12 +66,12 @@
static void willDestroyPage(WKBundleRef bundle, WKBundlePageRef page, const void* clientInfo)
{
WKWebProcessPlugInController *plugInController = (WKWebProcessPlugInController *)clientInfo;
- id<WKWebProcessPlugIn> principalClassInstance = plugInController._principalClassInstance;
+ id<WKWebProcessPlugIn> principalClassInstance = plugInController->_principalClassInstance.get();
// If we never added the bundle page to the cache, which can happen if webProcessPlugIn:didCreateBrowserContextController: is not implemented,
// there is no reason to call webProcessPlugIn:willDestroyBrowserContextController:, so don't.
- BundlePageWrapperCache::iterator it = plugInController._bundlePageWrapperCache.find(page);
- if (it == plugInController._bundlePageWrapperCache.end()) {
+ BundlePageWrapperCache::iterator it = plugInController->_bundlePageWrapperCache.find(page);
+ if (it == plugInController->_bundlePageWrapperCache.end()) {
ASSERT(![principalClassInstance respondsToSelector:@selector(webProcessPlugIn:didCreateBrowserContextController:)]);
return;
}
@@ -87,7 +79,7 @@
if ([principalClassInstance respondsToSelector:@selector(webProcessPlugIn:willDestroyBrowserContextController:)])
[principalClassInstance webProcessPlugIn:plugInController willDestroyBrowserContextController:it->value.get()];
- plugInController._bundlePageWrapperCache.remove(it);
+ plugInController->_bundlePageWrapperCache.remove(it);
}
static void setUpBundleClient(WKWebProcessPlugInController *plugInController, WKBundleRef bundleRef)
@@ -117,9 +109,8 @@
if (!self)
return nil;
- _private = new WKWebProcessPlugInControllerData;
- static_cast<WKWebProcessPlugInControllerData*>(_private)->_principalClassInstance = principalClassInstance;
- static_cast<WKWebProcessPlugInControllerData*>(_private)->_bundleRef = bundleRef;
+ _principalClassInstance = principalClassInstance;
+ _bundleRef = bundleRef;
ASSERT_WITH_MESSAGE(!sharedInstance, "WKWebProcessPlugInController initialized multiple times.");
sharedInstance = self;
@@ -129,31 +120,10 @@
return self;
}
-- (void)dealloc
-{
- delete static_cast<WKWebProcessPlugInControllerData*>(_private);
- [super dealloc];
-}
-
@end
@implementation WKWebProcessPlugInController
-- (id<WKWebProcessPlugIn>)_principalClassInstance
-{
- return static_cast<WKWebProcessPlugInControllerData*>(_private)->_principalClassInstance.get();
-}
-
-- (WKBundleRef)_bundleRef
-{
- return static_cast<WKWebProcessPlugInControllerData*>(_private)->_bundleRef.get();
-}
-
-- (BundlePageWrapperCache&)_bundlePageWrapperCache
-{
- return static_cast<WKWebProcessPlugInControllerData*>(_private)->_bundlePageWrapperCache;
-}
-
@end
#endif // defined(__LP64__) && defined(__clang__)
Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.h (131263 => 131264)
--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.h 2012-10-14 00:58:15 UTC (rev 131263)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.h 2012-10-14 02:21:36 UTC (rev 131264)
@@ -31,10 +31,7 @@
@class WKDOMDocument;
WK_EXPORT
-@interface WKWebProcessPlugInBrowserContextController : NSObject {
-@private
- void *_data;
-}
+@interface WKWebProcessPlugInBrowserContextController : NSObject
@property(readonly) WKDOMDocument *mainFrameDocument;
Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm (131263 => 131264)
--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm 2012-10-14 00:58:15 UTC (rev 131263)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm 2012-10-14 02:21:36 UTC (rev 131264)
@@ -40,10 +40,11 @@
#import <WebCore/Document.h>
#import <WebCore/Frame.h>
-struct WKWebProcessPlugInBrowserContextControllerData {
+@interface WKWebProcessPlugInBrowserContextController () {
// Underlying WKBundlePageRef.
WKRetainPtr<WKBundlePageRef> _bundlePageRef;
-};
+}
+@end
@implementation WKWebProcessPlugInBrowserContextController (Internal)
@@ -53,18 +54,11 @@
if (!self)
return nil;
- _data = new WKWebProcessPlugInBrowserContextControllerData;
- static_cast<WKWebProcessPlugInBrowserContextControllerData*>(_data)->_bundlePageRef = bundlePageRef;
+ _bundlePageRef = bundlePageRef;
return self;
}
-- (void)dealloc
-{
- delete static_cast<WKWebProcessPlugInBrowserContextControllerData*>(_data);
- [super dealloc];
-}
-
@end
@implementation WKWebProcessPlugInBrowserContextController
@@ -80,11 +74,11 @@
@end
-@implementation WKWebProcessPlugInBrowserContextController(Private)
+@implementation WKWebProcessPlugInBrowserContextController (Private)
- (WKBundlePageRef)_bundlePageRef
{
- return static_cast<WKWebProcessPlugInBrowserContextControllerData*>(_data)->_bundlePageRef.get();
+ return _bundlePageRef.get();
}
@end
Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerInternal.h (131263 => 131264)
--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerInternal.h 2012-10-14 00:58:15 UTC (rev 131263)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerInternal.h 2012-10-14 02:21:36 UTC (rev 131264)
@@ -27,7 +27,7 @@
#import "WKWebProcessPlugInBrowserContextController.h"
-@interface WKWebProcessPlugInBrowserContextController(Internal)
+@interface WKWebProcessPlugInBrowserContextController (Internal)
- (id)_initWithBundlePageRef:(WKBundlePageRef)bundlePageRef;
Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h (131263 => 131264)
--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h 2012-10-14 00:58:15 UTC (rev 131263)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h 2012-10-14 02:21:36 UTC (rev 131264)
@@ -27,7 +27,7 @@
#import <WebKit2/WKWebProcessPlugInBrowserContextController.h>
-@interface WKWebProcessPlugInBrowserContextController(Private)
+@interface WKWebProcessPlugInBrowserContextController (Private)
@property(readonly) WKBundlePageRef _bundlePageRef;
Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInInternal.h (131263 => 131264)
--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInInternal.h 2012-10-14 00:58:15 UTC (rev 131263)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInInternal.h 2012-10-14 02:21:36 UTC (rev 131264)
@@ -27,10 +27,6 @@
#import "WKWebProcessPlugIn.h"
-namespace WebKit {
-class InjectedBundle;
-}
-
@interface WKWebProcessPlugInController (Internal)
+ (WKWebProcessPlugInController *)_shared;