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

Side by Side Diff: third_party/WebKit/LayoutTests/fast/dom/idl-dictionary-unittest.html

Issue 1946453002: Make nullable members of IDL dictionaries contain null in JS when unset (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@_getComputedTiming
Patch Set: Fix test Created 4 years, 7 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/fast/dom/idl-dictionary-unittest-expected.txt » ('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 <script src="../../resources/js-test.js"></script> 2 <script src="../../resources/js-test.js"></script>
3 <script> 3 <script>
4 description('IDL dictionary unittest'); 4 description('IDL dictionary unittest');
5 5
6 var testObject1 = { foo: 'x' }; 6 var testObject1 = { foo: 'x' };
7 var testObject2 = { bar: 'y' }; 7 var testObject2 = { bar: 'y' };
8 8
9 if (window.internals && internals.dictionaryTest) { 9 if (window.internals && internals.dictionaryTest) {
10 var dictionaryTest = window.internals.dictionaryTest(); 10 var dictionaryTest = window.internals.dictionaryTest();
11 11
12 debug('Test for setting an empty dictionary'); 12 debug('Test for setting an empty dictionary');
13 dictionaryTest.set({}); 13 dictionaryTest.set({});
14 dict = dictionaryTest.get(); 14 dict = dictionaryTest.get();
15 shouldBeUndefined('dict.longMember'); 15 shouldBeUndefined('dict.longMember');
16 shouldBe('dict.longMemberWithDefault', '42'); 16 shouldBe('dict.longMemberWithDefault', '42');
17 shouldBeUndefined('dict.longOrNullMember'); 17 shouldBeNull('dict.longOrNullMember');
18 shouldBeNull('dict.longOrNullMemberWithDefault'); 18 shouldBeNull('dict.longOrNullMemberWithDefault');
19 shouldBeUndefined('dict.booleanMember'); 19 shouldBeUndefined('dict.booleanMember');
20 shouldBeUndefined('dict.doubleMember'); 20 shouldBeUndefined('dict.doubleMember');
21 shouldBeUndefined('dict.unrestrictedDoubleMember'); 21 shouldBeUndefined('dict.unrestrictedDoubleMember');
22 shouldBeUndefined('dict.stringMember'); 22 shouldBeUndefined('dict.stringMember');
23 shouldBeEqualToString('dict.stringMemberWithDefault', 'defaultStringValue'); 23 shouldBeEqualToString('dict.stringMemberWithDefault', 'defaultStringValue');
24 shouldBeUndefined('dict.byteStringMember'); 24 shouldBeUndefined('dict.byteStringMember');
25 shouldBeUndefined('dict.usvStringMember'); 25 shouldBeUndefined('dict.usvStringMember');
26 shouldBeUndefined('dict.stringSequenceMember'); 26 shouldBeUndefined('dict.stringSequenceMember');
27 shouldBe('dict.stringSequenceMemberWithDefault', '[]'); 27 shouldBe('dict.stringSequenceMemberWithDefault', '[]');
28 shouldBeUndefined('dict.stringSequenceOrNullMember'); 28 shouldBeNull('dict.stringSequenceOrNullMember');
29 shouldBeUndefined('dict.elementMember'); 29 shouldBeUndefined('dict.elementMember');
30 shouldBeUndefined('dict.elementOrNullMember'); 30 shouldBeNull('dict.elementOrNullMember');
31 shouldBeUndefined('dict.enumMember'); 31 shouldBeUndefined('dict.enumMember');
32 shouldBeUndefined('dict.enumArrayMember'); 32 shouldBeUndefined('dict.enumArrayMember');
33 shouldBeEqualToString('dict.enumMemberWithDefault', 'foo'); 33 shouldBeEqualToString('dict.enumMemberWithDefault', 'foo');
34 shouldBeUndefined('dict.enumOrNullMember'); 34 shouldBeNull('dict.enumOrNullMember');
35 shouldBeUndefined('dict.objectMember'); 35 shouldBeUndefined('dict.objectMember');
36 shouldBeNull('dict.objectOrNullMemberWithDefault'); 36 shouldBeNull('dict.objectOrNullMemberWithDefault');
37 shouldBeUndefined('dict.doubleOrStringMember'); 37 shouldBeUndefined('dict.doubleOrStringMember');
38 shouldBeUndefined('dict.doubleOrStringSequenceMember'); 38 shouldBeUndefined('dict.doubleOrStringSequenceMember');
39 shouldBeNull('dict.eventTargetOrNullMember'); 39 shouldBeNull('dict.eventTargetOrNullMember');
40 debug(''); 40 debug('');
41 41
42 debug('Test for setting undefined'); 42 debug('Test for setting undefined');
43 dictionaryTest.set(undefined); 43 dictionaryTest.set(undefined);
44 dict = dictionaryTest.get(); 44 dict = dictionaryTest.get();
45 shouldBeUndefined('dict.longMember'); 45 shouldBeUndefined('dict.longMember');
46 shouldBe('dict.longMemberWithDefault', '42'); 46 shouldBe('dict.longMemberWithDefault', '42');
47 shouldBeUndefined('dict.longOrNullMember'); 47 shouldBeNull('dict.longOrNullMember');
48 shouldBeNull('dict.longOrNullMemberWithDefault'); 48 shouldBeNull('dict.longOrNullMemberWithDefault');
49 shouldBeUndefined('dict.booleanMember'); 49 shouldBeUndefined('dict.booleanMember');
50 shouldBeUndefined('dict.doubleMember'); 50 shouldBeUndefined('dict.doubleMember');
51 shouldBeUndefined('dict.unrestrictedDoubleMember'); 51 shouldBeUndefined('dict.unrestrictedDoubleMember');
52 shouldBeUndefined('dict.stringMember'); 52 shouldBeUndefined('dict.stringMember');
53 shouldBeUndefined('dict.byteStringMember'); 53 shouldBeUndefined('dict.byteStringMember');
54 shouldBeUndefined('dict.usvStringMember'); 54 shouldBeUndefined('dict.usvStringMember');
55 shouldBeEqualToString('dict.stringMemberWithDefault', 'defaultStringValue'); 55 shouldBeEqualToString('dict.stringMemberWithDefault', 'defaultStringValue');
56 shouldBeUndefined('dict.stringSequenceMember'); 56 shouldBeUndefined('dict.stringSequenceMember');
57 shouldBe('dict.stringSequenceMemberWithDefault', '[]'); 57 shouldBe('dict.stringSequenceMemberWithDefault', '[]');
58 shouldBeUndefined('dict.stringSequenceOrNullMember'); 58 shouldBeNull('dict.stringSequenceOrNullMember');
59 shouldBeUndefined('dict.elementMember'); 59 shouldBeUndefined('dict.elementMember');
60 shouldBeUndefined('dict.elementOrNullMember'); 60 shouldBeNull('dict.elementOrNullMember');
61 shouldBeUndefined('dict.objectMember'); 61 shouldBeUndefined('dict.objectMember');
62 shouldBeNull('dict.objectOrNullMemberWithDefault'); 62 shouldBeNull('dict.objectOrNullMemberWithDefault');
63 shouldBeNull('dict.eventTargetOrNullMember'); 63 shouldBeNull('dict.eventTargetOrNullMember');
64 debug(''); 64 debug('');
65 65
66 var element1 = document.createElement('div'); 66 var element1 = document.createElement('div');
67 67
68 debug('Test for setting valid values'); 68 debug('Test for setting valid values');
69 dictionaryTest.set({ 69 dictionaryTest.set({
70 longMember: 1, 70 longMember: 1,
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 shouldBeEqualToString('dict.byteStringMember', '\x00\x01\xFE\xFF'); 103 shouldBeEqualToString('dict.byteStringMember', '\x00\x01\xFE\xFF');
104 shouldBeEqualToString('dict.usvStringMember', '!@#123ABCabc\xA0\uD800\uDC00' ); 104 shouldBeEqualToString('dict.usvStringMember', '!@#123ABCabc\xA0\uD800\uDC00' );
105 shouldBeTrue('dict.booleanMember'); 105 shouldBeTrue('dict.booleanMember');
106 shouldBe('dict.doubleMember', '3.14'); 106 shouldBe('dict.doubleMember', '3.14');
107 shouldBe('dict.unrestrictedDoubleMember', 'NaN'); 107 shouldBe('dict.unrestrictedDoubleMember', 'NaN');
108 shouldBe('dict.stringSequenceMember', '["foo", "bar", "baz"]'); 108 shouldBe('dict.stringSequenceMember', '["foo", "bar", "baz"]');
109 shouldBe('dict.stringSequenceMemberWithDefault', '["foo", "bar", "baz"]'); 109 shouldBe('dict.stringSequenceMemberWithDefault', '["foo", "bar", "baz"]');
110 shouldBe('dict.stringSequenceOrNullMember', '[]'); 110 shouldBe('dict.stringSequenceOrNullMember', '[]');
111 shouldBe('dict.elementMember', 'element1'); 111 shouldBe('dict.elementMember', 'element1');
112 // This will be undefined as the spec says 112 // This will be undefined as the spec says
113 shouldBeUndefined('dict.elementOrNullMember'); 113 shouldBeNull('dict.elementOrNullMember');
114 shouldBeEqualToString('dict.enumMember', 'foo'); 114 shouldBeEqualToString('dict.enumMember', 'foo');
115 shouldBeEqualToString('dict.enumMemberWithDefault', 'bar'); 115 shouldBeEqualToString('dict.enumMemberWithDefault', 'bar');
116 shouldBeEqualToString('dict.enumOrNullMember', 'baz'); 116 shouldBeEqualToString('dict.enumOrNullMember', 'baz');
117 shouldBe('dict.enumArrayMember', '["foo", "bar", "baz"]'); 117 shouldBe('dict.enumArrayMember', '["foo", "bar", "baz"]');
118 shouldBe('dict.objectMember', 'testObject1'); 118 shouldBe('dict.objectMember', 'testObject1');
119 shouldBe('dict.objectOrNullMemberWithDefault', 'testObject2'); 119 shouldBe('dict.objectOrNullMemberWithDefault', 'testObject2');
120 shouldBe('dict.doubleOrStringMember', '3.14'); 120 shouldBe('dict.doubleOrStringMember', '3.14');
121 shouldBe('dict.doubleOrStringSequenceMember', '[3.14, "Hello"]'); 121 shouldBe('dict.doubleOrStringSequenceMember', '[3.14, "Hello"]');
122 shouldBe('dict.eventTargetOrNullMember', 'element1'); 122 shouldBe('dict.eventTargetOrNullMember', 'element1');
123 debug(''); 123 debug('');
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 longMember: undefined, 156 longMember: undefined,
157 longMemberWithDefault: null, 157 longMemberWithDefault: null,
158 longOrNullMember: undefined, 158 longOrNullMember: undefined,
159 longOrNullMemberWithDefault: null, 159 longOrNullMemberWithDefault: null,
160 }); 160 });
161 dict = dictionaryTest.get(); 161 dict = dictionaryTest.get();
162 shouldBeUndefined('dict.longMember'); 162 shouldBeUndefined('dict.longMember');
163 // ToNumber(null) results in 0. 163 // ToNumber(null) results in 0.
164 shouldBe('dict.longMemberWithDefault', '0'); 164 shouldBe('dict.longMemberWithDefault', '0');
165 // Passing undefined shouldn't invoke any conversion. 165 // Passing undefined shouldn't invoke any conversion.
166 shouldBeUndefined('dict.longOrNullMember'); 166 shouldBeNull('dict.longOrNullMember');
167 // Nullable and its default value is null 167 // Nullable and its default value is null
168 shouldBeNull('dict.longOrNullMemberWithDefault'); 168 shouldBeNull('dict.longOrNullMemberWithDefault');
169 debug(''); 169 debug('');
170 170
171 debug('Test for setting invalid member'); 171 debug('Test for setting invalid member');
172 dictionaryTest.set({invalidMember: 'shouldNotBeSet'}); 172 dictionaryTest.set({invalidMember: 'shouldNotBeSet'});
173 dict = dictionaryTest.get(); 173 dict = dictionaryTest.get();
174 shouldBeUndefined('dict.invalidMember'); 174 shouldBeUndefined('dict.invalidMember');
175 debug(''); 175 debug('');
176 176
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 shouldBe('properties', '{}'); 266 shouldBe('properties', '{}');
267 shouldThrow("dictionaryTest.set({dictionaryMember: 42})"); 267 shouldThrow("dictionaryTest.set({dictionaryMember: 42})");
268 shouldThrow("dictionaryTest.set({dictionaryMember: 'foo'})"); 268 shouldThrow("dictionaryTest.set({dictionaryMember: 'foo'})");
269 debug(''); 269 debug('');
270 270
271 debug('Test for derived dictionary'); 271 debug('Test for derived dictionary');
272 dictionaryTest.setDerived({ requiredBooleanMember: true }); 272 dictionaryTest.setDerived({ requiredBooleanMember: true });
273 derived = dictionaryTest.getDerived(); 273 derived = dictionaryTest.getDerived();
274 shouldBeUndefined('derived.longMember'); 274 shouldBeUndefined('derived.longMember');
275 shouldBe('derived.longMemberWithDefault', '42'); 275 shouldBe('derived.longMemberWithDefault', '42');
276 shouldBeUndefined('derived.longOrNullMember'); 276 shouldBeNull('derived.longOrNullMember');
277 shouldBeNull('derived.longOrNullMemberWithDefault'); 277 shouldBeNull('derived.longOrNullMemberWithDefault');
278 shouldBeUndefined('derived.booleanMember'); 278 shouldBeUndefined('derived.booleanMember');
279 shouldBeUndefined('derived.doubleMember'); 279 shouldBeUndefined('derived.doubleMember');
280 shouldBeUndefined('derived.stringMember'); 280 shouldBeUndefined('derived.stringMember');
281 shouldBeEqualToString('derived.stringMemberWithDefault', 'defaultStringValue '); 281 shouldBeEqualToString('derived.stringMemberWithDefault', 'defaultStringValue ');
282 shouldBeUndefined('derived.stringSequenceMember'); 282 shouldBeUndefined('derived.stringSequenceMember');
283 shouldBe('derived.stringSequenceMemberWithDefault', '[]'); 283 shouldBe('derived.stringSequenceMemberWithDefault', '[]');
284 shouldBeUndefined('derived.stringSequenceOrNullMember'); 284 shouldBeNull('derived.stringSequenceOrNullMember');
285 shouldBeUndefined('derived.elementMember'); 285 shouldBeUndefined('derived.elementMember');
286 shouldBeUndefined('derived.elementOrNullMember'); 286 shouldBeNull('derived.elementOrNullMember');
287 shouldBeUndefined('derived.enumMember'); 287 shouldBeUndefined('derived.enumMember');
288 shouldBeEqualToString('derived.enumMemberWithDefault', 'foo'); 288 shouldBeEqualToString('derived.enumMemberWithDefault', 'foo');
289 shouldBeUndefined('derived.enumOrNullMember'); 289 shouldBeNull('derived.enumOrNullMember');
290 shouldBeUndefined('derived.objectMember'); 290 shouldBeUndefined('derived.objectMember');
291 shouldBeNull('derived.objectOrNullMemberWithDefault'); 291 shouldBeNull('derived.objectOrNullMemberWithDefault');
292 shouldBeUndefined('derived.derivedStringMember'); 292 shouldBeUndefined('derived.derivedStringMember');
293 shouldBeEqualToString('derived.derivedStringMemberWithDefault', 'derivedDefa ultStringValue'); 293 shouldBeEqualToString('derived.derivedStringMemberWithDefault', 'derivedDefa ultStringValue');
294 shouldBeTrue('derived.requiredBooleanMember'); 294 shouldBeTrue('derived.requiredBooleanMember');
295 debug(''); 295 debug('');
296 296
297 dictionaryTest.setDerived({ 297 dictionaryTest.setDerived({
298 longMember: 1, 298 longMember: 1,
299 stringMemberWithDefault: 'modifiedString', 299 stringMemberWithDefault: 'modifiedString',
300 derivedStringMember: 'modifiedString2', 300 derivedStringMember: 'modifiedString2',
301 derivedStringMemberWithDefault: 'modifiedString3', 301 derivedStringMemberWithDefault: 'modifiedString3',
302 invalidMember: 'shouldNotBeSet', 302 invalidMember: 'shouldNotBeSet',
303 requiredBooleanMember: false, 303 requiredBooleanMember: false,
304 }); 304 });
305 derived = dictionaryTest.getDerived(); 305 derived = dictionaryTest.getDerived();
306 shouldBe('derived.longMember', '1'); 306 shouldBe('derived.longMember', '1');
307 shouldBeEqualToString('derived.stringMemberWithDefault', 'modifiedString'); 307 shouldBeEqualToString('derived.stringMemberWithDefault', 'modifiedString');
308 shouldBeEqualToString('derived.derivedStringMember', 'modifiedString2'); 308 shouldBeEqualToString('derived.derivedStringMember', 'modifiedString2');
309 shouldBeEqualToString('derived.derivedStringMemberWithDefault', 'modifiedStr ing3'); 309 shouldBeEqualToString('derived.derivedStringMemberWithDefault', 'modifiedStr ing3');
310 shouldBeUndefined('derived.invalidMember'); 310 shouldBeUndefined('derived.invalidMember');
311 shouldBeFalse('derived.requiredBooleanMember'); 311 shouldBeFalse('derived.requiredBooleanMember');
312 debug(''); 312 debug('');
313 313
314 debug('Test for passing invalid values as derived dictionary'); 314 debug('Test for passing invalid values as derived dictionary');
315 shouldThrow("dictionaryTest.setDerived({objectMember: 42, requiredBooleanMem ber: false })"); 315 shouldThrow("dictionaryTest.setDerived({objectMember: 42, requiredBooleanMem ber: false })");
316 shouldThrow("dictionaryTest.setDerived({})"); // Missing required member. 316 shouldThrow("dictionaryTest.setDerived({})"); // Missing required member.
317 } 317 }
318 </script> 318 </script>
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/fast/dom/idl-dictionary-unittest-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698