summaryrefslogtreecommitdiff
path: root/testing
diff options
context:
space:
mode:
authorGaming4JC <g4jc@hyperbola.info>2020-01-20 20:14:59 -0500
committerGaming4JC <g4jc@hyperbola.info>2020-01-26 15:50:48 -0500
commit8db81508a1ffe1c3873503a1cb2082d664714776 (patch)
treedd1ef38691c25a80787dfcdca06038a7fac18c7e /testing
parent4083a9abf76058d35f0277dd6857478fc6715137 (diff)
downloaduxp-8db81508a1ffe1c3873503a1cb2082d664714776.tar.gz
Bug 1415761 - Catch the exception and rethrow it after invoking custom elements reactions;
The spec was unclear on how CEReactions interact with thrown exceptions; see https://github.com/whatwg/html/issues/3217. The spec is now being clarified in https://github.com/whatwg/html/pull/3235. Tag UXP Issue #1344
Diffstat (limited to 'testing')
-rw-r--r--testing/web-platform/tests/custom-elements/reactions/with-exceptions.html31
1 files changed, 31 insertions, 0 deletions
diff --git a/testing/web-platform/tests/custom-elements/reactions/with-exceptions.html b/testing/web-platform/tests/custom-elements/reactions/with-exceptions.html
new file mode 100644
index 0000000000..82e0f59c93
--- /dev/null
+++ b/testing/web-platform/tests/custom-elements/reactions/with-exceptions.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Custom Elements: CEReactions interaction with exceptions</title>
+<link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me">
+<meta name="help" content="https://html.spec.whatwg.org/multipage/#cereactions">
+<meta name="help" content="https://github.com/whatwg/html/pull/3235">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../resources/custom-elements-helpers.js"></script>
+
+<div id="log"></div>
+
+<script>
+"use strict";
+// Basically from https://github.com/whatwg/html/issues/3217#issuecomment-343633273
+test_with_window((contentWindow, contentDocument) => {
+ let reactionRan = false;
+ contentWindow.customElements.define("custom-element", class extends contentWindow.HTMLElement {
+ disconnectedCallback() {
+ reactionRan = true;
+ }
+ });
+ const text = contentDocument.createTextNode("");
+ contentDocument.documentElement.appendChild(text);
+ const element = contentDocument.createElement("custom-element");
+ contentDocument.documentElement.appendChild(element);
+ assert_throws("HierarchyRequestError", () => text.before("", contentDocument.documentElement));
+ assert_true(reactionRan);
+}, "Reaction must run even after the exception is thrown");
+</script>