summaryrefslogtreecommitdiffstats
path: root/dom/canvas/test/reftest/filters/liveness-document-removeChild.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/canvas/test/reftest/filters/liveness-document-removeChild.html')
-rw-r--r--dom/canvas/test/reftest/filters/liveness-document-removeChild.html34
1 files changed, 34 insertions, 0 deletions
diff --git a/dom/canvas/test/reftest/filters/liveness-document-removeChild.html b/dom/canvas/test/reftest/filters/liveness-document-removeChild.html
new file mode 100644
index 0000000000..acce9b8694
--- /dev/null
+++ b/dom/canvas/test/reftest/filters/liveness-document-removeChild.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html lang="en">
+<title>canvas filters: remove referenced filter element through document.removeChild()</title>
+<body onload="loaded()">
+<canvas id="canvas" width="10" height="10"></canvas>
+<svg height="0">
+ <filter id="filter">
+ <feFlood flood-color="red"/>
+ </filter>
+</svg>
+<script>
+function loaded() {
+ var ctx = document.getElementById('canvas').getContext('2d');
+ ctx.filter = 'url(#filter)';
+ ctx.fillRect(0, 0, 10, 10); // do a draw first to work around bug 1287316
+ document.removeChild(document.documentElement);
+ // The document.removeChild() call removed #filter from the document. So the
+ // filter reference should now be invalid, and the rect should be drawn
+ // without a filter applied, resulting in black.
+ ctx.fillRect(0, 0, 10, 10);
+ try {
+ var data = ctx.getImageData(0, 0, 1, 1).data;
+ if (data[0] == 0 && data[1] == 0 && data[2] == 0 && data[3] == 255) {
+ // Successfully painted black.
+ document.write('PASS');
+ } else {
+ // Painted something else, like red.
+ document.write('FAIL');
+ }
+ } catch (e) {
+ document.write('getImageData failed');
+ }
+}
+</script>