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

Side by Side Diff: third_party/WebKit/LayoutTests/imported/web-platform-tests/IndexedDB/key_invalid.htm

Issue 1984023002: Move web-platform-tests to wpt (part 1 of 2) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <!-- Submitted from TestTWF Paris -->
3 <meta charset=utf-8">
4 <title>Invalid key</title>
5 <link rel=help href="http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html# key-construct">
6 <link rel=assert title="A value is said to be a valid key if it is one of the fo llowing types: Array JavaScript objects [ECMA-262], DOMString [WEBIDL], Date [EC MA-262] or float [WEBIDL]. However Arrays are only valid keys if every item in t he array is defined and is a valid key (i.e. sparse arrays can not be valid keys ) and if the Array doesn't directly or indirectly contain itself. Any non-numeri c properties are ignored, and thus does not affect whether the Array is a valid key. Additionally, if the value is of type float, it is only a valid key if it i s not NaN, and if the value is of type Date it is only a valid key if its [[Prim itiveValue]] internal property, as defined by [ECMA-262], is not NaN. Conforming user agents must support all valid keys as keys.">
7 <!-- original author -->
8 <link rel=author href="mailto:odinho@opera.com" title="Odin Hørthe Omdal">
9 <!-- some additions by Baptiste Fontaine (batifon@yahoo.fr) -->
10 <script src=../../../resources/testharness.js></script>
11 <script src=../../../resources/testharnessreport.js></script>
12 <script src=support.js></script>
13
14 <script>
15 var db = createdb_for_multiple_tests(),
16 // cache for ObjectStores
17 objStore = null,
18 objStore2 = null;
19
20 function is_cloneable(o) {
21 try {
22 self.postMessage(o, '*');
23 return true;
24 } catch (ex) {
25 return false;
26 }
27 }
28
29 function invalid_key(desc, key) {
30 var t = async_test(document.title + " - " + desc);
31
32 // set the current test, and run it
33 db.setTest(t).onupgradeneeded = function(e) {
34 objStore = objStore || e.target.result.createObjectStore("store");
35 assert_throws('DataError', function() {
36 objStore.add("value", key);
37 });
38
39 if (is_cloneable(key)) {
40 objStore2 = objStore2 || e.target.result.createObjectStore("stor e2", { keyPath: ["x", "keypath"] });
41 assert_throws('DataError', function() {
42 objStore2.add({ x: "value", keypath: key });
43 });
44 }
45 this.done();
46 };
47 }
48
49 var fake_array = {
50 length : 0,
51 constructor : Array
52 };
53
54 var ArrayClone = function(){};
55 ArrayClone.prototype = Array;
56 var ArrayClone_instance = new ArrayClone();
57
58 // booleans
59 invalid_key( 'true' , true );
60 invalid_key( 'false' , false );
61
62 // null/NaN/undefined
63 invalid_key( 'null' , null );
64 invalid_key( 'NaN' , NaN );
65 invalid_key( 'undefined' , undefined );
66 invalid_key( 'undefined2');
67
68 // functions
69 invalid_key( 'function() {}', function(){} );
70
71 // objects
72 invalid_key( '{}' , {} );
73 invalid_key( '{ obj: 1 }' , { obj: 1 });
74 invalid_key( 'Math' , Math );
75 invalid_key( 'window' , window );
76 invalid_key( '{length:0,constructor:Array}' , fake_array );
77 invalid_key( 'Array clone’s instance' , ArrayClone_instance );
78 invalid_key( 'Array (object)' , Array );
79 invalid_key( 'String (object)' , String );
80 invalid_key( 'new String()' , new String() );
81 invalid_key( 'new Number()' , new Number() );
82 invalid_key( 'new Boolean()' , new Boolean() );
83
84 // arrays
85 invalid_key( '[{}]' , [{}] );
86 invalid_key( '[[], [], [], [[ Date ]]]' , [ [], [], [], [[ Date ]] ] );
87 invalid_key( '[undefined]' , [undefined] );
88 invalid_key( '[,1]' , [,1] );
89
90 invalid_key( 'document.getElements'
91 +'ByTagName("script")' , document.getElementsByTagName("scr ipt") );
92
93 // dates
94 invalid_key( 'new Date(NaN)' , new Date(NaN) );
95 invalid_key( 'new Date(Infinity)' , new Date(Infinity) );
96
97 // regexes
98 invalid_key( '/foo/' , /foo/ );
99 invalid_key( 'new RegExp()' , new RegExp() );
100
101 var sparse = [];
102 sparse[10] = "hei";
103 invalid_key('sparse array', sparse);
104
105 var sparse2 = [];
106 sparse2[0] = 1;
107 sparse2[""] = 2;
108 sparse2[2] = 3;
109 invalid_key('sparse array 2', sparse2);
110
111 invalid_key('[[1], [3], [7], [[ sparse array ]]]', [ [1], [3], [7], [[ spars e2 ]] ]);
112
113 // sparse3
114 invalid_key( '[1,2,3,,]', [1,2,3,,] );
115
116 var recursive = [];
117 recursive.push(recursive);
118 invalid_key('array directly contains self', recursive);
119
120 var recursive2 = [];
121 recursive2.push([recursive2]);
122 invalid_key('array indirectly contains self', recursive2);
123
124 var recursive3 = [recursive];
125 invalid_key('array member contains self', recursive3);
126
127 </script>
128
129 <div id=log></div>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698