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