Title: [138173] trunk/Source
- Revision
- 138173
- Author
- gav...@chromium.org
- Date
- 2012-12-19 09:23:03 -0800 (Wed, 19 Dec 2012)
Log Message
[chromium] WebCore::Prerender::didStartPrerender depends on LinkLoader
https://bugs.webkit.org/show_bug.cgi?id=105290
Reviewed by Abhishek Arya.
The LinkLoader now removes itself from its prerender in time.
Source/WebCore:
Tested in unit tests, PrerenderingTest.FastRemoveElement.
* loader/LinkLoader.cpp:
(WebCore::LinkLoader::~LinkLoader):
(WebCore::LinkLoader::released):
Source/WebKit/chromium:
* tests/PrerenderingTest.cpp:
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (138172 => 138173)
--- trunk/Source/WebCore/ChangeLog 2012-12-19 17:22:27 UTC (rev 138172)
+++ trunk/Source/WebCore/ChangeLog 2012-12-19 17:23:03 UTC (rev 138173)
@@ -1,3 +1,18 @@
+2012-12-19 Gavin Peters <gav...@chromium.org>
+
+ [chromium] WebCore::Prerender::didStartPrerender depends on LinkLoader
+ https://bugs.webkit.org/show_bug.cgi?id=105290
+
+ Reviewed by Abhishek Arya.
+
+ The LinkLoader now removes itself from its prerender in time.
+
+ Tested in unit tests, PrerenderingTest.FastRemoveElement.
+
+ * loader/LinkLoader.cpp:
+ (WebCore::LinkLoader::~LinkLoader):
+ (WebCore::LinkLoader::released):
+
2012-12-19 Brian Salomon <bsalo...@google.com>
[Chromium/Skia] Check whether bitmap has pixels in image encoders
Modified: trunk/Source/WebCore/loader/LinkLoader.cpp (138172 => 138173)
--- trunk/Source/WebCore/loader/LinkLoader.cpp 2012-12-19 17:22:27 UTC (rev 138172)
+++ trunk/Source/WebCore/loader/LinkLoader.cpp 2012-12-19 17:23:03 UTC (rev 138173)
@@ -63,6 +63,10 @@
{
if (m_cachedLinkResource)
m_cachedLinkResource->removeClient(this);
+#if ENABLE(LINK_PRERENDER)
+ if (m_prerenderHandle)
+ m_prerenderHandle->removeClient();
+#endif
}
void LinkLoader::linkLoadTimerFired(Timer<LinkLoader>* timer)
@@ -172,6 +176,7 @@
#if ENABLE(LINK_PRERENDER)
if (m_prerenderHandle) {
m_prerenderHandle->cancel();
+ m_prerenderHandle->removeClient();
m_prerenderHandle.clear();
}
#endif
Modified: trunk/Source/WebKit/chromium/ChangeLog (138172 => 138173)
--- trunk/Source/WebKit/chromium/ChangeLog 2012-12-19 17:22:27 UTC (rev 138172)
+++ trunk/Source/WebKit/chromium/ChangeLog 2012-12-19 17:23:03 UTC (rev 138173)
@@ -1,3 +1,14 @@
+2012-12-19 Gavin Peters <gav...@chromium.org>
+
+ [chromium] WebCore::Prerender::didStartPrerender depends on LinkLoader
+ https://bugs.webkit.org/show_bug.cgi?id=105290
+
+ Reviewed by Abhishek Arya.
+
+ The LinkLoader now removes itself from its prerender in time.
+
+ * tests/PrerenderingTest.cpp:
+
2012-12-18 Ilya Tikhonovsky <loi...@chromium.org>
Unreviewed, rolling out r138061.
Modified: trunk/Source/WebKit/chromium/tests/PrerenderingTest.cpp (138172 => 138173)
--- trunk/Source/WebKit/chromium/tests/PrerenderingTest.cpp 2012-12-19 17:22:27 UTC (rev 138172)
+++ trunk/Source/WebKit/chromium/tests/PrerenderingTest.cpp 2012-12-19 17:23:03 UTC (rev 138173)
@@ -437,4 +437,23 @@
webPrerender.didStartPrerender();
}
+TEST_F(PrerenderingTest, FastRemoveElement)
+{
+ initialize("http://www.foo.com/", "prerender/single_prerender.html");
+
+ WebPrerender webPrerender = prerendererClient()->releaseWebPrerender();
+ EXPECT_FALSE(webPrerender.isNull());
+
+ EXPECT_EQ(1u, prerenderingSupport()->addCount(webPrerender));
+ EXPECT_EQ(1u, prerenderingSupport()->totalCount());
+
+ // Race removing & starting the prerender against each other, as if the element was removed very quickly.
+ executeScript("removePrerender()");
+ EXPECT_FALSE(webPrerender.isNull());
+ webPrerender.didStartPrerender();
+
+ // The page should be totally disconnected from the Prerender at this point, so the console should not have updated.
+ EXPECT_EQ(0u, consoleLength());
+}
+
} // namespace
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes