IDB: Extend idbindex_count WPT to cover 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 idbindex_count.htm have been extended.
Bug: 41455766
Change-Id: I392bbfd2ccb7ef6a836397a7a88624402eaffafb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5311656
Reviewed-by: Ayu Ishii <ayui@chromium.org>
Commit-Queue: Sneha Agarwal <snehagarwal@microsoft.com>
Reviewed-by: Evan Stade <estade@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1267473}
diff --git a/IndexedDB/idbindex_count.any.js b/IndexedDB/idbindex_count.any.js
new file mode 100644
index 0000000..25d743e
--- /dev/null
+++ b/IndexedDB/idbindex_count.any.js
@@ -0,0 +1,108 @@
+// META: global=window,worker
+// META: title=IDBIndex.count()
+// META: script=resources/support.js
+// @author Microsoft <https://www.microsoft.com>
+// @author Odin Hørthe Omdal <mailto:odinho@opera.com>
+// @author Intel <http://www.intel.com>
+
+'use_strict';
+
+async_test(t => {
+ let db;
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ db = e.target.result;
+ const store = db.createObjectStore("store", { autoIncrement: true });
+ store.createIndex("index", "indexedProperty");
+ for (let i = 0; i < 10; i++) {
+ store.add({ indexedProperty: "data" + i });
+ }
+ };
+
+ open_rq.onsuccess = function(e) {
+ const rq = db.transaction("store", "readonly", { durability: 'relaxed' })
+ .objectStore("store")
+ .index("index")
+ .count();
+
+ rq.onsuccess = t.step_func(function(e) {
+ assert_equals(e.target.result, 10);
+ t.done();
+ });
+ };
+}, 'count() returns the number of records in the index');
+
+async_test(t => {
+ let db;
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ db = e.target.result;
+ const store = db.createObjectStore("store", { autoIncrement: true });
+ store.createIndex("index", "indexedProperty");
+
+ for (let i = 0; i < 10; i++) {
+ store.add({ indexedProperty: "data" + i });
+ }
+ };
+
+ open_rq.onsuccess = function(e) {
+ const rq = db.transaction("store", "readonly", { durability: 'relaxed' })
+ .objectStore("store")
+ .index("index")
+ .count(IDBKeyRange.bound('data0', 'data4'));
+
+ rq.onsuccess = t.step_func(function(e) {
+ assert_equals(e.target.result, 5);
+ t.done();
+ });
+ };
+}, 'count() returns the number of records that have keys within the range');
+
+async_test(t => {
+ let db;
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ db = e.target.result;
+
+ const store = db.createObjectStore("store", { autoIncrement: true });
+ store.createIndex("myindex", "idx");
+
+ for (let i = 0; i < 10; i++)
+ store.add({ idx: "data_" + (i%2) });
+
+ store.index("myindex").count("data_0").onsuccess = t.step_func(function(e) {
+ assert_equals(e.target.result, 5, "count(data_0)");
+ t.done();
+ });
+ };
+}, 'count() returns the number of records that have keys with the key');
+
+async_test(t => {
+ let db;
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ db = e.target.result;
+ const store = db.createObjectStore("store", { autoIncrement: true });
+ store.createIndex("index", "indexedProperty");
+
+ for (let i = 0; i < 10; i++) {
+ store.add({ indexedProperty: "data" + i });
+ }
+ };
+
+ open_rq.onsuccess = function(e) {
+ const index = db.transaction("store", "readonly", { durability: 'relaxed' })
+ .objectStore("store")
+ .index("index");
+
+ assert_throws_dom("DataError", function () {
+ index.count(NaN);
+ });
+
+ t.done();
+ };
+}, 'count() throws DataError when using invalid key');
diff --git a/IndexedDB/idbindex_count.htm b/IndexedDB/idbindex_count.htm
deleted file mode 100644
index 5b45b52..0000000
--- a/IndexedDB/idbindex_count.htm
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<title>IDBIndex.count() - returns the number of records in the index </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();
-
- var open_rq = createdb(t);
-
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- var store = db.createObjectStore("store", { autoIncrement: true });
- store.createIndex("index", "indexedProperty");
-
- for(var i = 0; i < 10; i++) {
- store.add({ indexedProperty: "data" + i });
- }
- }
-
- open_rq.onsuccess = function(e) {
- var rq = db.transaction("store", "readonly", {durability: 'relaxed'})
- .objectStore("store")
- .index("index")
- .count();
-
- rq.onsuccess = t.step_func(function(e) {
- assert_equals(e.target.result, 10);
- t.done();
- });
- }
-</script>
-
-<div id=log></div>
diff --git a/IndexedDB/idbindex_count2.htm b/IndexedDB/idbindex_count2.htm
deleted file mode 100644
index 2a68770..0000000
--- a/IndexedDB/idbindex_count2.htm
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<title>IDBIndex.count() - returns the number of records that have keys within the range </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();
-
- var open_rq = createdb(t);
-
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- var store = db.createObjectStore("store", { autoIncrement: true });
- store.createIndex("index", "indexedProperty");
-
- for(var i = 0; i < 10; i++) {
- store.add({ indexedProperty: "data" + i });
- }
- }
-
- open_rq.onsuccess = function(e) {
- var rq = db.transaction("store", "readonly", {durability: 'relaxed'})
- .objectStore("store")
- .index("index")
- .count(IDBKeyRange.bound('data0', 'data4'));
-
- rq.onsuccess = t.step_func(function(e) {
- assert_equals(e.target.result, 5);
- t.done();
- });
- }
-</script>
-
-<div id=log></div>
diff --git a/IndexedDB/idbindex_count3.htm b/IndexedDB/idbindex_count3.htm
deleted file mode 100644
index a94e898..0000000
--- a/IndexedDB/idbindex_count3.htm
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<title>IDBIndex.count() - returns the number of records that have keys with the key</title>
-<link rel="author" href="mailto:odinho@opera.com" title="Odin Hørthe Omdal">
-<script src=/resources/testharness.js></script>
-<script src=/resources/testharnessreport.js></script>
-<script src=resources/support.js></script>
-
-<script>
- var db
-
- createdb(async_test()).onupgradeneeded = function(e) {
- db = e.target.result
-
- var store = db.createObjectStore("store", { autoIncrement: true })
- store.createIndex("myindex", "idx")
-
- for (var i = 0; i < 10; i++)
- store.add({ idx: "data_" + (i%2) });
-
- store.index("myindex").count("data_0").onsuccess = this.step_func(function(e) {
- assert_equals(e.target.result, 5, "count(data_0)")
- this.done()
- })
- }
-
-</script>
-<div id=log></div>
diff --git a/IndexedDB/idbindex_count4.htm b/IndexedDB/idbindex_count4.htm
deleted file mode 100644
index ce19968..0000000
--- a/IndexedDB/idbindex_count4.htm
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBIndex.count() - throw DataError when using invalid key</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-IDBIndex-count-IDBRequest-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(e) {
- db = e.target.result;
- var store = db.createObjectStore("store", { autoIncrement: true });
- store.createIndex("index", "indexedProperty");
-
- for(var i = 0; i < 10; i++) {
- store.add({ indexedProperty: "data" + i });
- }
- }
-
- open_rq.onsuccess = function(e) {
- var index = db.transaction("store", "readonly", {durability: 'relaxed'})
- .objectStore("store")
- .index("index");
-
- assert_throws_dom("DataError", function() {
- index.count(NaN);
- });
-
- t.done();
- }
-</script>
-