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

Reply via email to