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