Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(52)

Side by Side Diff: third_party/WebKit/LayoutTests/custom-elements/spec/custom-elements-registry/when_defined.html

Issue 2100403002: calling whenDefined with invalid name should throw SyntaxError (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: removing assert_throws_dom_exception Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/custom-elements/spec/define-element.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <title>Custom Elements: CustomElementsRegistry.whenDefined</title> 2 <title>Custom Elements: CustomElementsRegistry.whenDefined</title>
3 <script src="../../../resources/testharness.js"></script> 3 <script src="../../../resources/testharness.js"></script>
4 <script src="../../../resources/testharnessreport.js"></script> 4 <script src="../../../resources/testharnessreport.js"></script>
5 <script src="../resources/custom-elements-helpers.js"></script>
5 <body> 6 <body>
6 <div id="log"></div> 7 <div id="log"></div>
7 <script> 8 <script>
8 'use strict'; 9 'use strict';
9 (() => { 10 (() => {
10 // https://html.spec.whatwg.org/multipage/scripting.html#dom-customelementsreg istry-whendefined 11 // https://html.spec.whatwg.org/multipage/scripting.html#dom-customelementsreg istry-whendefined
11 // Use window from iframe to isolate the test. 12 // Use window from iframe to isolate the test.
12 function setup() { 13 function setup() {
13 const iframe = document.createElement('iframe'); 14 const iframe = document.createElement('iframe');
14 document.body.appendChild(iframe); 15 document.body.appendChild(iframe);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 'When name is defined, we should have a new promise.'); 52 'When name is defined, we should have a new promise.');
52 assert_not_equals(promiseAfterDefined, 53 assert_not_equals(promiseAfterDefined,
53 customElements.whenDefined(kNameToBeDefined), 54 customElements.whenDefined(kNameToBeDefined),
54 'Once name is defined, whenDefined() always returns a new promise.'); 55 'Once name is defined, whenDefined() always returns a new promise.');
55 return customElements; 56 return customElements;
56 }).then(customElements => { 57 }).then(customElements => {
57 assert_true(beforeDefined, 'promise before defined should be resolved.'); 58 assert_true(beforeDefined, 'promise before defined should be resolved.');
58 assert_true(afterDefined, 'promise after defined should be resolved.'); 59 assert_true(afterDefined, 'promise after defined should be resolved.');
59 assert_true(notDefined, 'promise for not defined name should not be resolv ed.'); 60 assert_true(notDefined, 'promise for not defined name should not be resolv ed.');
60 }).catch(reason => { throw reason })); 61 }).catch(reason => { throw reason }));
62
63 // Calling whenDefined() with invalid names should throw "SyntaxError"DOMExcep tion
64 // https://html.spec.whatwg.org/multipage/scripting.html#valid-custom-element- name
65 let invalid_names = [
yosin_UTC9 2016/09/21 09:42:31 nit: s/let/const/
66 'annotation-xml',
67 'color-profile',
68 'font-face',
69 'font-face-src',
70 'font-face-uri',
71 'font-face-format',
72 'font-face-name',
73 'missing-glyph',
74 'div', 'p',
75 'nothtmlbutnohyphen',
76 '-not-initial-a-z', '0not-initial-a-z', 'Not-initial-a-z',
77 'intermediate-UPPERCASE-letters',
78 'bad-\u00b6', 'bad-\u00b8', 'bad-\u00bf', 'bad-\u00d7', 'bad-\u00f7',
79 'bad-\u037e', 'bad-\u037e', 'bad-\u2000', 'bad-\u200e', 'bad-\u203e',
80 'bad-\u2041', 'bad-\u206f', 'bad-\u2190', 'bad-\u2bff', 'bad-\u2ff0',
81 'bad-\u3000', 'bad-\ud800', 'bad-\uf8ff', 'bad-\ufdd0', 'bad-\ufdef',
82 'bad-\ufffe', 'bad-\uffff', 'bad-' + String.fromCodePoint(0xf0000)
yosin_UTC9 2016/09/21 09:42:31 You can write as 'bad-\u{F0000}'.
83 ];
84
85 invalid_names.forEach((name) => {
86 promise_test((t) => {
87 return create_window_in_test(t)
88 .then((w) => {
89 return promise_rejects_with_dom_exception_syntax_error(w, t, w.customEle ments.whenDefined(name));
yosin_UTC9 2016/09/21 09:42:31 You can write as below: .then(w => promise_rejects
90 });
91 }, 'whenDefined() called with invalid name ' + name + ' should throw "Syntax Error"DOMException');
yosin_UTC9 2016/09/21 09:42:31 You can write as below: `whenDefined() called with
92 });
93
94 function promise_rejects_with_dom_exception_syntax_error(global_context, test, promise, description) {
95 return promise.then(test.unreached_func("Should have rejected: " + descripti on)).catch(function(e) {
96 assert_throws_dom_exception(global_context, 'SYNTAX_ERR', function () { throw e; })
97 });
98 }
61 })(); 99 })();
62 </script> 100 </script>
63 </body> 101 </body>
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/custom-elements/spec/define-element.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698