Title: [164895] trunk/Source/WebCore
Revision
164895
Author
[email protected]
Date
2014-02-28 16:40:22 -0800 (Fri, 28 Feb 2014)

Log Message

VisitedLinkStore should be able to invalidate link styles for associated pages
https://bugs.webkit.org/show_bug.cgi?id=129515

Reviewed by Dan Bernstein.

* page/Page.cpp:
(WebCore::Page::Page):
Add the VisitedLinkStore if we have one.

(WebCore::Page::~Page):
Remove the VisitedLinkStore if we have one.

* page/VisitedLinkStore.cpp:
(WebCore::VisitedLinkStore::~VisitedLinkStore):
Assert that we don't have any pages.

(WebCore::VisitedLinkStore::addPage):
Add the page to the set.

(WebCore::VisitedLinkStore::removePage):
Remove the page from the set.

(WebCore::VisitedLinkStore::invalidateStylesForAllLinks):
Traverse all the pages and invalidate the style for all links.

(WebCore::VisitedLinkStore::invalidateStylesForLink):
Traverse all the pages and invalidate the style for a given link.

* page/VisitedLinkStore.h:
Add new members.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (164894 => 164895)


--- trunk/Source/WebCore/ChangeLog	2014-03-01 00:27:07 UTC (rev 164894)
+++ trunk/Source/WebCore/ChangeLog	2014-03-01 00:40:22 UTC (rev 164895)
@@ -1,3 +1,36 @@
+2014-02-28  Anders Carlsson  <[email protected]>
+
+        VisitedLinkStore should be able to invalidate link styles for associated pages
+        https://bugs.webkit.org/show_bug.cgi?id=129515
+
+        Reviewed by Dan Bernstein.
+
+        * page/Page.cpp:
+        (WebCore::Page::Page):
+        Add the VisitedLinkStore if we have one.
+
+        (WebCore::Page::~Page):
+        Remove the VisitedLinkStore if we have one.
+
+        * page/VisitedLinkStore.cpp:
+        (WebCore::VisitedLinkStore::~VisitedLinkStore):
+        Assert that we don't have any pages.
+
+        (WebCore::VisitedLinkStore::addPage):
+        Add the page to the set.
+
+        (WebCore::VisitedLinkStore::removePage):
+        Remove the page from the set.
+
+        (WebCore::VisitedLinkStore::invalidateStylesForAllLinks):
+        Traverse all the pages and invalidate the style for all links.
+
+        (WebCore::VisitedLinkStore::invalidateStylesForLink):
+        Traverse all the pages and invalidate the style for a given link.
+
+        * page/VisitedLinkStore.h:
+        Add new members.
+
 2014-02-28  Benjamin Poulain  <[email protected]>
 
         [iOS][WK2] highlight rects should never big bigger than the view

Modified: trunk/Source/WebCore/page/Page.cpp (164894 => 164895)


--- trunk/Source/WebCore/page/Page.cpp	2014-03-01 00:27:07 UTC (rev 164894)
+++ trunk/Source/WebCore/page/Page.cpp	2014-03-01 00:40:22 UTC (rev 164895)
@@ -189,6 +189,9 @@
 {
     ASSERT(m_editorClient);
 
+    if (m_visitedLinkStore)
+        m_visitedLinkStore->addPage(*this);
+
     if (!allPages) {
         allPages = new HashSet<Page*>;
         
@@ -239,6 +242,8 @@
 
     if (m_userContentController)
         m_userContentController->removePage(*this);
+    if (m_visitedLinkStore)
+        m_visitedLinkStore->removePage(*this);
 }
 
 uint64_t Page::renderTreeSize() const

Modified: trunk/Source/WebCore/page/VisitedLinkStore.cpp (164894 => 164895)


--- trunk/Source/WebCore/page/VisitedLinkStore.cpp	2014-03-01 00:27:07 UTC (rev 164894)
+++ trunk/Source/WebCore/page/VisitedLinkStore.cpp	2014-03-01 00:40:22 UTC (rev 164895)
@@ -26,6 +26,8 @@
 #include "config.h"
 #include "VisitedLinkStore.h"
 
+#include "Page.h"
+
 namespace WebCore {
 
 VisitedLinkStore::VisitedLinkStore()
@@ -34,6 +36,33 @@
 
 VisitedLinkStore::~VisitedLinkStore()
 {
+    ASSERT(m_pages.isEmpty());
 }
 
+void VisitedLinkStore::addPage(Page& page)
+{
+    ASSERT(!m_pages.contains(&page));
+
+    m_pages.add(&page);
 }
+
+void VisitedLinkStore::removePage(Page& page)
+{
+    ASSERT(m_pages.contains(&page));
+
+    m_pages.remove(&page);
+}
+
+void VisitedLinkStore::invalidateStylesForAllLinks()
+{
+    for (auto& page : m_pages)
+        page->invalidateStylesForAllLinks();
+}
+
+void VisitedLinkStore::invalidateStylesForLink(LinkHash linkHash)
+{
+    for (auto& page : m_pages)
+        page->invalidateStylesForLink(linkHash);
+}
+
+} // namespace WebCore

Modified: trunk/Source/WebCore/page/VisitedLinkStore.h (164894 => 164895)


--- trunk/Source/WebCore/page/VisitedLinkStore.h	2014-03-01 00:27:07 UTC (rev 164894)
+++ trunk/Source/WebCore/page/VisitedLinkStore.h	2014-03-01 00:40:22 UTC (rev 164895)
@@ -27,6 +27,7 @@
 #define VisitedLinkStore_h
 
 #include <wtf/Forward.h>
+#include <wtf/HashSet.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 
@@ -44,6 +45,15 @@
     // FIXME: These two members should only take the link hash.
     virtual bool isLinkVisited(Page&, LinkHash, const URL& baseURL, const AtomicString& attributeURL) = 0;
     virtual void addVisitedLink(Page&, LinkHash) = 0;
+
+    void addPage(Page&);
+    void removePage(Page&);
+
+    void invalidateStylesForAllLinks();
+    void invalidateStylesForLink(LinkHash);
+
+private:
+    HashSet<Page*> m_pages;
 };
 
 } // namespace WebCore
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to