IDB: idbobjectstore_put WPT extended to workers in addition to window.
web_tests/external/wpt/IndexedDB/Tests currently only verify in window
environment. Extend tests to cover dedicated, shared and service
workers. Tests related to idbobjectstore_put.htm have been extended. 16
files have been consolidated into one file:- idbobjectstore_put.any.js
Bug: 41455766
Change-Id: I883b1df334fdca1b64e3eb82c45d08af99d10160
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5355266
Reviewed-by: Evan Stade <estade@chromium.org>
Reviewed-by: Ayu Ishii <ayui@chromium.org>
Commit-Queue: Sneha Agarwal <snehagarwal@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1271140}
diff --git a/IndexedDB/idbobjectstore_put.any.js b/IndexedDB/idbobjectstore_put.any.js
new file mode 100644
index 0000000..8930329
--- /dev/null
+++ b/IndexedDB/idbobjectstore_put.any.js
@@ -0,0 +1,427 @@
+// META: global=window,worker
+// META: title=IDBObjectStore.put()
+// META: script=resources/support.js
+// @author Microsoft <https://www.microsoft.com>
+// @author Intel <http://www.intel.com>
+
+'use strict';
+
+async_test(t => {
+ let db;
+ const record = { key: 1, property: "data" };
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ db = e.target.result;
+ const objStore = db.createObjectStore("store", { keyPath: "key" });
+
+ objStore.put(record);
+ };
+
+ open_rq.onsuccess = function(e) {
+ const rq = db.transaction("store", "readonly",
+ { durability: 'relaxed' })
+ .objectStore("store")
+ .get(record.key);
+
+ rq.onsuccess = t.step_func(function(e) {
+ assert_equals(e.target.result.property, record.property);
+ assert_equals(e.target.result.key, record.key);
+ t.done();
+ });
+ };
+}, 'put() with an inline key');
+
+async_test(t => {
+ let db;
+ const key = 1;
+ const record = { property: "data" };
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ db = e.target.result;
+ const objStore = db.createObjectStore("store");
+
+ objStore.put(record, key);
+ };
+
+ open_rq.onsuccess = function(e) {
+ const rq = db.transaction("store", "readonly", {durability: 'relaxed'})
+ .objectStore("store")
+ .get(key);
+
+ rq.onsuccess = t.step_func(function(e) {
+ assert_equals(e.target.result.property, record.property);
+
+ t.done();
+ });
+ };
+},'put() with an out-of-line key');
+
+async_test(t => {
+ let db;
+ let success_event;
+ const record = { key: 1, property: "data" };
+ const record_put = { key: 1, property: "changed", more: ["stuff", 2] };
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ db = e.target.result;
+ const objStore = db.createObjectStore("store", { keyPath: "key" });
+ objStore.put(record);
+
+ const rq = objStore.put(record_put);
+ rq.onerror = fail(t, "error on put");
+
+ rq.onsuccess = t.step_func(function(e) {
+ success_event = true;
+ });
+ };
+
+ open_rq.onsuccess = function(e) {
+ assert_true(success_event);
+
+ const rq = db.transaction("store", "readonly",
+ { durability: 'relaxed' })
+ .objectStore("store")
+ .get(1);
+
+ rq.onsuccess = t.step_func(function(e) {
+ const rec = e.target.result;
+
+ assert_equals(rec.key, record_put.key);
+ assert_equals(rec.property, record_put.property);
+ assert_array_equals(rec.more, record_put.more);
+
+ t.done();
+ });
+ };
+}, 'put() record with key already exists');
+
+async_test(t => {
+ const record = { key: 1, property: "data" };
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ let db = e.target.result;
+ const objStore = db.createObjectStore("store", {
+ autoIncrement: true });
+ objStore.createIndex("i1", "property", { unique: true });
+ objStore.put(record);
+
+ const rq = objStore.put(record);
+ rq.onsuccess = fail(t, "success on putting duplicate indexed record");
+
+ rq.onerror = t.step_func(function(e) {
+ assert_equals(rq.error.name, "ConstraintError");
+ assert_equals(e.target.error.name, "ConstraintError");
+
+ assert_equals(e.type, "error");
+
+ e.preventDefault();
+ e.stopPropagation();
+ });
+ };
+
+ // Defer done, giving a spurious rq.onsuccess a chance to run
+ open_rq.onsuccess = function(e) {
+ t.done();
+ };
+}, 'put() where an index has unique:true specified');
+
+async_test(t => {
+ let db;
+ const record = { test: { obj: { key: 1 } }, property: "data" };
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ db = e.target.result;
+ const objStore = db.createObjectStore("store",
+ { keyPath: "test.obj.key" });
+ objStore.put(record);
+ };
+
+ open_rq.onsuccess = function(e) {
+ const rq = db.transaction("store", "readonly",
+ { durability: 'relaxed' })
+ .objectStore("store")
+ .get(record.test.obj.key);
+
+ rq.onsuccess = t.step_func(function(e) {
+ assert_equals(e.target.result.property, record.property);
+
+ t.done();
+ });
+ };
+}, 'Object store\'s key path is an object attribute');
+
+async_test(t => {
+ let db;
+ const record = { property: "data" };
+ const expected_keys = [1, 2, 3, 4];
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ db = e.target.result;
+ const objStore = db.createObjectStore("store", { keyPath: "key",
+ autoIncrement: true });
+
+ objStore.put(record);
+ objStore.put(record);
+ objStore.put(record);
+ objStore.put(record);
+ };
+
+ open_rq.onsuccess = function(e) {
+ let actual_keys = [];
+ const rq = db.transaction("store", "readonly", { durability: 'relaxed' })
+ .objectStore("store")
+ .openCursor();
+
+ rq.onsuccess = t.step_func(function(e) {
+ const cursor = e.target.result;
+
+ if (cursor) {
+ actual_keys.push(cursor.value.key);
+ cursor.continue();
+ } else {
+ assert_array_equals(actual_keys, expected_keys);
+ t.done();
+ }
+ });
+ };
+ }, 'autoIncrement and inline keys');
+
+async_test(t => {
+ let db;
+ const record = { property: "data" };
+ const expected_keys = [1, 2, 3, 4];
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ db = e.target.result;
+ const objStore = db.createObjectStore("store", { keyPath: "key",
+ autoIncrement: true });
+
+ objStore.put(record);
+ objStore.put(record);
+ objStore.put(record);
+ objStore.put(record);
+ };
+
+ open_rq.onsuccess = function(e) {
+ const actual_keys = [];
+ const rq = db.transaction("store", "readonly",
+ { durability: 'relaxed' })
+ .objectStore("store")
+ .openCursor();
+
+ rq.onsuccess = t.step_func(function(e) {
+ const cursor = e.target.result;
+
+ if(cursor) {
+ actual_keys.push(cursor.value.key);
+ cursor.continue();
+ } else {
+ assert_array_equals(actual_keys, expected_keys);
+ t.done();
+ }
+ });
+ };
+}, 'autoIncrement and out-of-line keys');
+
+async_test(t => {
+ let db;
+ const record = { property: "data" };
+ const expected_keys = [1, 2, 3, 4];
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ db = e.target.result;
+ const objStore = db.createObjectStore("store",
+ { keyPath: "test.obj.key", autoIncrement: true });
+
+ objStore.put(record);
+ objStore.put(record);
+ objStore.put(record);
+ objStore.put(record);
+ };
+
+ open_rq.onsuccess = function(e) {
+ const actual_keys = [];
+ const rq = db.transaction("store", "readonly",
+ { durability: 'relaxed' })
+ .objectStore("store")
+ .openCursor();
+
+ rq.onsuccess = t.step_func(function(e) {
+ const cursor = e.target.result;
+
+ if (cursor) {
+ actual_keys.push(cursor.value.test.obj.key);
+ cursor.continue();
+ } else {
+ assert_array_equals(actual_keys, expected_keys);
+ t.done();
+ }
+ });
+ };
+}, 'Object store has autoIncrement:true and the key path is an object \
+attribute');
+
+async_test(t => {
+ const record = { key: 1, property: "data" };
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ let rq;
+ const db = e.target.result;
+ const objStore = db.createObjectStore("store", { keyPath: "key" });
+
+ assert_throws_dom("DataError", function() {
+ rq = objStore.put(record, 1);
+ });
+
+ assert_equals(rq, undefined);
+ t.done();
+ };
+}, 'Attempt to put() a record that does not meet the constraints of an object \
+store\'s inline key requirements');
+
+async_test(t => {
+ const record = { property: "data" };
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ let db = e.target.result;
+
+ let rq;
+ const objStore = db.createObjectStore("store", { keyPath: "key" });
+
+ assert_throws_dom("DataError", function() {
+ rq = objStore.put(record);
+ });
+
+ assert_equals(rq, undefined);
+ t.done();
+ };
+}, 'Attempt to call put() without an key parameter when the object store uses \
+out-of-line keys');
+
+async_test(t => {
+ const record = { key: { value: 1 }, property: "data" };
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ const db = e.target.result;
+
+ let rq;
+ const objStore = db.createObjectStore("store", { keyPath: "key" });
+
+ assert_throws_dom("DataError", function() {
+ rq = objStore.put(record);
+ });
+
+ assert_equals(rq, undefined);
+ t.done();
+ };
+}, 'Attempt to put() a record where the record\'s key does not meet the \
+constraints of a valid key');
+
+async_test(t => {
+ const record = { property: "data" };
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ const db = e.target.result;
+
+ let rq;
+ const objStore = db.createObjectStore("store", { keyPath: "key" });
+
+ assert_throws_dom("DataError", function() {
+ rq = objStore.put(record);
+ });
+
+ assert_equals(rq, undefined);
+ t.done();
+ };
+}, 'Attempt to put() a record where the record\'s in-line key is not defined');
+
+async_test(t => {
+ const record = { property: "data" };
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ const db = e.target.result;
+
+ let rq;
+ const objStore = db.createObjectStore("store");
+
+ assert_throws_dom("DataError", function() {
+ rq = objStore.put(record, { value: 1 });
+ });
+
+ assert_equals(rq, undefined);
+ t.done();
+ };
+}, 'Attempt to put() a record where the out of line key provided does not \
+meet the constraints of a valid key');
+
+async_test(t => {
+ const record = { key: 1, indexedProperty: { property: "data" } };
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ const db = e.target.result;
+
+ let rq;
+ const objStore = db.createObjectStore("store", { keyPath: "key" });
+
+ objStore.createIndex("index", "indexedProperty");
+
+ rq = objStore.put(record);
+
+ assert_true(rq instanceof IDBRequest);
+ rq.onsuccess = function() {
+ t.done();
+ };
+ };
+}, 'put() a record where a value being indexed does not meet the constraints \
+of a valid key');
+
+async_test(t => {
+ let db;
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(event) {
+ db = event.target.result;
+ db.createObjectStore("store", { keyPath: "pKey" });
+ };
+
+ open_rq.onsuccess = function(event) {
+ const txn = db.transaction("store", "readonly",
+ { durability: 'relaxed' });
+ const ostore = txn.objectStore("store");
+ t.step(function() {
+ assert_throws_dom("ReadOnlyError", function() {
+ ostore.put({ pKey: "primaryKey_0" });
+ });
+ });
+ t.done();
+ };
+}, 'If the transaction this IDBObjectStore belongs to has its mode set to \
+readonly, throw ReadOnlyError');
+
+async_test(t => {
+ let ostore;
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(event) {
+ const db = event.target.result;
+ ostore = db.createObjectStore("store", { keyPath: "pKey" });
+ db.deleteObjectStore("store");
+ assert_throws_dom("InvalidStateError", function() {
+ ostore.put({ pKey: "primaryKey_0" });
+ });
+ t.done();
+ };
+}, 'If the object store has been deleted, the implementation must throw a \
+DOMException of type InvalidStateError');
diff --git a/IndexedDB/idbobjectstore_put.htm b/IndexedDB/idbobjectstore_put.htm
deleted file mode 100644
index e277ce5..0000000
--- a/IndexedDB/idbobjectstore_put.htm
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.put() - put with an inline key </title>
-<link rel="author" title="Microsoft" href="http://www.microsoft.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
- var db,
- t = async_test(),
- record = { key: 1, property: "data" };
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- var objStore = db.createObjectStore("store", { keyPath: "key" });
-
- objStore.put(record);
- };
-
- open_rq.onsuccess = function(e) {
- var rq = db.transaction("store", "readonly", {durability: 'relaxed'})
- .objectStore("store")
- .get(record.key);
-
- rq.onsuccess = t.step_func(function(e) {
- assert_equals(e.target.result.property, record.property);
- assert_equals(e.target.result.key, record.key);
- t.done();
- });
- };
-</script>
-
-<div id="log"></div>
diff --git a/IndexedDB/idbobjectstore_put10.htm b/IndexedDB/idbobjectstore_put10.htm
deleted file mode 100644
index 6882e8e..0000000
--- a/IndexedDB/idbobjectstore_put10.htm
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.put() - Attempt to call 'put' without an key parameter when the object store uses out-of-line keys </title>
-<link rel="author" title="Microsoft" href="http://www.microsoft.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
- var db,
- t = async_test(),
- record = { property: "data" };
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
-
- var rq,
- objStore = db.createObjectStore("store", { keyPath: "key" });
-
- assert_throws_dom("DataError",
- function() { rq = objStore.put(record); });
-
- assert_equals(rq, undefined);
- t.done();
- };
-</script>
-
-<div id="log"></div>
diff --git a/IndexedDB/idbobjectstore_put11.htm b/IndexedDB/idbobjectstore_put11.htm
deleted file mode 100644
index a5ed2db..0000000
--- a/IndexedDB/idbobjectstore_put11.htm
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.put() - Attempt to put a record where the record's key does not meet the constraints of a valid key </title>
-<link rel="author" title="Microsoft" href="http://www.microsoft.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
- var db,
- t = async_test(),
- record = { key: { value: 1 }, property: "data" };
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
-
- var rq,
- objStore = db.createObjectStore("store", { keyPath: "key" });
-
- assert_throws_dom("DataError",
- function() { rq = objStore.put(record); });
-
- assert_equals(rq, undefined);
- t.done();
- };
-</script>
-
-<div id="log"></div>
diff --git a/IndexedDB/idbobjectstore_put12.htm b/IndexedDB/idbobjectstore_put12.htm
deleted file mode 100644
index 0693980..0000000
--- a/IndexedDB/idbobjectstore_put12.htm
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.put() - Attempt to put a record where the record's in-line key is not defined </title>
-<link rel="author" title="Microsoft" href="http://www.microsoft.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
- var db,
- t = async_test(),
- record = { property: "data" };
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
-
- var rq,
- objStore = db.createObjectStore("store", { keyPath: "key" });
-
- assert_throws_dom("DataError",
- function() { rq = objStore.put(record); });
-
- assert_equals(rq, undefined);
- t.done();
- };
-</script>
-
-<div id="log"></div>
diff --git a/IndexedDB/idbobjectstore_put13.htm b/IndexedDB/idbobjectstore_put13.htm
deleted file mode 100644
index 8ae6561..0000000
--- a/IndexedDB/idbobjectstore_put13.htm
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.put() - Attempt to put a record where the out of line key provided does not meet the constraints of a valid key </title>
-<link rel="author" title="Microsoft" href="http://www.microsoft.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
- var db,
- t = async_test(),
- record = { property: "data" };
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
-
- var rq,
- objStore = db.createObjectStore("store");
-
- assert_throws_dom("DataError",
- function() { rq = objStore.put(record, { value: 1 }); });
-
- assert_equals(rq, undefined);
- t.done();
- };
-</script>
-
-<div id="log"></div>
diff --git a/IndexedDB/idbobjectstore_put14.htm b/IndexedDB/idbobjectstore_put14.htm
deleted file mode 100644
index bc5647f..0000000
--- a/IndexedDB/idbobjectstore_put14.htm
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.put() - Put a record where a value being indexed does not meet the constraints of a valid key </title>
-<link rel="author" title="Microsoft" href="http://www.microsoft.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
- var db,
- t = async_test(),
- record = { key: 1, indexedProperty: { property: "data" } };
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
-
- var rq,
- objStore = db.createObjectStore("store", { keyPath: "key" });
-
- objStore.createIndex("index", "indexedProperty");
-
- rq = objStore.put(record);
-
- assert_true(rq instanceof IDBRequest);
- rq.onsuccess = function() {
- t.done();
- }
- };
-</script>
-
-<div id="log"></div>
diff --git a/IndexedDB/idbobjectstore_put15.htm b/IndexedDB/idbobjectstore_put15.htm
deleted file mode 100644
index e7affad..0000000
--- a/IndexedDB/idbobjectstore_put15.htm
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.put() - If the transaction this IDBObjectStore belongs to has its mode set to readonly, throw ReadOnlyError</title>
-<link rel="author" title="Intel" href="http://www.intel.com">
-<link rel="help" href="https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBObjectStore-put-IDBRequest-any-value-any-key">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-<div id="log"></div>
-<script>
- var db,
- t = async_test();
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function (event) {
- db = event.target.result;
- db.createObjectStore("store", {keyPath:"pKey"});
- }
-
- open_rq.onsuccess = function (event) {
- var txn = db.transaction("store", "readonly", {durability: 'relaxed'});
- var ostore = txn.objectStore("store");
- t.step(function(){
- assert_throws_dom("ReadOnlyError", function(){
- ostore.put({pKey: "primaryKey_0"});
- });
- });
- t.done();
- }
-</script>
-
diff --git a/IndexedDB/idbobjectstore_put16.htm b/IndexedDB/idbobjectstore_put16.htm
deleted file mode 100644
index e298ba8..0000000
--- a/IndexedDB/idbobjectstore_put16.htm
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.put() - If the object store has been deleted, the implementation must throw a DOMException of type InvalidStateError</title>
-<link rel="author" title="Intel" href="http://www.intel.com">
-<link rel="help" href="https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBObjectStore-put-IDBRequest-any-value-any-key">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-<div id="log"></div>
-<script>
- var db,
- ostore,
- t = async_test();
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function (event) {
- db = event.target.result;
- ostore = db.createObjectStore("store", {keyPath:"pKey"});
- db.deleteObjectStore("store");
- assert_throws_dom("InvalidStateError", function(){
- ostore.put({pKey: "primaryKey_0"});
- });
- t.done();
- }
-</script>
diff --git a/IndexedDB/idbobjectstore_put2.htm b/IndexedDB/idbobjectstore_put2.htm
deleted file mode 100644
index 733e2cb..0000000
--- a/IndexedDB/idbobjectstore_put2.htm
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.put() - put with an out-of-line key </title>
-<link rel="author" title="Microsoft" href="http://www.microsoft.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
- var db,
- t = async_test(),
- key = 1,
- record = { property: "data" };
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- var objStore = db.createObjectStore("store");
-
- objStore.put(record, key);
- };
-
- open_rq.onsuccess = function(e) {
- var rq = db.transaction("store", "readonly", {durability: 'relaxed'})
- .objectStore("store")
- .get(key);
-
- rq.onsuccess = t.step_func(function(e) {
- assert_equals(e.target.result.property, record.property);
-
- t.done();
- });
- };
-</script>
-
-<div id="log"></div>
diff --git a/IndexedDB/idbobjectstore_put3.htm b/IndexedDB/idbobjectstore_put3.htm
deleted file mode 100644
index b7792bd..0000000
--- a/IndexedDB/idbobjectstore_put3.htm
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.put() - record with same key already exists </title>
-<link rel="author" title="Microsoft" href="http://www.microsoft.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
- var db, success_event,
- t = async_test(),
- record = { key: 1, property: "data" },
- record_put = { key: 1, property: "changed", more: ["stuff", 2] };
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- var objStore = db.createObjectStore("store", { keyPath: "key" });
- objStore.put(record);
-
- var rq = objStore.put(record_put);
- rq.onerror = fail(t, "error on put");
-
- rq.onsuccess = t.step_func(function(e) {
- success_event = true;
- });
- };
-
- open_rq.onsuccess = function(e) {
- assert_true(success_event);
-
- var rq = db.transaction("store", "readonly", {durability: 'relaxed'})
- .objectStore("store")
- .get(1);
-
- rq.onsuccess = t.step_func(function(e) {
- var rec = e.target.result;
-
- assert_equals(rec.key, record_put.key);
- assert_equals(rec.property, record_put.property);
- assert_array_equals(rec.more, record_put.more);
-
- t.done();
- });
- };
-</script>
-
-<div id="log"></div>
diff --git a/IndexedDB/idbobjectstore_put4.htm b/IndexedDB/idbobjectstore_put4.htm
deleted file mode 100644
index 4a59836..0000000
--- a/IndexedDB/idbobjectstore_put4.htm
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.put() - put where an index has unique:true specified </title>
-<link rel="author" title="Microsoft" href="http://www.microsoft.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
- var db,
- record = { key: 1, property: "data" };
-
- var open_rq = createdb(async_test());
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- var objStore = db.createObjectStore("store", { autoIncrement: true });
- objStore.createIndex("i1", "property", { unique: true });
- objStore.put(record);
-
- var rq = objStore.put(record);
- rq.onsuccess = fail(this, "success on putting duplicate indexed record")
-
- rq.onerror = this.step_func(function(e) {
- assert_equals(rq.error.name, "ConstraintError");
- assert_equals(e.target.error.name, "ConstraintError");
-
- assert_equals(e.type, "error");
-
- e.preventDefault();
- e.stopPropagation();
- });
- };
-
- // Defer done, giving a spurious rq.onsuccess a chance to run
- open_rq.onsuccess = function(e) {
- this.done();
- }
-</script>
-
-<div id="log"></div>
diff --git a/IndexedDB/idbobjectstore_put5.htm b/IndexedDB/idbobjectstore_put5.htm
deleted file mode 100644
index 6e945e2..0000000
--- a/IndexedDB/idbobjectstore_put5.htm
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.put() - object store's key path is an object attribute </title>
-<link rel="author" title="Microsoft" href="http://www.microsoft.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
- var db,
- t = async_test(),
- record = { test: { obj: { key: 1 } }, property: "data" };
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- var objStore = db.createObjectStore("store", { keyPath: "test.obj.key" });
- objStore.put(record);
- };
-
- open_rq.onsuccess = function(e) {
- var rq = db.transaction("store", "readonly", {durability: 'relaxed'})
- .objectStore("store")
- .get(record.test.obj.key);
-
- rq.onsuccess = t.step_func(function(e) {
- assert_equals(e.target.result.property, record.property);
-
- t.done();
- });
- };
-</script>
-
-<div id="log"></div>
diff --git a/IndexedDB/idbobjectstore_put6.htm b/IndexedDB/idbobjectstore_put6.htm
deleted file mode 100644
index f0b6f0b..0000000
--- a/IndexedDB/idbobjectstore_put6.htm
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.put() - autoIncrement and inline keys </title>
-<link rel="author" title="Microsoft" href="http://www.microsoft.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
- var db,
- t = async_test(),
- record = { property: "data" },
- expected_keys = [ 1, 2, 3, 4 ];
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- var objStore = db.createObjectStore("store", { keyPath: "key", autoIncrement: true });
-
- objStore.put(record);
- objStore.put(record);
- objStore.put(record);
- objStore.put(record);
- };
-
- open_rq.onsuccess = function(e) {
- var actual_keys = [],
- rq = db.transaction("store", "readonly", {durability: 'relaxed'})
- .objectStore("store")
- .openCursor();
-
- rq.onsuccess = t.step_func(function(e) {
- var cursor = e.target.result;
-
- if (cursor) {
- actual_keys.push(cursor.value.key);
- cursor.continue();
- }
- else {
- assert_array_equals(actual_keys, expected_keys);
- t.done();
- }
- });
- };
-</script>
-
-<div id="log"></div>
diff --git a/IndexedDB/idbobjectstore_put7.htm b/IndexedDB/idbobjectstore_put7.htm
deleted file mode 100644
index e41959f..0000000
--- a/IndexedDB/idbobjectstore_put7.htm
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.put() - autoIncrement and out-of-line keys </title>
-<link rel="author" title="Microsoft" href="http://www.microsoft.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
- var db,
- t = async_test(),
- record = { property: "data" },
- expected_keys = [ 1, 2, 3, 4 ];
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- var objStore = db.createObjectStore("store", { autoIncrement: true });
-
- objStore.put(record);
- objStore.put(record);
- objStore.put(record);
- objStore.put(record);
- };
-
- open_rq.onsuccess = function(e) {
- var actual_keys = [],
- rq = db.transaction("store", "readonly", {durability: 'relaxed'})
- .objectStore("store")
- .openCursor();
-
- rq.onsuccess = t.step_func(function(e) {
- var cursor = e.target.result;
-
- if (cursor) {
- actual_keys.push(cursor.key);
- cursor.continue();
- }
- else {
- assert_array_equals(actual_keys, expected_keys);
- t.done();
- }
- });
- };
-</script>
-
-<div id="log"></div>
diff --git a/IndexedDB/idbobjectstore_put8.htm b/IndexedDB/idbobjectstore_put8.htm
deleted file mode 100644
index 2bec639..0000000
--- a/IndexedDB/idbobjectstore_put8.htm
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.put() - object store has autoIncrement:true and the key path is an object attribute </title>
-<link rel="author" title="Microsoft" href="http://www.microsoft.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
- var db,
- t = async_test(),
- record = { property: "data" },
- expected_keys = [ 1, 2, 3, 4 ];
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- var objStore = db.createObjectStore("store", { keyPath: "test.obj.key", autoIncrement: true });
-
- objStore.put(record);
- objStore.put(record);
- objStore.put(record);
- objStore.put(record);
- };
-
- open_rq.onsuccess = function(e) {
- var actual_keys = [],
- rq = db.transaction("store", "readonly", {durability: 'relaxed'})
- .objectStore("store")
- .openCursor();
-
- rq.onsuccess = t.step_func(function(e) {
- var cursor = e.target.result;
-
- if (cursor) {
- actual_keys.push(cursor.value.test.obj.key);
- cursor.continue();
- }
- else {
- assert_array_equals(actual_keys, expected_keys);
- t.done();
- }
- });
- };
-</script>
-
-<div id="log"></div>
diff --git a/IndexedDB/idbobjectstore_put9.htm b/IndexedDB/idbobjectstore_put9.htm
deleted file mode 100644
index dff9415..0000000
--- a/IndexedDB/idbobjectstore_put9.htm
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.put() - Attempt to put a record that does not meet the constraints of an object store's inline key requirements </title>
-<link rel="author" title="Microsoft" href="http://www.microsoft.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
- var t = async_test(),
- record = { key: 1, property: "data" };
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- var rq,
- db = e.target.result,
- objStore = db.createObjectStore("store", { keyPath: "key" });
-
- assert_throws_dom("DataError",
- function() { rq = objStore.put(record, 1); });
-
- assert_equals(rq, undefined);
- t.done();
- };
-</script>
-
-<div id="log"></div>