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

Unified Diff: third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/indexeddb.https.html

Issue 2867573002: Upstream service worker indexedDB tests to WPT (Closed)
Patch Set: Remove entries in new "expectations" file Created 3 years, 7 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/external/wpt/service-workers/service-worker/indexeddb.https.html
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/indexeddb.https.html b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/indexeddb.https.html
index 4de2bc43e177a5bd900884f331a00fd3a8518f05..be9be4968f7b2d0cbc1f18f88b06b7acb6ad096f 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/indexeddb.https.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/indexeddb.https.html
@@ -4,32 +4,75 @@
<script src="/resources/testharnessreport.js"></script>
<script src="resources/test-helpers.sub.js"></script>
<script>
-async_test(function(t) {
- var scope = 'resources/blank.html';
- service_worker_unregister_and_register(
- t, 'resources/indexeddb-worker.js', scope)
- .then(function(registration) {
- var sw = registration.installing;
- var messageChannel = new MessageChannel();
- messageChannel.port1.onmessage = t.step_func(onMessage);
- sw.postMessage({port: messageChannel.port2}, [messageChannel.port2]);
- })
- .catch(unreached_rejection(t));
-
- function onMessage() {
+function readDB() {
+ return new Promise(function(resolve, reject) {
var openRequest = indexedDB.open('db');
- openRequest.onsuccess = t.step_func(function() {
+
+ openRequest.onerror = reject;
+ openRequest.onsuccess = function() {
var db = openRequest.result;
var tx = db.transaction('store');
var store = tx.objectStore('store');
var getRequest = store.get('key');
- getRequest.onsuccess = t.step_func(function() {
- assert_equals(
- getRequest.result, 'value',
- 'The get() result should match what the worker put().');
- service_worker_unregister_and_done(t, scope);
- });
+
+ getRequest.onerror = function() {
+ db.close();
+ reject(getRequest.error);
+ };
+ getRequest.onsuccess = function() {
+ db.close();
+ resolve(getRequest.result);
+ };
+ };
+ });
+}
+
+function send(worker, action) {
+ return new Promise(function(resolve, reject) {
+ var messageChannel = new MessageChannel();
+ messageChannel.port1.onmessage = function(event) {
+ if (event.data.type === 'error') {
+ reject(event.data.reason);
+ }
+
+ resolve();
+ };
+
+ worker.postMessage(
+ {action: action, port: messageChannel.port2},
+ [messageChannel.port2]);
+ });
+}
+
+promise_test(function(t) {
+ var scope = 'resources/blank.html';
+
+ return service_worker_unregister_and_register(
+ t, 'resources/indexeddb-worker.js', scope)
+ .then(function(registration) {
+ var worker = registration.installing;
+
+ promise_test(function() {
+ return registration.unregister();
+ }, 'clean up: registration');
+
+ return send(worker, 'create')
+ .then(function() {
+ promise_test(function() {
+ return new Promise(function(resolve, reject) {
+ var delete_request = indexedDB.deleteDatabase('db');
+
+ delete_request.onsuccess = resolve;
+ delete_request.onerror = reject;
+ });
+ }, 'clean up: database');
+ })
+ .then(readDB)
+ .then(function(value) {
+ assert_equals(
+ value, 'value',
+ 'The get() result should match what the worker put().');
+ });
});
- }
}, 'Verify Indexed DB operation in a Service Worker');
</script>

Powered by Google App Engine
This is Rietveld 408576698