test_open_for_principal.js (2419B)
1 /** 2 * Any copyright is dedicated to the Public Domain. 3 * http://creativecommons.org/publicdomain/zero/1.0/ 4 */ 5 6 /* exported testGenerator */ 7 var testGenerator = testSteps(); 8 9 function* testSteps() { 10 const name = this.window ? window.location.pathname : "Splendid Test"; 11 12 const objectStoreName = "Foo"; 13 14 const data = { key: 1, value: "bar" }; 15 16 let request = indexedDB.open(name, 1); 17 request.onerror = errorHandler; 18 request.onupgradeneeded = grabEventAndContinueHandler; 19 request.onsuccess = grabEventAndContinueHandler; 20 let event = yield undefined; 21 22 is(event.type, "upgradeneeded", "Got correct event type"); 23 24 let db = event.target.result; 25 db.onerror = errorHandler; 26 27 let objectStore = db.createObjectStore(objectStoreName, {}); 28 29 event = yield undefined; 30 31 is(event.type, "success", "Got correct event type"); 32 33 objectStore = db 34 .transaction([objectStoreName], "readwrite") 35 .objectStore(objectStoreName); 36 37 request = objectStore.get(data.key); 38 request.onsuccess = grabEventAndContinueHandler; 39 event = yield undefined; 40 41 is(event.target.result, null, "Got no data"); 42 43 request = objectStore.add(data.value, data.key); 44 request.onsuccess = grabEventAndContinueHandler; 45 event = yield undefined; 46 47 is(event.target.result, data.key, "Got correct key"); 48 49 let uri = Services.io.newURI("http://appdata.example.com"); 50 let principal = Services.scriptSecurityManager.createContentPrincipal( 51 uri, 52 {} 53 ); 54 55 request = indexedDB.openForPrincipal(principal, name, 1); 56 request.onerror = errorHandler; 57 request.onupgradeneeded = grabEventAndContinueHandler; 58 request.onsuccess = grabEventAndContinueHandler; 59 event = yield undefined; 60 61 is(event.type, "upgradeneeded", "Got correct event type"); 62 63 db = event.target.result; 64 db.onerror = errorHandler; 65 66 objectStore = db.createObjectStore(objectStoreName, {}); 67 68 event = yield undefined; 69 70 is(event.type, "success", "Got correct event type"); 71 72 objectStore = db.transaction([objectStoreName]).objectStore(objectStoreName); 73 74 request = objectStore.get(data.key); 75 request.onsuccess = grabEventAndContinueHandler; 76 event = yield undefined; 77 78 is(event.target.result, null, "Got no data"); 79 80 db.close(); 81 82 request = indexedDB.deleteForPrincipal(principal, name); 83 request.onerror = errorHandler; 84 request.onsuccess = grabEventAndContinueHandler; 85 event = yield undefined; 86 87 finishTest(); 88 yield undefined; 89 }