Title: [164756] trunk/Source/WebKit2
Revision
164756
Author
[email protected]
Date
2014-02-26 15:48:33 -0800 (Wed, 26 Feb 2014)

Log Message

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:

Modified Paths

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;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to