Index: LayoutTests/imported/web-platform-tests/IndexedDB/keypath_invalid.htm |
diff --git a/LayoutTests/imported/web-platform-tests/IndexedDB/keypath_invalid.htm b/LayoutTests/imported/web-platform-tests/IndexedDB/keypath_invalid.htm |
new file mode 100644 |
index 0000000000000000000000000000000000000000..bc3197b8a8f23f3afa34c3823e57899d102066eb |
--- /dev/null |
+++ b/LayoutTests/imported/web-platform-tests/IndexedDB/keypath_invalid.htm |
@@ -0,0 +1,65 @@ |
+<!DOCTYPE html> |
+<!-- Submitted from TestTWF Paris --> |
+<meta charset="utf-8"> |
+<title>Invalid keypath</title> |
+<link rel=help href="http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#key-path-construct"> |
+<link rel=assert title="A key path is a DOMString that defines how to extract a key from a value. A valid key path is either the empty string, a JavaScript identifier, or multiple Javascript identifiers separated by periods (ASCII character code 46) [ECMA-262]."> |
+<script src="../../../resources/testharness.js"></script> |
+<script src="../../../resources/testharnessreport.js"></script> |
+<script src="support.js"></script> |
+ |
+<script> |
+ |
+ var global_db = createdb_for_multiple_tests(); |
+ |
+ function invalid_keypath(keypath, desc) { |
+ var t = async_test("Invalid keyPath - " + (desc ? desc : format_value(keypath)), undefined, 2); |
+ |
+ var openrq = global_db.setTest(t), |
+ store_name = "store-" + Date.now() + Math.random(); |
+ |
+ openrq.onupgradeneeded = function(e) { |
+ var db = e.target.result; |
+ assert_throws('SyntaxError', function() { |
+ db.createObjectStore(store_name, { keyPath: keypath }) |
+ }, "createObjectStore with keyPath"); |
+ |
+ store = db.createObjectStore(store_name); |
+ assert_throws('SyntaxError', function() { |
+ store.createIndex('index', keypath); |
+ }, "createIndex with keyPath"); |
+ |
+ db.close(); |
+ |
+ this.done(); |
+ }; |
+ } |
+ |
+ invalid_keypath('j a'); |
+ invalid_keypath('.yo'); |
+ invalid_keypath('yo,lo'); |
+ invalid_keypath([]); |
+ invalid_keypath(['array with space']); |
+ invalid_keypath(['multi_array', ['a', 'b']], "multidimensional array (invalid toString)"); // => ['multi_array', 'a,b'] |
+ invalid_keypath('3m'); |
+ invalid_keypath({toString:function(){return '3m'}}, '{toString->3m}'); |
+ invalid_keypath('my.1337'); |
+ invalid_keypath('..yo'); |
+ invalid_keypath('y..o'); |
+ invalid_keypath('y.o.'); |
+ invalid_keypath('y.o..'); |
+ invalid_keypath('m.*'); |
+ invalid_keypath('"m"'); |
+ invalid_keypath('m%'); |
+ invalid_keypath('m/'); |
+ invalid_keypath('m/a'); |
+ invalid_keypath('m&'); |
+ invalid_keypath('m!'); |
+ invalid_keypath('*'); |
+ invalid_keypath('*.*'); |
+ invalid_keypath('^m'); |
+ invalid_keypath('/m/'); |
+ |
+</script> |
+ |
+<div id=log></div> |