- Revision
- 164678
- Author
- [email protected]
- Date
- 2014-02-25 15:28:36 -0800 (Tue, 25 Feb 2014)
Log Message
Simplify visited link style invalidation
https://bugs.webkit.org/show_bug.cgi?id=129340
Reviewed by Dan Bernstein.
Source/WebCore:
Get rid of the static Page::allVisitedStateChanged and Page::visitedStateChanged
member functions and add functions to invalidate all styles on a single page or the style
for a single link hash on a single page.
* WebCore.exp.in:
* page/Page.cpp:
(WebCore::Page::invalidateStylesForAllLinks):
(WebCore::Page::invalidateStylesForLink):
* page/Page.h:
* page/PageGroup.cpp:
(WebCore::PageGroup::addVisitedLink):
(WebCore::PageGroup::removeVisitedLink):
(WebCore::PageGroup::removeVisitedLinks):
Source/WebKit2:
* UIProcess/VisitedLinkProvider.cpp:
(WebKit::VisitedLinkProvider::addVisitedLink):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::visitedLinkStateChanged):
(WebKit::WebProcess::allVisitedLinkStateChanged):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (164677 => 164678)
--- trunk/Source/WebCore/ChangeLog 2014-02-25 23:17:08 UTC (rev 164677)
+++ trunk/Source/WebCore/ChangeLog 2014-02-25 23:28:36 UTC (rev 164678)
@@ -1,3 +1,24 @@
+2014-02-25 Anders Carlsson <[email protected]>
+
+ Simplify visited link style invalidation
+ https://bugs.webkit.org/show_bug.cgi?id=129340
+
+ Reviewed by Dan Bernstein.
+
+ Get rid of the static Page::allVisitedStateChanged and Page::visitedStateChanged
+ member functions and add functions to invalidate all styles on a single page or the style
+ for a single link hash on a single page.
+
+ * WebCore.exp.in:
+ * page/Page.cpp:
+ (WebCore::Page::invalidateStylesForAllLinks):
+ (WebCore::Page::invalidateStylesForLink):
+ * page/Page.h:
+ * page/PageGroup.cpp:
+ (WebCore::PageGroup::addVisitedLink):
+ (WebCore::PageGroup::removeVisitedLink):
+ (WebCore::PageGroup::removeVisitedLinks):
+
2014-02-25 Andreas Kling <[email protected]>
Remove unused ThreadSpecificInspectorCounters.
Modified: trunk/Source/WebCore/WebCore.exp.in (164677 => 164678)
--- trunk/Source/WebCore/WebCore.exp.in 2014-02-25 23:17:08 UTC (rev 164677)
+++ trunk/Source/WebCore/WebCore.exp.in 2014-02-25 23:28:36 UTC (rev 164678)
@@ -1021,19 +1021,19 @@
__ZN7WebCore4Page19addHeaderWithHeightEi
#endif
__ZN7WebCore4Page19addLayoutMilestonesEj
-__ZN7WebCore4Page19visitedStateChangedEPNS_9PageGroupEy
__ZN7WebCore4Page20setDeviceScaleFactorEf
__ZN7WebCore4Page20unmarkAllTextMatchesEv
__ZN7WebCore4Page21markAllMatchesForTextERKN3WTF6StringEjbj
__ZN7WebCore4Page21resumeAnimatingImagesEv
-__ZN7WebCore4Page22allVisitedStateChangedEPNS_9PageGroupE
__ZN7WebCore4Page22nonFastScrollableRectsEPKNS_5FrameE
__ZN7WebCore4Page22removeLayoutMilestonesEj
__ZN7WebCore4Page23clearUndoRedoOperationsEv
+__ZN7WebCore4Page23invalidateStylesForLinkEy
__ZN7WebCore4Page24findStringMatchingRangesERKN3WTF6StringEjiPNS1_6VectorINS1_6RefPtrINS_5RangeEEELm0ENS1_15CrashOnOverflowEEERi
__ZN7WebCore4Page24resumeScriptedAnimationsEv
__ZN7WebCore4Page24scrollingStateTreeAsTextEv
__ZN7WebCore4Page25suspendScriptedAnimationsEv
+__ZN7WebCore4Page27invalidateStylesForAllLinksEv
__ZN7WebCore4Page33synchronousScrollingReasonsAsTextEv
__ZN7WebCore4Page32setMemoryCacheClientCallsEnabledEb
__ZN7WebCore4Page35resumeActiveDOMObjectsAndAnimationsEv
Modified: trunk/Source/WebCore/page/Page.cpp (164677 => 164678)
--- trunk/Source/WebCore/page/Page.cpp 2014-02-25 23:17:08 UTC (rev 164677)
+++ trunk/Source/WebCore/page/Page.cpp 2014-02-25 23:28:36 UTC (rev 164678)
@@ -932,36 +932,16 @@
(*it)->removeVisitedLinks();
}
-void Page::allVisitedStateChanged(PageGroup* group)
+void Page::invalidateStylesForAllLinks()
{
- ASSERT(group);
- if (!allPages)
- return;
-
- HashSet<Page*>::iterator pagesEnd = allPages->end();
- for (HashSet<Page*>::iterator it = allPages->begin(); it != pagesEnd; ++it) {
- Page* page = *it;
- if (page->m_group != group)
- continue;
- for (Frame* frame = page->m_mainFrame.get(); frame; frame = frame->tree().traverseNext())
- frame->document()->visitedLinkState().invalidateStyleForAllLinks();
- }
+ for (Frame* frame = m_mainFrame.get(); frame; frame = frame->tree().traverseNext())
+ frame->document()->visitedLinkState().invalidateStyleForAllLinks();
}
-void Page::visitedStateChanged(PageGroup* group, LinkHash linkHash)
+void Page::invalidateStylesForLink(LinkHash linkHash)
{
- ASSERT(group);
- if (!allPages)
- return;
-
- HashSet<Page*>::iterator pagesEnd = allPages->end();
- for (HashSet<Page*>::iterator it = allPages->begin(); it != pagesEnd; ++it) {
- Page* page = *it;
- if (page->m_group != group)
- continue;
- for (Frame* frame = page->m_mainFrame.get(); frame; frame = frame->tree().traverseNext())
- frame->document()->visitedLinkState().invalidateStyleForLink(linkHash);
- }
+ for (Frame* frame = m_mainFrame.get(); frame; frame = frame->tree().traverseNext())
+ frame->document()->visitedLinkState().invalidateStyleForLink(linkHash);
}
void Page::setDebugger(JSC::Debugger* debugger)
Modified: trunk/Source/WebCore/page/Page.h (164677 => 164678)
--- trunk/Source/WebCore/page/Page.h 2014-02-25 23:17:08 UTC (rev 164677)
+++ trunk/Source/WebCore/page/Page.h 2014-02-25 23:28:36 UTC (rev 164678)
@@ -317,8 +317,8 @@
static void removeAllVisitedLinks();
- static void allVisitedStateChanged(PageGroup*);
- static void visitedStateChanged(PageGroup*, LinkHash visitedHash);
+ void invalidateStylesForAllLinks();
+ void invalidateStylesForLink(LinkHash);
StorageNamespace* sessionStorage(bool optionalCreate = true);
void setSessionStorage(PassRefPtr<StorageNamespace>);
Modified: trunk/Source/WebCore/page/PageGroup.cpp (164677 => 164678)
--- trunk/Source/WebCore/page/PageGroup.cpp 2014-02-25 23:17:08 UTC (rev 164677)
+++ trunk/Source/WebCore/page/PageGroup.cpp 2014-02-25 23:28:36 UTC (rev 164678)
@@ -207,7 +207,8 @@
ASSERT(shouldTrackVisitedLinks);
if (!m_visitedLinkHashes.add(hash).isNewEntry)
return;
- Page::visitedStateChanged(this, hash);
+ for (auto& page : m_pages)
+ page->invalidateStylesForLink(hash);
pageCache()->markPagesForVistedLinkStyleRecalc();
}
@@ -232,7 +233,9 @@
ASSERT(m_visitedLinkHashes.contains(hash));
m_visitedLinkHashes.remove(hash);
- Page::allVisitedStateChanged(this);
+ // FIXME: Why can't we just invalidate the single visited link hash here?
+ for (auto& page : m_pages)
+ page->invalidateStylesForAllLinks();
pageCache()->markPagesForVistedLinkStyleRecalc();
}
@@ -242,7 +245,9 @@
if (m_visitedLinkHashes.isEmpty())
return;
m_visitedLinkHashes.clear();
- Page::allVisitedStateChanged(this);
+
+ for (auto& page : m_pages)
+ page->invalidateStylesForAllLinks();
pageCache()->markPagesForVistedLinkStyleRecalc();
}
Modified: trunk/Source/WebKit2/ChangeLog (164677 => 164678)
--- trunk/Source/WebKit2/ChangeLog 2014-02-25 23:17:08 UTC (rev 164677)
+++ trunk/Source/WebKit2/ChangeLog 2014-02-25 23:28:36 UTC (rev 164678)
@@ -1,5 +1,18 @@
2014-02-25 Anders Carlsson <[email protected]>
+ Simplify visited link style invalidation
+ https://bugs.webkit.org/show_bug.cgi?id=129340
+
+ Reviewed by Dan Bernstein.
+
+ * UIProcess/VisitedLinkProvider.cpp:
+ (WebKit::VisitedLinkProvider::addVisitedLink):
+ * WebProcess/WebProcess.cpp:
+ (WebKit::WebProcess::visitedLinkStateChanged):
+ (WebKit::WebProcess::allVisitedLinkStateChanged):
+
+2014-02-25 Anders Carlsson <[email protected]>
+
Fix build.
Remove VisitedLinkStrategy.
Modified: trunk/Source/WebKit2/WebProcess/WebProcess.cpp (164677 => 164678)
--- trunk/Source/WebKit2/WebProcess/WebProcess.cpp 2014-02-25 23:17:08 UTC (rev 164677)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.cpp 2014-02-25 23:28:36 UTC (rev 164678)
@@ -506,11 +506,11 @@
void WebProcess::visitedLinkStateChanged(const Vector<WebCore::LinkHash>& linkHashes)
{
// FIXME: We may want to track visited links per WebPageGroup rather than per WebContext.
- for (size_t i = 0; i < linkHashes.size(); ++i) {
- HashMap<uint64_t, RefPtr<WebPageGroupProxy>>::const_iterator it = m_pageGroupMap.begin();
- HashMap<uint64_t, RefPtr<WebPageGroupProxy>>::const_iterator end = m_pageGroupMap.end();
- for (; it != end; ++it)
- Page::visitedStateChanged(PageGroup::pageGroup(it->value->identifier()), linkHashes[i]);
+ for (const auto& webPage : m_pageMap.values()) {
+ if (Page* page = webPage->corePage()) {
+ for (auto linkHash : linkHashes)
+ page->invalidateStylesForLink(linkHash);
+ }
}
pageCache()->markPagesForVistedLinkStyleRecalc();
@@ -518,11 +518,10 @@
void WebProcess::allVisitedLinkStateChanged()
{
- // FIXME: We may want to track visited links per WebPageGroup rather than per WebContext.
- HashMap<uint64_t, RefPtr<WebPageGroupProxy>>::const_iterator it = m_pageGroupMap.begin();
- HashMap<uint64_t, RefPtr<WebPageGroupProxy>>::const_iterator end = m_pageGroupMap.end();
- for (; it != end; ++it)
- Page::allVisitedStateChanged(PageGroup::pageGroup(it->value->identifier()));
+ for (const auto& webPage : m_pageMap.values()) {
+ if (Page* page = webPage->corePage())
+ page->invalidateStylesForAllLinks();
+ }
pageCache()->markPagesForVistedLinkStyleRecalc();
}