Title: [123798] trunk
- Revision
- 123798
- Author
- [email protected]
- Date
- 2012-07-26 15:07:20 -0700 (Thu, 26 Jul 2012)
Log Message
Guard Prerenderer against inserting prerenders into detached documents.
https://bugs.webkit.org/show_bug.cgi?id=92401
Reviewed by Adam Barth.
Source/WebCore:
If the document is detached, we should not launch a prerender.
Test: fast/dom/HTMLLinkElement/prerender-insert-after-stop.html
* loader/Prerenderer.cpp:
(WebCore::Prerenderer::render):
LayoutTests:
If the document is detached, we should just not launch a prerender.
* fast/dom/HTMLLinkElement/prerender-insert-after-stop-expected.txt: Added.
* fast/dom/HTMLLinkElement/prerender-insert-after-stop.html: Added.
* fast/dom/HTMLLinkElement/resources/empty2.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (123797 => 123798)
--- trunk/LayoutTests/ChangeLog 2012-07-26 22:03:48 UTC (rev 123797)
+++ trunk/LayoutTests/ChangeLog 2012-07-26 22:07:20 UTC (rev 123798)
@@ -1,3 +1,16 @@
+2012-07-26 Gavin Peters <[email protected]>
+
+ Guard Prerenderer against inserting prerenders into detached documents.
+ https://bugs.webkit.org/show_bug.cgi?id=92401
+
+ Reviewed by Adam Barth.
+
+ If the document is detached, we should just not launch a prerender.
+
+ * fast/dom/HTMLLinkElement/prerender-insert-after-stop-expected.txt: Added.
+ * fast/dom/HTMLLinkElement/prerender-insert-after-stop.html: Added.
+ * fast/dom/HTMLLinkElement/resources/empty2.html: Added.
+
2012-07-26 Andrew Wilson <[email protected]>
Unreviewed chromium expectations change to fix lint err.
Added: trunk/LayoutTests/fast/dom/HTMLLinkElement/prerender-insert-after-stop-expected.txt (0 => 123798)
--- trunk/LayoutTests/fast/dom/HTMLLinkElement/prerender-insert-after-stop-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/dom/HTMLLinkElement/prerender-insert-after-stop-expected.txt 2012-07-26 22:07:20 UTC (rev 123798)
@@ -0,0 +1,4 @@
+Test navigation and insertion of link prerender elements
+
+
+This test succeeds when it does not crash. The iframe above this text should also not crash, and should show "Another empty page."
Added: trunk/LayoutTests/fast/dom/HTMLLinkElement/prerender-insert-after-stop.html (0 => 123798)
--- trunk/LayoutTests/fast/dom/HTMLLinkElement/prerender-insert-after-stop.html (rev 0)
+++ trunk/LayoutTests/fast/dom/HTMLLinkElement/prerender-insert-after-stop.html 2012-07-26 22:07:20 UTC (rev 123798)
@@ -0,0 +1,36 @@
+<html>
+<head>
+<script>
+
+function done() {
+ if (window.testRunner)
+ testRunner.notifyDone();
+}
+
+function linkInserter(doc) {
+ return function() {
+ doc.getElementsByTagName('body')[0].innerHTML += "<link rel='prerender' href=''>";
+ done();
+ }
+}
+
+function navigateIFrameThenInsertLink() {
+ var iframe = document.getElementById('iframe');
+ iframe._onload_ = linkInserter(iframe.contentDocument);
+ iframe.contentWindow.location = "resources/empty2.html";
+}
+
+if (window.testRunner) {
+ testRunner.waitUntilDone();
+ testRunner.dumpAsText();
+}
+</script>
+</head>
+<body>
+<h1>Test navigation and insertion of link prerender elements</h1>
+
+<iframe id=iframe _onload_="navigateIFrameThenInsertLink()" src=""
+This test succeeds when it does not crash. The iframe above this text should also not crash, and should show "Another empty page."
+
+</body>
+</html>
Added: trunk/LayoutTests/fast/dom/HTMLLinkElement/resources/empty2.html (0 => 123798)
--- trunk/LayoutTests/fast/dom/HTMLLinkElement/resources/empty2.html (rev 0)
+++ trunk/LayoutTests/fast/dom/HTMLLinkElement/resources/empty2.html 2012-07-26 22:07:20 UTC (rev 123798)
@@ -0,0 +1,3 @@
+<html>
+Another empty page.
+</html>
Modified: trunk/Source/WebCore/ChangeLog (123797 => 123798)
--- trunk/Source/WebCore/ChangeLog 2012-07-26 22:03:48 UTC (rev 123797)
+++ trunk/Source/WebCore/ChangeLog 2012-07-26 22:07:20 UTC (rev 123798)
@@ -1,3 +1,17 @@
+2012-07-26 Gavin Peters <[email protected]>
+
+ Guard Prerenderer against inserting prerenders into detached documents.
+ https://bugs.webkit.org/show_bug.cgi?id=92401
+
+ Reviewed by Adam Barth.
+
+ If the document is detached, we should not launch a prerender.
+
+ Test: fast/dom/HTMLLinkElement/prerender-insert-after-stop.html
+
+ * loader/Prerenderer.cpp:
+ (WebCore::Prerenderer::render):
+
2012-07-26 Sheriff Bot <[email protected]>
Unreviewed, rolling out r123525.
Modified: trunk/Source/WebCore/loader/Prerenderer.cpp (123797 => 123798)
--- trunk/Source/WebCore/loader/Prerenderer.cpp 2012-07-26 22:03:48 UTC (rev 123797)
+++ trunk/Source/WebCore/loader/Prerenderer.cpp 2012-07-26 22:07:20 UTC (rev 123798)
@@ -72,6 +72,10 @@
// Prerenders are unlike requests in most ways (for instance, they pass down fragments, and they don't return data),
// but they do have referrers.
const ReferrerPolicy referrerPolicy = document()->referrerPolicy();
+
+ if (!document()->frame())
+ return 0;
+
const String referrer = SecurityPolicy::generateReferrerHeader(referrerPolicy, url, document()->frame()->loader()->outgoingReferrer());
RefPtr<PrerenderHandle> prerenderHandle = PrerenderHandle::create(url, referrer, referrerPolicy);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes