Diff
Modified: trunk/Source/WebKit2/ChangeLog (164755 => 164756)
--- trunk/Source/WebKit2/ChangeLog 2014-02-26 23:43:58 UTC (rev 164755)
+++ trunk/Source/WebKit2/ChangeLog 2014-02-26 23:48:33 UTC (rev 164756)
@@ -1,3 +1,27 @@
+2014-02-26 Anders Carlsson <[email protected]>
+
+ Give VisitedLinkProviders an identifier and send them to the web process
+ https://bugs.webkit.org/show_bug.cgi?id=129400
+
+ Reviewed by Dan Bernstein.
+
+ * Shared/WebPageCreationParameters.cpp:
+ (WebKit::WebPageCreationParameters::encode):
+ (WebKit::WebPageCreationParameters::decode):
+ * Shared/WebPageCreationParameters.h:
+ * UIProcess/API/Cocoa/WKVisitedLinkProviderInternal.h:
+ * UIProcess/VisitedLinkProvider.cpp:
+ (WebKit::generateIdentifier):
+ (WebKit::VisitedLinkProvider::VisitedLinkProvider):
+ * UIProcess/VisitedLinkProvider.h:
+ (WebKit::VisitedLinkProvider::identifier):
+ * UIProcess/WebContext.cpp:
+ (WebKit::WebContext::createWebPage):
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::WebPageProxy):
+ (WebKit::WebPageProxy::internalShowContextMenu):
+ * UIProcess/WebPageProxy.h:
+
2014-02-26 Jinwoo Song <[email protected]>
Unreviewed CMAKE build fix after r164751.
Modified: trunk/Source/WebKit2/Shared/WebPageCreationParameters.cpp (164755 => 164756)
--- trunk/Source/WebKit2/Shared/WebPageCreationParameters.cpp 2014-02-26 23:43:58 UTC (rev 164755)
+++ trunk/Source/WebKit2/Shared/WebPageCreationParameters.cpp 2014-02-26 23:48:33 UTC (rev 164756)
@@ -51,6 +51,7 @@
encoder << userAgent;
encoder << sessionState;
encoder << highestUsedBackForwardItemID;
+ encoder << visitedLinkTableID;
encoder << canRunBeforeUnloadConfirmPanel;
encoder << canRunModal;
encoder << deviceScaleFactor;
@@ -105,6 +106,8 @@
return false;
if (!decoder.decode(parameters.highestUsedBackForwardItemID))
return false;
+ if (!decoder.decode(parameters.visitedLinkTableID))
+ return false;
if (!decoder.decode(parameters.canRunBeforeUnloadConfirmPanel))
return false;
if (!decoder.decode(parameters.canRunModal))
Modified: trunk/Source/WebKit2/Shared/WebPageCreationParameters.h (164755 => 164756)
--- trunk/Source/WebKit2/Shared/WebPageCreationParameters.h 2014-02-26 23:43:58 UTC (rev 164755)
+++ trunk/Source/WebKit2/Shared/WebPageCreationParameters.h 2014-02-26 23:48:33 UTC (rev 164756)
@@ -84,6 +84,7 @@
SessionState sessionState;
uint64_t highestUsedBackForwardItemID;
+ uint64_t visitedLinkTableID;
bool canRunBeforeUnloadConfirmPanel;
bool canRunModal;
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKVisitedLinkProvider.mm (164755 => 164756)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKVisitedLinkProvider.mm 2014-02-26 23:43:58 UTC (rev 164755)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKVisitedLinkProvider.mm 2014-02-26 23:48:33 UTC (rev 164756)
@@ -28,8 +28,20 @@
#if WK_API_ENABLED
+#import "VisitedLinkProvider.h"
+
@implementation WKVisitedLinkProvider
+- (instancetype)init
+{
+ if (!(self = [super init]))
+ return nil;
+
+ _visitedLinkProvider = WebKit::VisitedLinkProvider::create();
+
+ return self;
+}
+
@end
#endif
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKVisitedLinkProviderInternal.h (164755 => 164756)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKVisitedLinkProviderInternal.h 2014-02-26 23:43:58 UTC (rev 164755)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKVisitedLinkProviderInternal.h 2014-02-26 23:48:33 UTC (rev 164756)
@@ -27,8 +27,17 @@
#if WK_API_ENABLED
-@interface WKVisitedLinkProvider ()
+#import <wtf/RefPtr.h>
+namespace WebKit {
+class VisitedLinkProvider;
+}
+
+@interface WKVisitedLinkProvider () {
+@package
+ RefPtr<WebKit::VisitedLinkProvider> _visitedLinkProvider;
+}
+
@end
#endif
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (164755 => 164756)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2014-02-26 23:43:58 UTC (rev 164755)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2014-02-26 23:48:33 UTC (rev 164756)
@@ -46,7 +46,7 @@
#import "WKRemoteObjectRegistryInternal.h"
#import "WKUIDelegate.h"
#import "WKWebViewConfigurationPrivate.h"
-#import "WKVisitedLinkProvider.h"
+#import "WKVisitedLinkProviderInternal.h"
#import "WebCertificateInfo.h"
#import "WebContext.h"
#import "WebBackForwardList.h"
@@ -135,6 +135,8 @@
if (WKWebView *relatedWebView = [_configuration _relatedWebView])
webPageConfiguration.relatedPage = relatedWebView->_page.get();
+ webPageConfiguration.visitedLinkProvider = [_configuration visitedLinkProvider]->_visitedLinkProvider.get();
+
#if PLATFORM(IOS)
_scrollView = adoptNS([[WKScrollView alloc] initWithFrame:bounds]);
[_scrollView setInternalDelegate:self];
Modified: trunk/Source/WebKit2/UIProcess/VisitedLinkProvider.cpp (164755 => 164756)
--- trunk/Source/WebKit2/UIProcess/VisitedLinkProvider.cpp 2014-02-26 23:43:58 UTC (rev 164755)
+++ trunk/Source/WebKit2/UIProcess/VisitedLinkProvider.cpp 2014-02-26 23:48:33 UTC (rev 164756)
@@ -37,6 +37,13 @@
static const int VisitedLinkTableMaxLoad = 2;
+static uint64_t generateIdentifier()
+{
+ static uint64_t identifier;
+
+ return ++identifier;
+}
+
PassRefPtr<VisitedLinkProvider> VisitedLinkProvider::create()
{
return adoptRef(new VisitedLinkProvider);
@@ -47,7 +54,8 @@
}
VisitedLinkProvider::VisitedLinkProvider()
- : m_keyCount(0)
+ : m_identifier(generateIdentifier())
+ , m_keyCount(0)
, m_tableSize(0)
, m_pendingVisitedLinksTimer(RunLoop::main(), this, &VisitedLinkProvider::pendingVisitedLinksTimerFired)
{
Modified: trunk/Source/WebKit2/UIProcess/VisitedLinkProvider.h (164755 => 164756)
--- trunk/Source/WebKit2/UIProcess/VisitedLinkProvider.h 2014-02-26 23:43:58 UTC (rev 164755)
+++ trunk/Source/WebKit2/UIProcess/VisitedLinkProvider.h 2014-02-26 23:48:33 UTC (rev 164756)
@@ -43,6 +43,8 @@
static PassRefPtr<VisitedLinkProvider> create();
~VisitedLinkProvider();
+ uint64_t identifier() const { return m_identifier; }
+
void addVisitedLink(WebCore::LinkHash);
void processDidFinishLaunching(WebProcessProxy*);
@@ -56,6 +58,8 @@
HashSet<WebProcessProxy*> m_processesWithVisitedLinkState;
HashSet<WebProcessProxy*> m_processesWithoutVisitedLinkState;
+ uint64_t m_identifier;
+
unsigned m_keyCount;
unsigned m_tableSize;
VisitedLinkTable m_table;
Modified: trunk/Source/WebKit2/UIProcess/WebContext.cpp (164755 => 164756)
--- trunk/Source/WebKit2/UIProcess/WebContext.cpp 2014-02-26 23:43:58 UTC (rev 164755)
+++ trunk/Source/WebKit2/UIProcess/WebContext.cpp 2014-02-26 23:48:33 UTC (rev 164756)
@@ -779,6 +779,8 @@
configuration.pageGroup = &m_defaultPageGroup.get();
if (!configuration.preferences)
configuration.preferences = &configuration.pageGroup->preferences();
+ if (!configuration.visitedLinkProvider)
+ configuration.visitedLinkProvider = m_visitedLinkProvider.get();
if (!configuration.session)
configuration.session = configuration.preferences->privateBrowsingEnabled() ? &API::Session::legacyPrivateSession() : &API::Session::defaultSession();
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (164755 => 164756)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2014-02-26 23:43:58 UTC (rev 164755)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2014-02-26 23:48:33 UTC (rev 164756)
@@ -259,6 +259,7 @@
, m_process(process)
, m_pageGroup(*configuration.pageGroup)
, m_preferences(*configuration.preferences)
+ , m_visitedLinkProvider(*configuration.visitedLinkProvider)
, m_mainFrame(nullptr)
, m_userAgent(standardUserAgent())
, m_geolocationPermissionRequestManager(*this)
@@ -3984,6 +3985,7 @@
parameters.userAgent = userAgent();
parameters.sessionState = SessionState(m_backForwardList->entries(), m_backForwardList->currentIndex());
parameters.highestUsedBackForwardItemID = WebBackForwardListItem::highedUsedItemID();
+ parameters.visitedLinkTableID = m_visitedLinkProvider->identifier();
parameters.canRunBeforeUnloadConfirmPanel = m_uiClient->canRunBeforeUnloadConfirmPanel();
parameters.canRunModal = m_canRunModal;
parameters.deviceScaleFactor = deviceScaleFactor();
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (164755 => 164756)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2014-02-26 23:43:58 UTC (rev 164755)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2014-02-26 23:48:33 UTC (rev 164756)
@@ -144,6 +144,7 @@
class RemoteLayerTreeTransaction;
class RemoteScrollingCoordinatorProxy;
class StringPairVector;
+class VisitedLinkProvider;
class WebBackForwardList;
class WebBackForwardListItem;
class WebContextMenuProxy;
@@ -321,6 +322,7 @@
struct WebPageConfiguration {
WebPageGroup* pageGroup = nullptr;
WebPreferences* preferences = nullptr;
+ VisitedLinkProvider* visitedLinkProvider = nullptr;
API::Session* session = nullptr;
WebPageProxy* relatedPage = nullptr;
};
@@ -1224,6 +1226,7 @@
Ref<WebProcessProxy> m_process;
Ref<WebPageGroup> m_pageGroup;
Ref<WebPreferences> m_preferences;
+ Ref<VisitedLinkProvider> m_visitedLinkProvider;
RefPtr<WebFrameProxy> m_mainFrame;
RefPtr<WebFrameProxy> m_focusedFrame;