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
|
<!DOCTYPE html>
<script>
var db;
var shouldSendSuccessMessage = false;
var hasAbort = false;
var request = window.indexedDB.open("IndexedDBSuspendImminently");
request.onsuccess = function(event) {
window.webkit.messageHandlers.testHandler.postMessage("Continue");
db = event.target.result;
for (let i = 0; i < 10; i++) {
transaction = db.transaction("TestObjectStore", "readwrite");
objectStore = transaction.objectStore("TestObjectStore");
for (let times = 0; times < 100; times++)
objectStore.put(i, i);
transaction.onabort = ()=> {
if (!hasAbort) {
hasAbort = true;
shouldSendSuccessMessage = true;
window.webkit.messageHandlers.testHandler.postMessage("Expected Abort For Suspension");
} else {
window.webkit.messageHandlers.testHandler.postMessage("Unexpected Abort");
}
}
transaction.oncomplete = ()=> {
if (shouldSendSuccessMessage) {
window.webkit.messageHandlers.testHandler.postMessage("Expected Success After Resume");
shouldSendSuccessMessage = false;
}
}
}
}
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>
|