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