Title: [164810] trunk/Source/WebKit2
Revision
164810
Author
[email protected]
Date
2014-02-27 10:09:04 -0800 (Thu, 27 Feb 2014)

Log Message

Look up already existing VisitedLinkTableController objects by identifier
https://bugs.webkit.org/show_bug.cgi?id=129431

Reviewed by Dan Bernstein.

* WebProcess/WebPage/VisitedLinkTableController.cpp:
(WebKit::visitedLinkTableControllers):
(WebKit::VisitedLinkTableController::getOrCreate):
(WebKit::VisitedLinkTableController::VisitedLinkTableController):
(WebKit::VisitedLinkTableController::~VisitedLinkTableController):
* WebProcess/WebPage/VisitedLinkTableController.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::WebPage):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (164809 => 164810)


--- trunk/Source/WebKit2/ChangeLog	2014-02-27 18:07:12 UTC (rev 164809)
+++ trunk/Source/WebKit2/ChangeLog	2014-02-27 18:09:04 UTC (rev 164810)
@@ -1,3 +1,19 @@
+2014-02-27  Anders Carlsson  <[email protected]>
+
+        Look up already existing VisitedLinkTableController objects by identifier
+        https://bugs.webkit.org/show_bug.cgi?id=129431
+
+        Reviewed by Dan Bernstein.
+
+        * WebProcess/WebPage/VisitedLinkTableController.cpp:
+        (WebKit::visitedLinkTableControllers):
+        (WebKit::VisitedLinkTableController::getOrCreate):
+        (WebKit::VisitedLinkTableController::VisitedLinkTableController):
+        (WebKit::VisitedLinkTableController::~VisitedLinkTableController):
+        * WebProcess/WebPage/VisitedLinkTableController.h:
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::WebPage):
+
 2014-02-27  Carlos Garcia Campos  <[email protected]>
 
         [GTK][WK2] Blocks when fetching plugins information

Modified: trunk/Source/WebKit2/WebProcess/WebPage/VisitedLinkTableController.cpp (164809 => 164810)


--- trunk/Source/WebKit2/WebProcess/WebPage/VisitedLinkTableController.cpp	2014-02-27 18:07:12 UTC (rev 164809)
+++ trunk/Source/WebKit2/WebProcess/WebPage/VisitedLinkTableController.cpp	2014-02-27 18:09:04 UTC (rev 164810)
@@ -27,22 +27,41 @@
 #include "VisitedLinkTableController.h"
 
 #include "WebProcess.h"
+#include <wtf/NeverDestroyed.h>
 
 using namespace WebCore;
 
 namespace WebKit {
 
-PassRefPtr<VisitedLinkTableController> VisitedLinkTableController::create()
+static HashMap<uint64_t, VisitedLinkTableController*>& visitedLinkTableControllers()
 {
-    return adoptRef(new VisitedLinkTableController);
+    static NeverDestroyed<HashMap<uint64_t, VisitedLinkTableController*>> visitedLinkTableControllers;
+
+    return visitedLinkTableControllers;
 }
 
-VisitedLinkTableController::VisitedLinkTableController()
+PassRefPtr<VisitedLinkTableController> VisitedLinkTableController::getOrCreate(uint64_t identifier)
 {
+    auto& visitedLinkTableControllerPtr = visitedLinkTableControllers().add(identifier, nullptr).iterator->value;
+    if (visitedLinkTableControllerPtr)
+        return visitedLinkTableControllerPtr;
+
+    RefPtr<VisitedLinkTableController> visitedLinkTableController = adoptRef(new VisitedLinkTableController(identifier));
+    visitedLinkTableControllerPtr = visitedLinkTableController.get();
+
+    return visitedLinkTableController.release();
 }
 
+VisitedLinkTableController::VisitedLinkTableController(uint64_t identifier)
+    : m_identifier(identifier)
+{
+}
+
 VisitedLinkTableController::~VisitedLinkTableController()
 {
+    ASSERT(visitedLinkTableControllers().contains(m_identifier));
+
+    visitedLinkTableControllers().remove(m_identifier);
 }
 
 bool VisitedLinkTableController::isLinkVisited(Page&, LinkHash linkHash, const URL&, const AtomicString&)

Modified: trunk/Source/WebKit2/WebProcess/WebPage/VisitedLinkTableController.h (164809 => 164810)


--- trunk/Source/WebKit2/WebProcess/WebPage/VisitedLinkTableController.h	2014-02-27 18:07:12 UTC (rev 164809)
+++ trunk/Source/WebKit2/WebProcess/WebPage/VisitedLinkTableController.h	2014-02-27 18:09:04 UTC (rev 164810)
@@ -32,14 +32,16 @@
 
 class VisitedLinkTableController final : public WebCore::VisitedLinkStore {
 public:
-    static PassRefPtr<VisitedLinkTableController> create();
+    static PassRefPtr<VisitedLinkTableController> getOrCreate(uint64_t identifier);
     virtual ~VisitedLinkTableController();
 
 private:
-    VisitedLinkTableController();
+    explicit VisitedLinkTableController(uint64_t identifier);
 
     virtual bool isLinkVisited(WebCore::Page&, WebCore::LinkHash, const WebCore::URL& baseURL, const AtomicString& attributeURL) override;
     virtual void addVisitedLink(WebCore::Page&, WebCore::LinkHash) override;
+
+    uint64_t m_identifier;
 };
 
 } // namepsace WebKit

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (164809 => 164810)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2014-02-27 18:07:12 UTC (rev 164809)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2014-02-27 18:09:04 UTC (rev 164810)
@@ -325,7 +325,7 @@
     pageClients.loaderClientForMainFrame = new WebFrameLoaderClient;
     pageClients.progressTrackerClient = new WebProgressTrackerClient(*this);
 
-    pageClients.visitedLinkStore = VisitedLinkTableController::create();
+    pageClients.visitedLinkStore = VisitedLinkTableController::getOrCreate(parameters.visitedLinkTableID);
 
     m_page = adoptPtr(new Page(pageClients));
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to