1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/indexedDB/test/webapp_clearBrowserData_appFrame.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,145 @@ 1.4 +<!-- 1.5 + Any copyright is dedicated to the Public Domain. 1.6 + http://creativecommons.org/publicdomain/zero/1.0/ 1.7 +--> 1.8 +<html> 1.9 +<head> 1.10 + <title>Indexed Database Clear Browser Data Test</title> 1.11 + 1.12 + <script type="text/javascript;version=1.7"> 1.13 + "use strict"; 1.14 + 1.15 + function ok(cond, message) 1.16 + { 1.17 + alert(JSON.stringify({ type: "ok", 1.18 + args: [!!cond, "appFrame: " + message] })); 1.19 + } 1.20 + 1.21 + function info(message) 1.22 + { 1.23 + alert(JSON.stringify({ type: "info", 1.24 + args: ["appFrame: " + message] })); 1.25 + } 1.26 + 1.27 + function finish() 1.28 + { 1.29 + alert(JSON.stringify({ type: "done" })); 1.30 + } 1.31 + 1.32 + window.onerror = ok.bind(window, false); 1.33 + 1.34 + function testSteps() 1.35 + { 1.36 + const objectStoreName = "foo"; 1.37 + const testKey = 1; 1.38 + const testValue = objectStoreName; 1.39 + const dbName = location.pathname + location.search; 1.40 + 1.41 + // Determine whether our parent iframe asked us to create a remote 1.42 + // browser frame here. 1.43 + let remote_browser; 1.44 + if (location.search.indexOf("remote_browser=true") != -1) { 1.45 + remote_browser = true; 1.46 + } 1.47 + else if (location.search.indexOf("remote_browser=false") != -1) { 1.48 + remote_browser = false; 1.49 + } 1.50 + else { 1.51 + ok(false, "Expected remote_browser={true,false} in query string."); 1.52 + return; 1.53 + } 1.54 + 1.55 + let request = indexedDB.open(dbName, 1); 1.56 + request.onerror = errorHandler; 1.57 + request.onupgradeneeded = grabEventAndContinueHandler; 1.58 + request.onsuccess = unexpectedSuccessHandler; 1.59 + let event = yield undefined; 1.60 + 1.61 + let db = event.target.result; 1.62 + db.onerror = errorHandler; 1.63 + db.onversionchange = function(event) { 1.64 + event.target.close(); 1.65 + } 1.66 + 1.67 + let objectStore = db.createObjectStore(objectStoreName); 1.68 + objectStore.add(testValue, testKey); 1.69 + 1.70 + request.onsuccess = grabEventAndContinueHandler; 1.71 + event = yield undefined; 1.72 + 1.73 + ok(db === event.target.result, "created database"); 1.74 + 1.75 + objectStore = 1.76 + db.transaction(objectStoreName).objectStore(objectStoreName); 1.77 + objectStore.get(testKey).onsuccess = grabEventAndContinueHandler; 1.78 + event = yield undefined; 1.79 + 1.80 + ok(testValue == event.target.result, "data exists"); 1.81 + 1.82 + let iframe = document.createElement("iframe"); 1.83 + iframe.setAttribute("mozbrowser", ""); 1.84 + // Send our querystring to the subframe because 1.85 + // webapp_clearBrowserData_browserFrame uses its pathname + querystring to 1.86 + // open a database which it assumes hasn't been touched by another test. 1.87 + iframe.setAttribute("src", "webapp_clearBrowserData_browserFrame.html" + location.search); 1.88 + iframe.setAttribute("remote", remote_browser); 1.89 + iframe.addEventListener("mozbrowsershowmodalprompt", function(event) { 1.90 + let message = JSON.parse(event.detail.message); 1.91 + switch (message.type) { 1.92 + case "block": 1.93 + info("blocking browserFrame"); 1.94 + event.preventDefault(); 1.95 + 1.96 + let request = navigator.mozApps.getSelf(); 1.97 + request.onsuccess = function() { 1.98 + let app = request.result; 1.99 + ok(app, "got app"); 1.100 + 1.101 + info("clearing browser data"); 1.102 + app.clearBrowserData(); 1.103 + 1.104 + info("unblocking browserFrame"); 1.105 + event.detail.unblock(); 1.106 + } 1.107 + break; 1.108 + case "done": 1.109 + continueToNextStepSync(); 1.110 + break; 1.111 + default: 1.112 + alert(event.detail.message); 1.113 + } 1.114 + }); 1.115 + 1.116 + info("loading browser frame"); 1.117 + 1.118 + document.body.appendChild(iframe); 1.119 + yield undefined; 1.120 + 1.121 + request = indexedDB.open(dbName, 1); 1.122 + request.onerror = errorHandler; 1.123 + request.onupgradeneeded = unexpectedSuccessHandler; 1.124 + request.onsuccess = grabEventAndContinueHandler; 1.125 + event = yield undefined; 1.126 + 1.127 + db = event.target.result; 1.128 + db.onerror = errorHandler; 1.129 + 1.130 + objectStore = 1.131 + db.transaction(objectStoreName).objectStore(objectStoreName); 1.132 + objectStore.get(testKey).onsuccess = grabEventAndContinueHandler; 1.133 + event = yield undefined; 1.134 + 1.135 + ok(testValue == event.target.result, "data still exists"); 1.136 + 1.137 + finish(); 1.138 + yield undefined; 1.139 + } 1.140 + 1.141 + </script> 1.142 + 1.143 + <script type="text/javascript;version=1.7" src="helpers.js"></script> 1.144 +</head> 1.145 + 1.146 +<body onload="testGenerator.next();"></body> 1.147 + 1.148 +</html>