browser_indexedDB.js (1979B)
1 "use strict"; 2 3 CookiePolicyHelper.runTest("IndexedDB", { 4 cookieJarAccessAllowed: async w => { 5 w.indexedDB.open("test", "1"); 6 ok(true, "IDB should be allowed"); 7 }, 8 9 cookieJarAccessDenied: async w => { 10 try { 11 w.indexedDB.open("test", "1"); 12 ok(false, "IDB should be blocked"); 13 } catch (e) { 14 ok(true, "IDB should be blocked"); 15 is(e.name, "SecurityError", "We want a security error message."); 16 } 17 }, 18 }); 19 20 CookiePolicyHelper.runTest("IndexedDB in workers", { 21 cookieJarAccessAllowed: async w => { 22 function nonBlockCode() { 23 indexedDB.open("test", "1"); 24 postMessage(true); 25 } 26 27 let blob = new w.Blob([nonBlockCode.toString() + "; nonBlockCode();"]); 28 ok(blob, "Blob has been created"); 29 30 let blobURL = w.URL.createObjectURL(blob); 31 ok(blobURL, "Blob URL has been created"); 32 33 let worker = new w.Worker(blobURL); 34 ok(worker, "Worker has been created"); 35 36 await new w.Promise((resolve, reject) => { 37 worker.onmessage = function (e) { 38 if (e.data) { 39 resolve(); 40 } else { 41 reject(); 42 } 43 }; 44 45 worker.onerror = function () { 46 reject(); 47 }; 48 }); 49 }, 50 51 cookieJarAccessDenied: async w => { 52 function blockCode() { 53 try { 54 indexedDB.open("test", "1"); 55 postMessage(false); 56 } catch (e) { 57 postMessage(e.name == "SecurityError"); 58 } 59 } 60 61 let blob = new w.Blob([blockCode.toString() + "; blockCode();"]); 62 ok(blob, "Blob has been created"); 63 64 let blobURL = w.URL.createObjectURL(blob); 65 ok(blobURL, "Blob URL has been created"); 66 67 let worker = new w.Worker(blobURL); 68 ok(worker, "Worker has been created"); 69 70 await new w.Promise((resolve, reject) => { 71 worker.onmessage = function (e) { 72 if (e.data) { 73 resolve(); 74 } else { 75 reject(); 76 } 77 }; 78 79 worker.onerror = function () { 80 reject(); 81 }; 82 }); 83 }, 84 });