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

Unified Diff: third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore_getkey.html

Issue 1407883002: Add new experimental IDBObjectStore.getKey(query) API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: git cl format Created 4 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore_getkey.html
diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore_getkey.html b/third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore_getkey.html
new file mode 100644
index 0000000000000000000000000000000000000000..e77a6b4bf5dc7b21c1954b776ee02f8276f6c614
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/storage/indexeddb/idbobjectstore_getkey.html
@@ -0,0 +1,104 @@
+<!DOCTYPE html>
+<title>IndexedDB: Test IDBObjectStore.getKey()</title>
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script>
+<script>
+
+function getkey_test(func, name) {
+ return async_test(function(t) {
+ var del = indexedDB.deleteDatabase(name);
+ del.onerror = t.unreached_func('deleteDatabase failed');
+ var open = indexedDB.open(name);
+ open.onerror = t.unreached_func('open failed');
+ open.onupgradeneeded = t.step_func(function() {
+ var db = open.result;
+
+ var basic = db.createObjectStore('basic');
+ var key_path_store = db.createObjectStore('key path',
+ {keyPath: 'id'});
+ var key_generator_store = db.createObjectStore('key generator',
+ {autoIncrement: true});
+ var key_generator_and_path_store = db.createObjectStore(
+ 'key generator and key path',
+ {autoIncrement: true, key_path: 'id'});
+
+ for (var i = 1; i <= 10; ++i) {
+ basic.put('value: ' + i, i);
+ key_path_store.put({id: i});
+ key_generator_store.put('value: ' + i);
+ key_generator_and_path_store.put({});
+ }
+ });
+ open.onsuccess = t.step_func(function() {
+ var db = open.result;
+ func(t, db);
+ });
+ }, name);
+}
+
+getkey_test(function(t, db) {
+ var tx = db.transaction('basic');
+ var store = tx.objectStore('basic');
+ assert_throws(TypeError(), function() { store.getKey(); });
+ assert_throws({name: 'DataError'}, function() { store.getKey(null); });
+ assert_throws({name: 'DataError'}, function() { store.getKey({}); });
+ t.done();
+}, 'IDBObjectStore.getKey() - invalid parameters');
+
+[
+ 'basic',
+ 'key path',
+ 'key generator',
+ 'key generator and key path'
+].forEach(function(store_name) {
+
+ getkey_test(function(t, db) {
+ var tx = db.transaction(store_name);
+ var store = tx.objectStore(store_name);
+ var request = store.getKey(5);
+ request.onerror = t.unreached_func('request failed');
+ request.onsuccess = t.step_func(function() {
+ assert_equals(request.result, 5);
+ });
+ tx.onabort = t.unreached_func('transaction aborted');
+ tx.oncomplete = t.step_func(function() { t.done(); });
+ }, 'IDBObjectStore.getKey() - ' + store_name + ' - key');
+
+ getkey_test(function(t, db) {
+ var tx = db.transaction(store_name);
+ var store = tx.objectStore(store_name);
+ var request = store.getKey(IDBKeyRange.lowerBound(4.5));
+ request.onerror = t.unreached_func('request failed');
+ request.onsuccess = t.step_func(function() {
+ assert_equals(request.result, 5);
+ });
+ tx.onabort = t.unreached_func('transaction aborted');
+ tx.oncomplete = t.step_func(function() { t.done(); });
+ }, 'IDBObjectStore.getKey() - ' + store_name + ' - range');
+
+ getkey_test(function(t, db) {
+ var tx = db.transaction(store_name);
+ var store = tx.objectStore(store_name);
+ var request = store.getKey(11);
+ request.onerror = t.unreached_func('request failed');
+ request.onsuccess = t.step_func(function() {
+ assert_equals(request.result, undefined);
+ });
+ tx.onabort = t.unreached_func('transaction aborted');
+ tx.oncomplete = t.step_func(function() { t.done(); });
+ }, 'IDBObjectStore.getKey() - ' + store_name + ' - key - no match');
+
+ getkey_test(function(t, db) {
+ var tx = db.transaction(store_name);
+ var store = tx.objectStore(store_name);
+ var request = store.getKey(IDBKeyRange.lowerBound(11));
+ request.onerror = t.unreached_func('request failed');
+ request.onsuccess = t.step_func(function() {
+ assert_equals(request.result, undefined);
+ });
+ tx.onabort = t.unreached_func('transaction aborted');
+ tx.oncomplete = t.step_func(function() { t.done(); });
+ }, 'IDBObjectStore.getKey() - ' + store_name + ' - range - no match');
+});
+
+</script>

Powered by Google App Engine
This is Rietveld 408576698