Title: [139389] branches/chromium/1364/Source
Revision
139389
Author
cev...@google.com
Date
2013-01-10 17:30:13 -0800 (Thu, 10 Jan 2013)

Log Message

Merge 138173
BUG=166627
Review URL: https://codereview.chromium.org/11828063

Modified Paths

Diff

Modified: branches/chromium/1364/Source/WebCore/loader/LinkLoader.cpp (139388 => 139389)


--- branches/chromium/1364/Source/WebCore/loader/LinkLoader.cpp	2013-01-11 01:27:52 UTC (rev 139388)
+++ branches/chromium/1364/Source/WebCore/loader/LinkLoader.cpp	2013-01-11 01:30:13 UTC (rev 139389)
@@ -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: branches/chromium/1364/Source/WebKit/chromium/tests/PrerenderingTest.cpp (139388 => 139389)


--- branches/chromium/1364/Source/WebKit/chromium/tests/PrerenderingTest.cpp	2013-01-11 01:27:52 UTC (rev 139388)
+++ branches/chromium/1364/Source/WebKit/chromium/tests/PrerenderingTest.cpp	2013-01-11 01:30:13 UTC (rev 139389)
@@ -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

Reply via email to