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