1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
<!DOCTYPE html>
<script>
var db;
var request = window.indexedDB.open("IndexedDBSuspendImminently");
function onPutSuccess(event)
{
const transaction = event.target.transaction;
if (!transaction)
return;
const objectStore = transaction.objectStore("TestObjectStore");
const putRequest = objectStore.put("value", "key");
putRequest.onsuccess = onPutSuccess;
}
function startTransactions()
{
const transaction = db.transaction("TestObjectStore", "readwrite");
const objectStore = transaction.objectStore("TestObjectStore");
const putRequest = objectStore.put("value", "key");
putRequest.onsuccess = (event) => {
window.webkit.messageHandlers.testHandler.postMessage("Continue");
onPutSuccess();
}
transaction.oncomplete = () => {
window.webkit.messageHandlers.testHandler.postMessage("Unexpected Success");
}
transaction.onabort = () => {
window.webkit.messageHandlers.testHandler.postMessage("Expected Abort For Suspension");
}
const transaction2 = db.transaction("TestObjectStore", "readwrite");
transaction2.oncomplete = () => {
window.webkit.messageHandlers.testHandler.postMessage("Expected Success After Resume");
}
transaction2.onabort = () => {
window.webkit.messageHandlers.testHandler.postMessage("Unexpected Abort");
}
}
request.onsuccess = function(event) {
db = event.target.result;
startTransactions();
}
request.onupgradeneeded = function(event) {
var createRequest = event.target.result.createObjectStore("TestObjectStore");
createRequest.onerror = function(event) {
window.webkit.messageHandlers.testHandler.postMessage("ObjectStore Error");
}
}
request.onerror = function(event) {
window.webkit.messageHandlers.testHandler.postMessage("Open Error");
}
</script>
|