summaryrefslogtreecommitdiffstats
path: root/LayoutTests/fast/dom/beforeload
diff options
context:
space:
mode:
Diffstat (limited to 'LayoutTests/fast/dom/beforeload')
-rw-r--r--LayoutTests/fast/dom/beforeload/flash-before-load-expected.txt1
-rw-r--r--LayoutTests/fast/dom/beforeload/flash-before-load.html18
-rw-r--r--LayoutTests/fast/dom/beforeload/frame-before-load-expected.txt1
-rw-r--r--LayoutTests/fast/dom/beforeload/frame-before-load.html17
-rw-r--r--LayoutTests/fast/dom/beforeload/image-before-load-expected.txt1
-rw-r--r--LayoutTests/fast/dom/beforeload/image-before-load-innerHTML-expected.txt2
-rw-r--r--LayoutTests/fast/dom/beforeload/image-before-load-innerHTML.html25
-rw-r--r--LayoutTests/fast/dom/beforeload/image-before-load.html16
-rw-r--r--LayoutTests/fast/dom/beforeload/image-object-before-load-expected.txt2
-rw-r--r--LayoutTests/fast/dom/beforeload/image-object-before-load-innerHTML-expected.txt2
-rw-r--r--LayoutTests/fast/dom/beforeload/image-object-before-load-innerHTML.html32
-rw-r--r--LayoutTests/fast/dom/beforeload/image-object-before-load.html31
-rw-r--r--LayoutTests/fast/dom/beforeload/link-before-load-expected.txt3
-rw-r--r--LayoutTests/fast/dom/beforeload/link-before-load.html30
-rw-r--r--LayoutTests/fast/dom/beforeload/pi-before-load-expected.txt1
-rw-r--r--LayoutTests/fast/dom/beforeload/pi-before-load.xhtml41
-rw-r--r--LayoutTests/fast/dom/beforeload/remove-bad-object-in-beforeload-listener-expected.txt3
-rw-r--r--LayoutTests/fast/dom/beforeload/remove-bad-object-in-beforeload-listener.html49
-rw-r--r--LayoutTests/fast/dom/beforeload/remove-flash-in-beforeload-listener-expected.txt3
-rw-r--r--LayoutTests/fast/dom/beforeload/remove-flash-in-beforeload-listener.html48
-rw-r--r--LayoutTests/fast/dom/beforeload/remove-frame-in-beforeload-listener-expected.txt3
-rw-r--r--LayoutTests/fast/dom/beforeload/remove-frame-in-beforeload-listener.html25
-rw-r--r--LayoutTests/fast/dom/beforeload/remove-image-in-beforeload-listener-expected.txt3
-rw-r--r--LayoutTests/fast/dom/beforeload/remove-image-in-beforeload-listener.html47
-rw-r--r--LayoutTests/fast/dom/beforeload/remove-link-in-beforeload-listener-expected.txt3
-rw-r--r--LayoutTests/fast/dom/beforeload/remove-link-in-beforeload-listener.html25
-rw-r--r--LayoutTests/fast/dom/beforeload/remove-script-in-beforeload-listener-expected.txt3
-rw-r--r--LayoutTests/fast/dom/beforeload/remove-script-in-beforeload-listener.html28
-rw-r--r--LayoutTests/fast/dom/beforeload/remove-video-in-beforeload-listener-expected.txt3
-rw-r--r--LayoutTests/fast/dom/beforeload/remove-video-in-beforeload-listener.html47
-rw-r--r--LayoutTests/fast/dom/beforeload/resources/fail.css5
-rw-r--r--LayoutTests/fast/dom/beforeload/resources/fail.js1
-rw-r--r--LayoutTests/fast/dom/beforeload/resources/print.js9
-rw-r--r--LayoutTests/fast/dom/beforeload/script-before-load-dynamic-expected.txt3
-rw-r--r--LayoutTests/fast/dom/beforeload/script-before-load-dynamic.html29
-rw-r--r--LayoutTests/fast/dom/beforeload/script-before-load-expected.txt3
-rw-r--r--LayoutTests/fast/dom/beforeload/script-before-load-xhtml-expected.txt3
-rw-r--r--LayoutTests/fast/dom/beforeload/script-before-load-xhtml.xhtml28
-rw-r--r--LayoutTests/fast/dom/beforeload/script-before-load.html17
-rw-r--r--LayoutTests/fast/dom/beforeload/video-before-load-expected.txt2
-rw-r--r--LayoutTests/fast/dom/beforeload/video-before-load.html17
41 files changed, 630 insertions, 0 deletions
diff --git a/LayoutTests/fast/dom/beforeload/flash-before-load-expected.txt b/LayoutTests/fast/dom/beforeload/flash-before-load-expected.txt
new file mode 100644
index 0000000..7ef22e9
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/flash-before-load-expected.txt
@@ -0,0 +1 @@
+PASS
diff --git a/LayoutTests/fast/dom/beforeload/flash-before-load.html b/LayoutTests/fast/dom/beforeload/flash-before-load.html
new file mode 100644
index 0000000..5d3ea88
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/flash-before-load.html
@@ -0,0 +1,18 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<script src="resources/print.js"></script>
+</head>
+<body>
+<div id="console"></div>
+<script>
+if (window.layoutTestController)
+ layoutTestController.dumpAsText();
+</script>
+
+<object id="plugin" onbeforeload="return false" type="application/x-shockwave-flash" data="../../../plugins/resources/simple_blank.swf"
+width="300" height="150">
+<span style="font-family:monospace; color:green">PASS</span>
+</object>
+
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/beforeload/frame-before-load-expected.txt b/LayoutTests/fast/dom/beforeload/frame-before-load-expected.txt
new file mode 100644
index 0000000..7ef22e9
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/frame-before-load-expected.txt
@@ -0,0 +1 @@
+PASS
diff --git a/LayoutTests/fast/dom/beforeload/frame-before-load.html b/LayoutTests/fast/dom/beforeload/frame-before-load.html
new file mode 100644
index 0000000..6fd8c92
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/frame-before-load.html
@@ -0,0 +1,17 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<script src="resources/print.js"></script>
+</head>
+<body>
+<div id="console"></div>
+<script>
+if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+}
+</script>
+
+<iframe style="display:none" onbeforeload="print('PASS', 'green'); return event.url != 'http://www.daringfireball.net/';" onload="print('FAIL', 'red');" src="http://www.daringfireball.net/">
+</iframe>
+
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/beforeload/image-before-load-expected.txt b/LayoutTests/fast/dom/beforeload/image-before-load-expected.txt
new file mode 100644
index 0000000..7ef22e9
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/image-before-load-expected.txt
@@ -0,0 +1 @@
+PASS
diff --git a/LayoutTests/fast/dom/beforeload/image-before-load-innerHTML-expected.txt b/LayoutTests/fast/dom/beforeload/image-before-load-innerHTML-expected.txt
new file mode 100644
index 0000000..aa44e7c
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/image-before-load-innerHTML-expected.txt
@@ -0,0 +1,2 @@
+
+PASS
diff --git a/LayoutTests/fast/dom/beforeload/image-before-load-innerHTML.html b/LayoutTests/fast/dom/beforeload/image-before-load-innerHTML.html
new file mode 100644
index 0000000..2351569
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/image-before-load-innerHTML.html
@@ -0,0 +1,25 @@
+<html>
+<head>
+ <script src="resources/print.js"></script>
+ <script>
+ if (window.layoutTestController)
+ layoutTestController.dumpAsText();
+
+ document.addEventListener("beforeload", function(event) {
+ print("PASS", "green");
+ event.preventDefault();
+ }, true);
+
+ document.addEventListener("load", function(event) {
+ print("FAIL", "red");
+ }, true);
+ </script>
+</head>
+<body>
+ <div id="target"></div>
+ <div id="console"></div>
+ <script>
+ document.getElementById("target").innerHTML = "<img src='../../images/resources/test-load.jpg'>";
+ </script>
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/beforeload/image-before-load.html b/LayoutTests/fast/dom/beforeload/image-before-load.html
new file mode 100644
index 0000000..4467018
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/image-before-load.html
@@ -0,0 +1,16 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<script src="resources/print.js"></script>
+</head>
+<body>
+<div id="console"></div>
+<script>
+if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+}
+</script>
+
+<img style="display:none" onbeforeload="print('PASS', 'green'); return false;" onload="print('FAIL', 'red');" src="../../images/resources/test-load.jpg">
+
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/beforeload/image-object-before-load-expected.txt b/LayoutTests/fast/dom/beforeload/image-object-before-load-expected.txt
new file mode 100644
index 0000000..69cfc5a
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/image-object-before-load-expected.txt
@@ -0,0 +1,2 @@
+PASS
+
diff --git a/LayoutTests/fast/dom/beforeload/image-object-before-load-innerHTML-expected.txt b/LayoutTests/fast/dom/beforeload/image-object-before-load-innerHTML-expected.txt
new file mode 100644
index 0000000..69cfc5a
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/image-object-before-load-innerHTML-expected.txt
@@ -0,0 +1,2 @@
+PASS
+
diff --git a/LayoutTests/fast/dom/beforeload/image-object-before-load-innerHTML.html b/LayoutTests/fast/dom/beforeload/image-object-before-load-innerHTML.html
new file mode 100644
index 0000000..6befc57
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/image-object-before-load-innerHTML.html
@@ -0,0 +1,32 @@
+<html>
+<head>
+ <script src="resources/print.js"></script>
+ <script>
+ if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+ layoutTestController.waitUntilDone();
+ }
+
+ document.addEventListener("beforeload", function(event) {
+ event.preventDefault();
+ }, true);
+
+ function checkObject()
+ {
+ var style = getComputedStyle(document.getElementsByTagName("object")[0], null);
+ if (style.width != "0px" || style.height != "0px")
+ print("FAIL", "red");
+
+ if (window.layoutTestController)
+ layoutTestController.notifyDone();
+ }
+ </script>
+</head>
+<body onload="checkObject();">
+ <div id="target"></div>
+ <div id="console"></div>
+ <script>
+ document.getElementById("target").innerHTML = "<object data='../../images/resources/test-load.jpg'><span style='font-family:monospace; color:green'>PASS</span></object>";
+ </script>
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/beforeload/image-object-before-load.html b/LayoutTests/fast/dom/beforeload/image-object-before-load.html
new file mode 100644
index 0000000..46fae33
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/image-object-before-load.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <script src="resources/print.js"></script>
+ <script>
+ if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+ layoutTestController.waitUntilDone();
+ }
+
+ document.addEventListener("beforeload", function(event) {
+ event.preventDefault();
+ }, true);
+
+ function checkObject()
+ {
+ var style = getComputedStyle(document.getElementsByTagName("object")[0], null);
+ if (style.width != "0px" || style.height != "0px")
+ print("FAIL", "red");
+
+ if (window.layoutTestController)
+ layoutTestController.notifyDone();
+ }
+ </script>
+</head>
+<body onload="checkObject();">
+ <object data="../../images/resources/test-load.jpg">
+ <span style="font-family:monospace; color:green">PASS</span>
+ </object>
+ <div id="console"></div>
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/beforeload/link-before-load-expected.txt b/LayoutTests/fast/dom/beforeload/link-before-load-expected.txt
new file mode 100644
index 0000000..d9bd273
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/link-before-load-expected.txt
@@ -0,0 +1,3 @@
+This page tests the beforeload event on link elements. You should see the word PASS below underneath a green square.
+
+PASS
diff --git a/LayoutTests/fast/dom/beforeload/link-before-load.html b/LayoutTests/fast/dom/beforeload/link-before-load.html
new file mode 100644
index 0000000..ae3c71c
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/link-before-load.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+<style>
+.block {
+ width: 100px;
+ height: 100px;
+ background-color: green;
+}
+</style>
+<link onbeforeload="return false" rel="stylesheet" href="resources/fail.css">
+<script src="resources/print.js"></script>
+<script>
+function test()
+{
+ if (window.layoutTestController)
+ layoutTestController.dumpAsText();
+
+ if (document.getElementById('block').offsetWidth == 100)
+ print("PASS", "green");
+ else
+ print("FAIL", "red");
+}
+</script>
+</head>
+<body onload="test()">
+<p>This page tests the beforeload event on link elements. You should see the word PASS below underneath a green square.</p>
+<hr>
+<div id="block" class="block"></div>
+<hr>
+<div id="console"></div>
diff --git a/LayoutTests/fast/dom/beforeload/pi-before-load-expected.txt b/LayoutTests/fast/dom/beforeload/pi-before-load-expected.txt
new file mode 100644
index 0000000..7ef22e9
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/pi-before-load-expected.txt
@@ -0,0 +1 @@
+PASS
diff --git a/LayoutTests/fast/dom/beforeload/pi-before-load.xhtml b/LayoutTests/fast/dom/beforeload/pi-before-load.xhtml
new file mode 100644
index 0000000..58c19e1
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/pi-before-load.xhtml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<style>
+.block {
+ width: 100px;
+ height: 100px;
+ background-color: green;
+}
+</style>
+<script src="resources/print.js"></script>
+<script>
+function test()
+{
+ if (window.layoutTestController)
+ layoutTestController.dumpAsText();
+
+ if (document.getElementById('block').offsetWidth == 100)
+ print("PASS", "green");
+ else
+ print("FAIL", "red");
+}
+</script>
+</head>
+<body onload="test()">
+<div id="block" class="block"></div>
+<script>
+function beforeLoadFunc()
+{
+ event.preventDefault();
+}
+
+document.addEventListener("beforeload", beforeLoadFunc, true);
+
+var pi = document.createProcessingInstruction("xml-stylesheet", "type=\"text/css\" href=\"resources/fail.css\"");
+document.insertBefore(pi, document.documentElement);
+</script>
+<hr/>
+<div id="console"></div>
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/beforeload/remove-bad-object-in-beforeload-listener-expected.txt b/LayoutTests/fast/dom/beforeload/remove-bad-object-in-beforeload-listener-expected.txt
new file mode 100644
index 0000000..9a44ddc
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/remove-bad-object-in-beforeload-listener-expected.txt
@@ -0,0 +1,3 @@
+This page tests that you can correctly remove an object element with an invalid data URL in its beforeload listener without causing a crash.
+
+PASS
diff --git a/LayoutTests/fast/dom/beforeload/remove-bad-object-in-beforeload-listener.html b/LayoutTests/fast/dom/beforeload/remove-bad-object-in-beforeload-listener.html
new file mode 100644
index 0000000..2bdedae
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/remove-bad-object-in-beforeload-listener.html
@@ -0,0 +1,49 @@
+<html>
+<head>
+ <script src="resources/print.js"></script>
+ <script>
+ if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+ layoutTestController.waitUntilDone();
+ }
+
+ var count = 0;
+ var maxCount = 10;
+ var timeout = 100;
+
+ document.addEventListener("beforeload", function(event) {
+ if (event.target && event.target.parentElement)
+ event.target.parentElement.removeChild(event.target);
+ }, true);
+ </script>
+</head>
+<body>
+ <p>This page tests that you can correctly remove an object element with an invalid data URL in its beforeload listener without causing a crash.</p>
+ <object data="does-not-exist.png">FAIL</object>
+ <object data="does-not-exist">FAIL</object>
+ <div id="console"></div>
+ <script>
+ function checkObjectRemoval()
+ {
+ if (!document.getElementsByTagName("object").length) {
+ print("PASS", "green");
+ if (window.layoutTestController)
+ layoutTestController.notifyDone();
+ return;
+ }
+
+ if (++count > maxCount) {
+ print("FAIL", "red");
+ if (window.layoutTestController)
+ layoutTestController.notifyDone();
+ return;
+ }
+
+ setTimeout("checkObjectRemoval()", timeout);
+ }
+
+ setTimeout("checkObjectRemoval()", timeout);
+ </script>
+</body>
+</html>
+
diff --git a/LayoutTests/fast/dom/beforeload/remove-flash-in-beforeload-listener-expected.txt b/LayoutTests/fast/dom/beforeload/remove-flash-in-beforeload-listener-expected.txt
new file mode 100644
index 0000000..dc83c9c
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/remove-flash-in-beforeload-listener-expected.txt
@@ -0,0 +1,3 @@
+This page tests that you can correctly remove a flash object in a beforeload listener without causing a crash.
+
+PASS
diff --git a/LayoutTests/fast/dom/beforeload/remove-flash-in-beforeload-listener.html b/LayoutTests/fast/dom/beforeload/remove-flash-in-beforeload-listener.html
new file mode 100644
index 0000000..1c8c021
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/remove-flash-in-beforeload-listener.html
@@ -0,0 +1,48 @@
+<html>
+<head>
+ <script src="resources/print.js"></script>
+ <script>
+ if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+ layoutTestController.waitUntilDone();
+ }
+
+ var count = 0;
+ var maxCount = 10;
+ var timeout = 100;
+
+ document.addEventListener("beforeload", function(event) {
+ if (event.target && event.target.parentElement)
+ event.target.parentElement.removeChild(event.target);
+ }, true);
+ </script>
+</head>
+<body>
+ <p>This page tests that you can correctly remove a flash object in a beforeload listener without causing a crash.</p>
+ <object type="application/x-shockwave-flash" data="../../../plugins/resources/simple_blank.swf"></object>
+ <div id="console"></div>
+ <script>
+ function checkObjectRemoval()
+ {
+ if (!document.getElementsByTagName("object").length) {
+ print("PASS", "green");
+ if (window.layoutTestController)
+ layoutTestController.notifyDone();
+ return;
+ }
+
+ if (++count > maxCount) {
+ print("FAIL", "red");
+ if (window.layoutTestController)
+ layoutTestController.notifyDone();
+ return;
+ }
+
+ setTimeout("checkObjectRemoval()", timeout);
+ }
+
+ setTimeout("checkObjectRemoval()", timeout);
+ </script>
+</body>
+</html>
+
diff --git a/LayoutTests/fast/dom/beforeload/remove-frame-in-beforeload-listener-expected.txt b/LayoutTests/fast/dom/beforeload/remove-frame-in-beforeload-listener-expected.txt
new file mode 100644
index 0000000..aebdcc4
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/remove-frame-in-beforeload-listener-expected.txt
@@ -0,0 +1,3 @@
+This page tests that you can correctly remove an iframe element in its beforeload listener without causing a crash.
+
+PASS
diff --git a/LayoutTests/fast/dom/beforeload/remove-frame-in-beforeload-listener.html b/LayoutTests/fast/dom/beforeload/remove-frame-in-beforeload-listener.html
new file mode 100644
index 0000000..fe45195
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/remove-frame-in-beforeload-listener.html
@@ -0,0 +1,25 @@
+<html>
+<head>
+ <script src="resources/print.js"></script>
+ <script>
+ if (window.layoutTestController)
+ layoutTestController.dumpAsText();
+
+ document.addEventListener("beforeload", function(event) {
+ if (event.target && event.target.parentElement)
+ event.target.parentElement.removeChild(event.target);
+ }, true);
+ </script>
+</head>
+<body>
+ <p>This page tests that you can correctly remove an iframe element in its beforeload listener without causing a crash.</p>
+ <iframe src="http://webkit.org"></iframe>
+ <div id="console"></div>
+ <script>
+ if (document.getElementsByTagName("iframe").length)
+ print("FAIL", "red");
+ else
+ print("PASS", "green");
+ </script>
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/beforeload/remove-image-in-beforeload-listener-expected.txt b/LayoutTests/fast/dom/beforeload/remove-image-in-beforeload-listener-expected.txt
new file mode 100644
index 0000000..abc0aa7
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/remove-image-in-beforeload-listener-expected.txt
@@ -0,0 +1,3 @@
+This page tests that you can correctly remove an img object in a beforeload listener without causing a crash.
+
+PASS
diff --git a/LayoutTests/fast/dom/beforeload/remove-image-in-beforeload-listener.html b/LayoutTests/fast/dom/beforeload/remove-image-in-beforeload-listener.html
new file mode 100644
index 0000000..2ffda88
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/remove-image-in-beforeload-listener.html
@@ -0,0 +1,47 @@
+<html>
+<head>
+ <script src="resources/print.js"></script>
+ <script>
+ if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+ layoutTestController.waitUntilDone();
+ }
+
+ var count = 0;
+ var maxCount = 10;
+ var timeout = 100;
+
+ document.addEventListener("beforeload", function(event) {
+ if (event.target && event.target.parentElement)
+ event.target.parentElement.removeChild(event.target);
+ }, true);
+ </script>
+</head>
+<body>
+ <p>This page tests that you can correctly remove an img object in a beforeload listener without causing a crash.</p>
+ <img src="../../images/resources/test-load.jpg">
+ <div id="console"></div>
+ <script>
+ function checkObjectRemoval()
+ {
+ if (!document.getElementsByTagName("img").length) {
+ print("PASS", "green");
+ if (window.layoutTestController)
+ layoutTestController.notifyDone();
+ return;
+ }
+
+ if (++count > maxCount) {
+ print("FAIL", "red");
+ if (window.layoutTestController)
+ layoutTestController.notifyDone();
+ return;
+ }
+
+ setTimeout("checkObjectRemoval()", timeout);
+ }
+
+ setTimeout("checkObjectRemoval()", timeout);
+ </script>
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/beforeload/remove-link-in-beforeload-listener-expected.txt b/LayoutTests/fast/dom/beforeload/remove-link-in-beforeload-listener-expected.txt
new file mode 100644
index 0000000..9a70826
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/remove-link-in-beforeload-listener-expected.txt
@@ -0,0 +1,3 @@
+This page tests that you can correctly remove a stylesheet link element in its beforeload listener without causing a crash.
+
+PASS
diff --git a/LayoutTests/fast/dom/beforeload/remove-link-in-beforeload-listener.html b/LayoutTests/fast/dom/beforeload/remove-link-in-beforeload-listener.html
new file mode 100644
index 0000000..abbe9af
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/remove-link-in-beforeload-listener.html
@@ -0,0 +1,25 @@
+<html>
+<head>
+ <script src="resources/print.js"></script>
+ <script>
+ if (window.layoutTestController)
+ layoutTestController.dumpAsText();
+
+ document.addEventListener("beforeload", function(event) {
+ event.target.parentElement.removeChild(event.target);
+ }, true);
+ </script>
+ <link rel="stylesheet" href="data:text/css">
+</head>
+<body>
+ <p>This page tests that you can correctly remove a stylesheet link element in its beforeload listener without causing a crash.</p>
+ <div id="console"></div>
+ <script>
+ if (document.getElementsByTagName("link").length)
+ print("FAIL", "red");
+ else
+ print("PASS", "green");
+ </script>
+</body>
+</html>
+
diff --git a/LayoutTests/fast/dom/beforeload/remove-script-in-beforeload-listener-expected.txt b/LayoutTests/fast/dom/beforeload/remove-script-in-beforeload-listener-expected.txt
new file mode 100644
index 0000000..51192bc
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/remove-script-in-beforeload-listener-expected.txt
@@ -0,0 +1,3 @@
+This page tests that you can correctly remove a script element in its beforeload listener without causing a crash.
+
+PASS
diff --git a/LayoutTests/fast/dom/beforeload/remove-script-in-beforeload-listener.html b/LayoutTests/fast/dom/beforeload/remove-script-in-beforeload-listener.html
new file mode 100644
index 0000000..874c600
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/remove-script-in-beforeload-listener.html
@@ -0,0 +1,28 @@
+<html>
+<head>
+ <script src="resources/print.js"></script>
+ <script>
+ if (window.layoutTestController)
+ layoutTestController.dumpAsText();
+
+ document.addEventListener("beforeload", function(event) {
+ var scriptElement = document.getElementById("toremove");
+ if (scriptElement) {
+ scriptElement.parentElement.removeChild(scriptElement);
+ event.preventDefault();
+ }
+ }, true);
+ </script>
+</head>
+<body>
+ <p>This page tests that you can correctly remove a script element in its beforeload listener without causing a crash.</p>
+ <script id="toremove" src="resources/fail.js"></script>
+ <div id="console"></div>
+ <script>
+ if (document.getElementById("toremove"))
+ print("FAIL", "red");
+ else
+ print("PASS", "green");
+ </script>
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/beforeload/remove-video-in-beforeload-listener-expected.txt b/LayoutTests/fast/dom/beforeload/remove-video-in-beforeload-listener-expected.txt
new file mode 100644
index 0000000..48316fa
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/remove-video-in-beforeload-listener-expected.txt
@@ -0,0 +1,3 @@
+This page tests that you can correctly remove a video object in a beforeload listener without causing a crash.
+
+PASS
diff --git a/LayoutTests/fast/dom/beforeload/remove-video-in-beforeload-listener.html b/LayoutTests/fast/dom/beforeload/remove-video-in-beforeload-listener.html
new file mode 100644
index 0000000..add0e13
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/remove-video-in-beforeload-listener.html
@@ -0,0 +1,47 @@
+<html>
+<head>
+ <script src="resources/print.js"></script>
+ <script>
+ if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+ layoutTestController.waitUntilDone();
+ }
+
+ var count = 0;
+ var maxCount = 10;
+ var timeout = 100;
+
+ document.addEventListener("beforeload", function(event) {
+ if (event.target && event.target.parentElement)
+ event.target.parentElement.removeChild(event.target);
+ }, true);
+ </script>
+</head>
+<body>
+ <p>This page tests that you can correctly remove a video object in a beforeload listener without causing a crash.</p>
+ <video src="../../../media/content/test.mp4"></video>
+ <div id="console"></div>
+ <script>
+ function checkObjectRemoval()
+ {
+ if (!document.getElementsByTagName("video").length) {
+ print("PASS", "green");
+ if (window.layoutTestController)
+ layoutTestController.notifyDone();
+ return;
+ }
+
+ if (++count > maxCount) {
+ print("FAIL", "red");
+ if (window.layoutTestController)
+ layoutTestController.notifyDone();
+ return;
+ }
+
+ setTimeout("checkObjectRemoval()", timeout);
+ }
+
+ setTimeout("checkObjectRemoval()", timeout);
+ </script>
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/beforeload/resources/fail.css b/LayoutTests/fast/dom/beforeload/resources/fail.css
new file mode 100644
index 0000000..1a5960a
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/resources/fail.css
@@ -0,0 +1,5 @@
+.block {
+ background-color:red !important;
+ width: 200px !important;
+ height:200px !important;
+}
diff --git a/LayoutTests/fast/dom/beforeload/resources/fail.js b/LayoutTests/fast/dom/beforeload/resources/fail.js
new file mode 100644
index 0000000..6ba1fba
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/resources/fail.js
@@ -0,0 +1 @@
+print('FAIL', 'red');
diff --git a/LayoutTests/fast/dom/beforeload/resources/print.js b/LayoutTests/fast/dom/beforeload/resources/print.js
new file mode 100644
index 0000000..8b5dfe2
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/resources/print.js
@@ -0,0 +1,9 @@
+function print(message, color)
+{
+ var paragraph = document.createElement("div");
+ paragraph.appendChild(document.createTextNode(message));
+ paragraph.style.fontFamily = "monospace";
+ if (color)
+ paragraph.style.color = color;
+ document.getElementById("console").appendChild(paragraph);
+}
diff --git a/LayoutTests/fast/dom/beforeload/script-before-load-dynamic-expected.txt b/LayoutTests/fast/dom/beforeload/script-before-load-dynamic-expected.txt
new file mode 100644
index 0000000..9a796b1
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/script-before-load-dynamic-expected.txt
@@ -0,0 +1,3 @@
+This page tests the beforeload event on script elements. You should see a PASS message below if everything works.
+
+PASS
diff --git a/LayoutTests/fast/dom/beforeload/script-before-load-dynamic.html b/LayoutTests/fast/dom/beforeload/script-before-load-dynamic.html
new file mode 100644
index 0000000..21559bd
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/script-before-load-dynamic.html
@@ -0,0 +1,29 @@
+<html>
+<head>
+<script src="resources/print.js"></script>
+</head>
+
+<body>
+<p>This page tests the beforeload event on script elements. You should see a PASS message below if everything
+works.</p>
+<hr>
+<div id='console'></div>
+
+<script>
+if (window.layoutTestController)
+ layoutTestController.dumpAsText();
+
+function beforeLoadFunc()
+{
+ print("PASS", "green");
+ event.preventDefault();
+}
+
+document.body.addEventListener("beforeload", beforeLoadFunc, true);
+var elt = document.createElement("script");
+elt.setAttribute("src", "resources/fail.js");
+document.body.appendChild(elt);
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/beforeload/script-before-load-expected.txt b/LayoutTests/fast/dom/beforeload/script-before-load-expected.txt
new file mode 100644
index 0000000..9a796b1
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/script-before-load-expected.txt
@@ -0,0 +1,3 @@
+This page tests the beforeload event on script elements. You should see a PASS message below if everything works.
+
+PASS
diff --git a/LayoutTests/fast/dom/beforeload/script-before-load-xhtml-expected.txt b/LayoutTests/fast/dom/beforeload/script-before-load-xhtml-expected.txt
new file mode 100644
index 0000000..9a796b1
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/script-before-load-xhtml-expected.txt
@@ -0,0 +1,3 @@
+This page tests the beforeload event on script elements. You should see a PASS message below if everything works.
+
+PASS
diff --git a/LayoutTests/fast/dom/beforeload/script-before-load-xhtml.xhtml b/LayoutTests/fast/dom/beforeload/script-before-load-xhtml.xhtml
new file mode 100644
index 0000000..247c743
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/script-before-load-xhtml.xhtml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<script src="resources/print.js"></script>
+</head>
+
+<body>
+<p>This page tests the beforeload event on script elements. You should see a PASS message below if everything
+works.</p>
+<hr/>
+<div id="console"></div>
+
+<script>
+if (window.layoutTestController)
+ layoutTestController.dumpAsText();
+
+function beforeLoadFunc()
+{
+ print("PASS", "green");
+ event.preventDefault();
+}
+
+document.body.addEventListener("beforeload", beforeLoadFunc, true);
+</script>
+<script src="resources/fail.js"></script>
+
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/beforeload/script-before-load.html b/LayoutTests/fast/dom/beforeload/script-before-load.html
new file mode 100644
index 0000000..e71200c
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/script-before-load.html
@@ -0,0 +1,17 @@
+<html>
+<head>
+<script src="resources/print.js"></script>
+</head>
+
+<body>
+<p>This page tests the beforeload event on script elements. You should see a PASS message below if everything
+works.</p>
+<hr>
+<div id='console'></div>
+<script>
+if (window.layoutTestController)
+ layoutTestController.dumpAsText();
+</script>
+<script onbeforeload="print('PASS', 'green'); return false" src="resources/fail.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/beforeload/video-before-load-expected.txt b/LayoutTests/fast/dom/beforeload/video-before-load-expected.txt
new file mode 100644
index 0000000..69cfc5a
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/video-before-load-expected.txt
@@ -0,0 +1,2 @@
+PASS
+
diff --git a/LayoutTests/fast/dom/beforeload/video-before-load.html b/LayoutTests/fast/dom/beforeload/video-before-load.html
new file mode 100644
index 0000000..7876761
--- /dev/null
+++ b/LayoutTests/fast/dom/beforeload/video-before-load.html
@@ -0,0 +1,17 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<script src="resources/print.js"></script>
+</head>
+<body>
+<div id="console"></div>
+<script>
+if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+ layoutTestController.waitUntilDone();
+}
+</script>
+
+<video src="../../../media/content/test.mp4" onbeforeload="print('PASS', 'green'); if (window.layoutTestController) window.layoutTestController.notifyDone(); return false;" onload="print('FAIL', 'red'); if (window.layoutTestController) window.layoutTestController.notifyDone();"></video>
+
+</body>
+</html>