mirror of
https://github.com/servo/servo.git
synced 2025-08-09 23:45:35 +01:00
Update web-platform-tests to revision 44702f2bc8ea98bc32b5b244f2fe63c6ce66d49d
This commit is contained in:
parent
85fa6409bb
commit
c227604a2c
997 changed files with 45660 additions and 14650 deletions
|
@ -2,80 +2,117 @@
|
|||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
var db_name = 'db';
|
||||
var db_name = "db_wasm_test";
|
||||
var obj_store = 'store';
|
||||
var module_key = 'my_module';
|
||||
|
||||
function createAndSaveToIndexedDB() {
|
||||
return new Promise((resolve, reject) => {
|
||||
createWasmModule()
|
||||
.then(mod => {
|
||||
var delete_request = indexedDB.deleteDatabase(db_name);
|
||||
delete_request.onsuccess = function() {
|
||||
var open_request = indexedDB.open(db_name);
|
||||
open_request.onupgradeneeded = function() {
|
||||
var db = open_request.result;
|
||||
db.createObjectStore(obj_store);
|
||||
};
|
||||
open_request.onsuccess = function() {
|
||||
var db = open_request.result;
|
||||
var tx = db.transaction(obj_store, 'readwrite');
|
||||
var store = tx.objectStore(obj_store);
|
||||
try {
|
||||
store.put(mod, module_key);
|
||||
} catch(e) {
|
||||
reject(e);
|
||||
return;
|
||||
}
|
||||
tx.oncomplete = function() {
|
||||
resolve();
|
||||
};
|
||||
tx.onabort = function() {
|
||||
reject(transaction.error);
|
||||
};
|
||||
};
|
||||
function createAndSaveToIndexedDB(db_name) {
|
||||
return createWasmModule()
|
||||
.then(mod => new Promise((resolve, reject) => {
|
||||
var delete_request = indexedDB.deleteDatabase(db_name);
|
||||
delete_request.onsuccess = function() {
|
||||
var open_request = indexedDB.open(db_name);
|
||||
open_request.onupgradeneeded = function() {
|
||||
var db = open_request.result;
|
||||
db.createObjectStore(obj_store);
|
||||
};
|
||||
})
|
||||
.catch(error => reject(error));
|
||||
});
|
||||
}
|
||||
|
||||
function loadFromIndexedDB(prev) {
|
||||
return new Promise((resolve, reject) => {
|
||||
prev.then(() => {
|
||||
var open_request = indexedDB.open(db_name);
|
||||
open_request.onsuccess = function() {
|
||||
var db = open_request.result;
|
||||
var tx = db.transaction(obj_store);
|
||||
var store = tx.objectStore(obj_store);
|
||||
var get_request = store.get(module_key);
|
||||
get_request.onsuccess = function() {
|
||||
var mod = get_request.result;
|
||||
assert_true(mod instanceof WebAssembly.Module);
|
||||
open_request.onsuccess = function() {
|
||||
var db = open_request.result;
|
||||
var tx = db.transaction(obj_store, 'readwrite');
|
||||
var store = tx.objectStore(obj_store);
|
||||
try {
|
||||
var instance = new WebAssembly.Instance(mod);
|
||||
store.put(mod, module_key);
|
||||
} catch(e) {
|
||||
db.close();
|
||||
reject(e);
|
||||
return;
|
||||
}
|
||||
resolve(instance.exports.increment(1));
|
||||
tx.oncomplete = function() {
|
||||
db.close();
|
||||
resolve();
|
||||
return;
|
||||
};
|
||||
};
|
||||
};
|
||||
});
|
||||
}));
|
||||
}
|
||||
|
||||
function loadFromIndexedDB(db_name) {
|
||||
var open_request = indexedDB.open(db_name);
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
open_request.onsuccess = function() {
|
||||
var db = open_request.result;
|
||||
var tx = db.transaction(obj_store);
|
||||
var store = tx.objectStore(obj_store);
|
||||
var get_request = store.get(module_key);
|
||||
get_request.onsuccess = function() {
|
||||
var mod = get_request.result;
|
||||
db.close();
|
||||
assert_true(mod instanceof WebAssembly.Module);
|
||||
try {
|
||||
var instance = new WebAssembly.Instance(mod);
|
||||
resolve(instance.exports.increment(1));
|
||||
} catch(e) {
|
||||
reject(e);
|
||||
}
|
||||
};
|
||||
get_request.onerror = reject;
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
function TestIndexedDBLoadStoreSecure() {
|
||||
return loadFromIndexedDB(createAndSaveToIndexedDB())
|
||||
return createAndSaveToIndexedDB(db_name)
|
||||
.then(() => loadFromIndexedDB(db_name))
|
||||
.then(res => assert_equals(res, 2),
|
||||
error => assert_unreached(error));
|
||||
}
|
||||
|
||||
function TestIndexedDBLoadStoreInsecure() {
|
||||
return createAndSaveToIndexedDB()
|
||||
return createAndSaveToIndexedDB(db_name)
|
||||
.then(assert_unreached,
|
||||
error => {
|
||||
assert_true(error instanceof DOMException);
|
||||
assert_equals(error.name, 'DataCloneError');
|
||||
});
|
||||
}
|
||||
|
||||
function SaveToIDBAndLoadInWorker() {
|
||||
return createAndSaveToIndexedDB(db_name)
|
||||
.then(() => {
|
||||
var worker = new Worker("wasm_idb_worker.js");
|
||||
return new Promise((resolve, reject) => {
|
||||
worker.onmessage = function (event) {
|
||||
if (typeof (event.data) == "string") {
|
||||
resolve(event.data);
|
||||
worker.terminate();
|
||||
worker = undefined;
|
||||
}
|
||||
};
|
||||
worker.postMessage({command: "load", db_name: db_name});
|
||||
})
|
||||
})
|
||||
.then(data => assert_equals(data, "ok"),
|
||||
error => assert_unreached(error));
|
||||
}
|
||||
|
||||
function SaveToIDBInWorkerAndLoadInMain() {
|
||||
var worker = new Worker("wasm_idb_worker.js");
|
||||
var ret = new Promise((resolve, reject) => {
|
||||
worker.onmessage = function (event) {
|
||||
if (typeof (event.data) == "string") {
|
||||
resolve(event.data);
|
||||
worker.terminate();
|
||||
worker = undefined;
|
||||
}
|
||||
};
|
||||
})
|
||||
worker.postMessage({command: "save", db_name: db_name});
|
||||
return ret
|
||||
.then(data => assert_equals(data, "ok"),
|
||||
error => assert_unreached(error))
|
||||
.then(() => loadFromIndexedDB(db_name))
|
||||
.then(res => assert_equals(res, 2),
|
||||
assert_unreached);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue