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>
-