Title: [179281] trunk/Source/WebKit2
Revision
179281
Author
[email protected]
Date
2015-01-28 13:16:56 -0800 (Wed, 28 Jan 2015)

Log Message

Convert WebPreferences and VisitedLinkProvider to be bridged API::Objects
https://bugs.webkit.org/show_bug.cgi?id=141002

Patch by Sam Weinig <[email protected]> on 2015-01-28
Reviewed by Tim Horton.

* Shared/API/APIObject.h:
Add VisitedLinkProvider type.

* Shared/Cocoa/APIObject.mm:
(API::Object::newObject):
Allocate WebPreferences and VisitedLinkProvider as their Objective-C counterpart.

* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences init]):
Switch to constructInWrapper.

(-[WKPreferences dealloc]):
Call the WebPreferences destructor.

(-[WKPreferences _apiObject]):
Add implementation of the WKObject protocol.

* UIProcess/API/Cocoa/WKPreferencesInternal.h:
Convert to using ObjectStorage.

* UIProcess/API/Cocoa/_WKVisitedLinkProvider.mm:
(-[_WKVisitedLinkProvider init]):
Switch to constructInWrapper.

(-[_WKVisitedLinkProvider dealloc]):
Call the VisitedLinkProvider destructor.

(-[_WKVisitedLinkProvider _apiObject]):
Add implementation of the WKObject protocol.

* UIProcess/API/Cocoa/_WKVisitedLinkProviderInternal.h:
Convert to using ObjectStorage.

* UIProcess/VisitedLinkProvider.cpp:
(WebKit::VisitedLinkProvider::create):
* UIProcess/VisitedLinkProvider.h:
Switch create() to return a Ref.

* UIProcess/WebPreferences.h:
Make the constructor public for use by constructInWrapper.

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::createWebPage):
* UIProcess/WebProcessPool.h:
Store the VisitedLinkProvider in a Ref.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (179280 => 179281)


--- trunk/Source/WebKit2/ChangeLog	2015-01-28 21:01:06 UTC (rev 179280)
+++ trunk/Source/WebKit2/ChangeLog	2015-01-28 21:16:56 UTC (rev 179281)
@@ -1,3 +1,56 @@
+2015-01-28  Sam Weinig  <[email protected]>
+
+        Convert WebPreferences and VisitedLinkProvider to be bridged API::Objects
+        https://bugs.webkit.org/show_bug.cgi?id=141002
+
+        Reviewed by Tim Horton.
+
+        * Shared/API/APIObject.h:
+        Add VisitedLinkProvider type.
+        
+        * Shared/Cocoa/APIObject.mm:
+        (API::Object::newObject):
+        Allocate WebPreferences and VisitedLinkProvider as their Objective-C counterpart.
+        
+        * UIProcess/API/Cocoa/WKPreferences.mm:
+        (-[WKPreferences init]):
+        Switch to constructInWrapper.
+
+        (-[WKPreferences dealloc]):
+        Call the WebPreferences destructor.
+        
+        (-[WKPreferences _apiObject]):
+        Add implementation of the WKObject protocol.
+
+        * UIProcess/API/Cocoa/WKPreferencesInternal.h:
+        Convert to using ObjectStorage.
+
+        * UIProcess/API/Cocoa/_WKVisitedLinkProvider.mm:
+        (-[_WKVisitedLinkProvider init]):
+        Switch to constructInWrapper.
+
+        (-[_WKVisitedLinkProvider dealloc]):
+        Call the VisitedLinkProvider destructor.
+
+        (-[_WKVisitedLinkProvider _apiObject]):
+        Add implementation of the WKObject protocol.
+
+        * UIProcess/API/Cocoa/_WKVisitedLinkProviderInternal.h:
+        Convert to using ObjectStorage.
+
+        * UIProcess/VisitedLinkProvider.cpp:
+        (WebKit::VisitedLinkProvider::create):
+        * UIProcess/VisitedLinkProvider.h:
+        Switch create() to return a Ref.
+
+        * UIProcess/WebPreferences.h:
+        Make the constructor public for use by constructInWrapper.
+
+        * UIProcess/WebProcessPool.cpp:
+        (WebKit::WebProcessPool::createWebPage):
+        * UIProcess/WebProcessPool.h:
+        Store the VisitedLinkProvider in a Ref.
+
 2015-01-28  Dana Burkart  <[email protected]>
 
         Move ASan flag settings from DebugRelease.xcconfig to Base.xcconfig

Modified: trunk/Source/WebKit2/Shared/API/APIObject.h (179280 => 179281)


--- trunk/Source/WebKit2/Shared/API/APIObject.h	2015-01-28 21:01:06 UTC (rev 179280)
+++ trunk/Source/WebKit2/Shared/API/APIObject.h	2015-01-28 21:16:56 UTC (rev 179281)
@@ -141,6 +141,7 @@
         UserMediaPermissionRequest,
         Vibration,
         ViewportAttributes,
+        VisitedLinkProvider,
         WebsiteDataStore,
 
         // Bundle types

Modified: trunk/Source/WebKit2/Shared/Cocoa/APIObject.mm (179280 => 179281)


--- trunk/Source/WebKit2/Shared/Cocoa/APIObject.mm	2015-01-28 21:01:06 UTC (rev 179280)
+++ trunk/Source/WebKit2/Shared/Cocoa/APIObject.mm	2015-01-28 21:16:56 UTC (rev 179281)
@@ -43,6 +43,7 @@
 #import "WKNSURLRequest.h"
 #import "WKNavigationDataInternal.h"
 #import "WKNavigationInternal.h"
+#import "WKPreferencesInternal.h"
 #import "WKProcessPoolInternal.h"
 #import "WKUserContentControllerInternal.h"
 #import "WKUserScriptInternal.h"
@@ -56,6 +57,7 @@
 #import "_WKDownloadInternal.h"
 #import "_WKFrameHandleInternal.h"
 #import "_WKProcessPoolConfigurationInternal.h"
+#import "_WKVisitedLinkProviderInternal.h"
 #import "_WKWebsiteDataStoreInternal.h"
 #import <objc/objc-auto.h>
 
@@ -108,6 +110,10 @@
         wrapper = NSAllocateObject([WKConnection self], size, nullptr);
         break;
 
+    case Type::Preferences:
+        wrapper = [WKPreferences alloc];
+        break;
+
     case Type::ProcessPool:
         wrapper = [WKProcessPool alloc];
         break;
@@ -168,6 +174,10 @@
         wrapper = [WKUserScript alloc];
         break;
 
+    case Type::VisitedLinkProvider:
+        wrapper = [_WKVisitedLinkProvider alloc];
+        break;
+
     case Type::WebsiteDataStore:
         wrapper = [_WKWebsiteDataStore alloc];
         break;

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKPreferences.mm (179280 => 179281)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKPreferences.mm	2015-01-28 21:01:06 UTC (rev 179280)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKPreferences.mm	2015-01-28 21:16:56 UTC (rev 179281)
@@ -39,10 +39,17 @@
     if (!(self = [super init]))
         return nil;
 
-    _preferences = WebKit::WebPreferences::create(String(), "WebKit", "WebKit");
+    API::Object::constructInWrapper<WebKit::WebPreferences>(self, String(), "WebKit", "WebKit");
     return self;
 }
 
+- (void)dealloc
+{
+    _preferences->~WebPreferences();
+
+    [super dealloc];
+}
+
 - (CGFloat)minimumFontSize
 {
     return _preferences->minimumFontSize();
@@ -99,6 +106,13 @@
 
 #endif
 
+#pragma mark WKObject protocol implementation
+
+- (API::Object&)_apiObject
+{
+    return *_preferences;
+}
+
 @end
 
 @implementation WKPreferences (WKPrivate)

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKPreferencesInternal.h (179280 => 179281)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKPreferencesInternal.h	2015-01-28 21:01:06 UTC (rev 179280)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKPreferencesInternal.h	2015-01-28 21:16:56 UTC (rev 179281)
@@ -27,15 +27,22 @@
 
 #if WK_API_ENABLED
 
-#import <wtf/RefPtr.h>
+#import "WKObject.h"
+#import "WebPreferences.h"
 
 namespace WebKit {
-class WebPreferences;
+
+inline WKPreferences *wrapper(WebPreferences& preferences)
+{
+    ASSERT([preferences.wrapper() isKindOfClass:[WKPreferences class]]);
+    return (WKPreferences *)preferences.wrapper();
 }
 
-@interface WKPreferences () {
+}
+
+@interface WKPreferences () <WKObject> {
 @package
-    RefPtr<WebKit::WebPreferences> _preferences;
+    API::ObjectStorage<WebKit::WebPreferences> _preferences;
 }
 
 @end

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKVisitedLinkProvider.mm (179280 => 179281)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKVisitedLinkProvider.mm	2015-01-28 21:01:06 UTC (rev 179280)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKVisitedLinkProvider.mm	2015-01-28 21:16:56 UTC (rev 179281)
@@ -38,11 +38,18 @@
     if (!(self = [super init]))
         return nil;
 
-    _visitedLinkProvider = WebKit::VisitedLinkProvider::create();
+    API::Object::constructInWrapper<WebKit::VisitedLinkProvider>(self);
 
     return self;
 }
 
+- (void)dealloc
+{
+    _visitedLinkProvider->~VisitedLinkProvider();
+
+    [super dealloc];
+}
+
 - (void)addVisitedLinkWithURL:(NSURL *)URL
 {
     auto linkHash = WebCore::visitedLinkHash(URL.absoluteString);
@@ -55,6 +62,13 @@
     _visitedLinkProvider->removeAll();
 }
 
+#pragma mark WKObject protocol implementation
+
+- (API::Object&)_apiObject
+{
+    return *_visitedLinkProvider;
+}
+
 @end
 
 #endif

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKVisitedLinkProviderInternal.h (179280 => 179281)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKVisitedLinkProviderInternal.h	2015-01-28 21:01:06 UTC (rev 179280)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKVisitedLinkProviderInternal.h	2015-01-28 21:16:56 UTC (rev 179281)
@@ -27,15 +27,22 @@
 
 #if WK_API_ENABLED
 
-#import <wtf/RefPtr.h>
+#import "VisitedLinkProvider.h"
+#import "WKObject.h"
 
 namespace WebKit {
-class VisitedLinkProvider;
+
+inline _WKVisitedLinkProvider *wrapper(VisitedLinkProvider& visitedLinkProvider)
+{
+    ASSERT([visitedLinkProvider.wrapper() isKindOfClass:[_WKVisitedLinkProvider class]]);
+    return (_WKVisitedLinkProvider *)visitedLinkProvider.wrapper();
 }
 
-@interface _WKVisitedLinkProvider () {
+}
+
+@interface _WKVisitedLinkProvider () <WKObject> {
 @package
-    RefPtr<WebKit::VisitedLinkProvider> _visitedLinkProvider;
+    API::ObjectStorage<WebKit::VisitedLinkProvider> _visitedLinkProvider;
 }
 
 @end

Modified: trunk/Source/WebKit2/UIProcess/VisitedLinkProvider.cpp (179280 => 179281)


--- trunk/Source/WebKit2/UIProcess/VisitedLinkProvider.cpp	2015-01-28 21:01:06 UTC (rev 179280)
+++ trunk/Source/WebKit2/UIProcess/VisitedLinkProvider.cpp	2015-01-28 21:16:56 UTC (rev 179281)
@@ -47,9 +47,9 @@
     return ++identifier;
 }
 
-PassRefPtr<VisitedLinkProvider> VisitedLinkProvider::create()
+Ref<VisitedLinkProvider> VisitedLinkProvider::create()
 {
-    return adoptRef(new VisitedLinkProvider);
+    return adoptRef(*new VisitedLinkProvider);
 }
 
 VisitedLinkProvider::~VisitedLinkProvider()

Modified: trunk/Source/WebKit2/UIProcess/VisitedLinkProvider.h (179280 => 179281)


--- trunk/Source/WebKit2/UIProcess/VisitedLinkProvider.h	2015-01-28 21:01:06 UTC (rev 179280)
+++ trunk/Source/WebKit2/UIProcess/VisitedLinkProvider.h	2015-01-28 21:16:56 UTC (rev 179281)
@@ -26,6 +26,7 @@
 #ifndef VisitedLinkProvider_h
 #define VisitedLinkProvider_h
 
+#include "APIObject.h"
 #include "MessageReceiver.h"
 #include "VisitedLinkTable.h"
 #include "WebProcessLifetimeObserver.h"
@@ -40,11 +41,13 @@
 class WebPageProxy;
 class WebProcessProxy;
     
-class VisitedLinkProvider : public RefCounted<VisitedLinkProvider>, private IPC::MessageReceiver, public WebProcessLifetimeObserver {
+class VisitedLinkProvider final : public API::ObjectImpl<API::Object::Type::VisitedLinkProvider>, private IPC::MessageReceiver, public WebProcessLifetimeObserver {
 public:
-    static PassRefPtr<VisitedLinkProvider> create();
-    ~VisitedLinkProvider();
+    static Ref<VisitedLinkProvider> create();
 
+    explicit VisitedLinkProvider();
+    virtual ~VisitedLinkProvider();
+
     uint64_t identifier() const { return m_identifier; }
 
     void addProcess(WebProcessProxy&);
@@ -54,8 +57,6 @@
     void removeAll();
 
 private:
-    VisitedLinkProvider();
-
     // IPC::MessageReceiver
     virtual void didReceiveMessage(IPC::Connection&, IPC::MessageDecoder&) override;
 

Modified: trunk/Source/WebKit2/UIProcess/WebPreferences.h (179280 => 179281)


--- trunk/Source/WebKit2/UIProcess/WebPreferences.h	2015-01-28 21:01:06 UTC (rev 179280)
+++ trunk/Source/WebKit2/UIProcess/WebPreferences.h	2015-01-28 21:16:56 UTC (rev 179281)
@@ -47,6 +47,9 @@
     static PassRefPtr<WebPreferences> create(const String& identifier, const String& keyPrefix, const String& globalDebugKeyPrefix);
     static PassRefPtr<WebPreferences> createWithLegacyDefaults(const String& identifier, const String& keyPrefix, const String& globalDebugKeyPrefix);
 
+    explicit WebPreferences(const String& identifier, const String& keyPrefix, const String& globalDebugKeyPrefix);
+    WebPreferences(const WebPreferences&);
+
     virtual ~WebPreferences();
 
     PassRefPtr<WebPreferences> copy() const;
@@ -71,9 +74,6 @@
     static bool anyPagesAreUsingPrivateBrowsing();
 
 private:
-    explicit WebPreferences(const String& identifier, const String& keyPrefix, const String& globalDebugKeyPrefix);
-    WebPreferences(const WebPreferences&);
-
     void platformInitializeStore();
 
     void update();

Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp (179280 => 179281)


--- trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp	2015-01-28 21:01:06 UTC (rev 179280)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp	2015-01-28 21:16:56 UTC (rev 179281)
@@ -842,7 +842,7 @@
     if (!configuration.preferences)
         configuration.preferences = &configuration.pageGroup->preferences();
     if (!configuration.visitedLinkProvider)
-        configuration.visitedLinkProvider = m_visitedLinkProvider.get();
+        configuration.visitedLinkProvider = m_visitedLinkProvider.ptr();
     if (!configuration.websiteDataStore) {
         ASSERT(!configuration.sessionID.isValid());
         configuration.websiteDataStore = m_websiteDataStore.get();

Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.h (179280 => 179281)


--- trunk/Source/WebKit2/UIProcess/WebProcessPool.h	2015-01-28 21:01:06 UTC (rev 179280)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.h	2015-01-28 21:16:56 UTC (rev 179281)
@@ -202,7 +202,7 @@
     void registerURLSchemeAsCachePartitioned(const String&);
 #endif
 
-    VisitedLinkProvider& visitedLinkProvider() { return *m_visitedLinkProvider; }
+    VisitedLinkProvider& visitedLinkProvider() { return m_visitedLinkProvider.get(); }
 
     void setCacheModel(CacheModel);
     CacheModel cacheModel() const { return m_cacheModel; }
@@ -442,7 +442,7 @@
 #if ENABLE(NETSCAPE_PLUGIN_API)
     PluginInfoStore m_pluginInfoStore;
 #endif
-    RefPtr<VisitedLinkProvider> m_visitedLinkProvider;
+    Ref<VisitedLinkProvider> m_visitedLinkProvider;
     bool m_visitedLinksPopulated;
 
     PlugInAutoStartProvider m_plugInAutoStartProvider;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to