Index: third_party/WebKit/LayoutTests/custom-elements/constructor-context-dies-before-super.html |
diff --git a/third_party/WebKit/LayoutTests/custom-elements/constructor-context-dies-before-super.html b/third_party/WebKit/LayoutTests/custom-elements/constructor-context-dies-before-super.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..cbf88e51da91e07e5d2e6d44297122233e9518e3 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/custom-elements/constructor-context-dies-before-super.html |
@@ -0,0 +1,45 @@ |
+<!DOCTYPE html> |
+<script src="../resources/testharness.js"></script> |
+<script src="../resources/testharness-helpers.js"></script> |
+<script src="../resources/testharnessreport.js"></script> |
+<script src="../fast/dom/custom/testutils.js"></script> |
+<body> |
+<script> |
+'use strict'; |
+ |
+// TODO(dominicc): Port fork() etc. to work with testharness, then |
+// remove these. |
+function debug() {} |
+function finishJSTest() {} |
+ |
+(() => { |
+ |
+if (fork()) { |
+ // The controlling parent frame. |
+ let t = async_test('constructor destroys the context before super'); |
+ let watcher = new EventWatcher(t, window, 'message'); |
+ watcher.wait_for('message').then(t.step_func((event) => { |
+ assert_equals(event.data, 'PASS destroyed context'); |
+ return watcher.wait_for('message'); |
+ })).then(t.step_func((event) => { |
+ assert_equals(event.data, 'PASS child done'); |
+ t.done(); |
+ })); |
+} else { |
+ // The child frame. |
+ class BadConstructor extends HTMLElement { |
+ constructor() { |
+ destroyContext(); |
+ super(); |
+ } |
+ } |
+ window.customElements.define('x-x', BadConstructor); |
+ try { |
+ new BadConstructor(); |
+ } finally { |
+ done(); |
+ } |
+} |
+ |
+})(); |
+</script> |