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

Side by Side Diff: third_party/WebKit/LayoutTests/custom-elements/spec/create-element.html

Issue 2477713003: Custom Elements: Check Definition in createElement, Create Customized Built-in Elements Sync (Closed)
Patch Set: V1 definition check in document::createElement Created 4 years, 1 month 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
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <title>Custom Elements: Create an element when definition is non-null and synchr onous flag set</title>
3 <script src="../../resources/testharness.js"></script>
4 <script src="../../resources/testharnessreport.js"></script>
5 <script src="resources/custom-elements-helpers.js"></script>
6 <body>
7 <script>
8 'use strict';
9
10 // https://dom.spec.whatwg.org/#dom-document-createelement
11 // 1. If localName does not match the Name production, then throw an InvalidChar acterError
12 // 2. If context object is an HTML document, let localName be converted to ASCII lowercase
13 // 5. If 'is' is non-null and definition can't be found, then throw a NotFoundEr ror
14 // 6. If 'is' is non-null, then set is attribute to 'is'
15
16 function setup(w) {
17 class A extends w.HTMLElement {
18 constructor() {
dominicc (has gone to gerrit) 2016/11/15 07:39:53 There's no need to write super-only constructors l
19 super();
20 }
21 }
22 w.customElements.define('a-a', A);
23
24 class B extends w.HTMLDivElement {
25 constructor() {
26 super();
27 }
28 }
29 w.customElements.define('b-b', B, {extends: 'div'});
30 }
31
32 test_with_window((w) => {
33 setup(w);
dominicc (has gone to gerrit) 2016/11/15 07:39:53 Why do you need any custom elements for this test?
34 assert_throws_dom_exception(w, 'InvalidCharacterError', () => {
35 w.document.createElement('.invalid.name.');
36 });
37 }, '1. If localName does not match the Name production, then throw an InvalidCha racterError');
38
39 test_with_window((w) => {
40 class A extends w.HTMLElement {
41 constructor() {
42 super();
43 }
44 }
45 w.customElements.define('a-a', A);
46
47 class B extends w.HTMLDivElement {
48 constructor() {
49 super();
50 }
51 }
52 w.customElements.define('b-b', B, {extends: 'div'});
dominicc (has gone to gerrit) 2016/11/15 07:39:53 Why not use setup?
53
54 assert_equals(w.document.createElement('A-a').constructor, A);
55 assert_equals(w.document.createElement('div', {is: 'b-B'}).constructor, B);
56 }, '2. If context object is an HTML document, let localName be converted to ASCI I lowercase');
dominicc (has gone to gerrit) 2016/11/15 07:39:53 I don't think "is" is a local name. Consider split
57
58 test_with_window((w) => {
59 setup(w);
60 assert_throws_dom_exception(w, 'NotFoundError', () => {
61 w.document.createElement('div', {is: 'a-a'});
62 });
dominicc (has gone to gerrit) 2016/11/15 07:39:53 These are good test cases. Add a third parameter
63 assert_throws_dom_exception(w, 'NotFoundError', () => {
64 w.document.createElement('button', {is: 'b-b'});
65 });
66 assert_throws_dom_exception(w, 'NotFoundError', () => {
67 w.document.createElement('button', {id: 'b-b'});
68 });
69 assert_throws_dom_exception(w, 'NotFoundError', () => {
70 w.document.createElement('div', {is: ''});
71 });
72 assert_throws_dom_exception(w, 'NotFoundError', () => {
73 w.document.createElement('div', {});
74 });
75 }, '5. If \'is\' is non-null and definition can not be found, then throw a NotFo undError');
76
77 test_with_window((w) => {
78 setup(w);
79 let a = w.document.createElement('a-a');
80 let b = w.document.createElement('div', {is : 'b-b'});
81 assert_equals(a.getAttribute('is'), null);
82 assert_equals(b.getAttribute('is'), 'b-b');
83 }, '6. If \'is\' is non-null, then set is-attribute to \'is\'');
84
85 </script>
86 </body>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698