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;