| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // This file simulates a typical foreground process of an offline-capable | 5 // This file simulates a typical foreground process of an offline-capable |
| 6 // authoring application. When in an "offline" state, simulated user actions | 6 // authoring application. When in an "offline" state, simulated user actions |
| 7 // are recorded for later playback in an IDB data store. When in an "online" | 7 // are recorded for later playback in an IDB data store. When in an "online" |
| 8 // state, the recorded actions are drained from the store (as if being sent | 8 // state, the recorded actions are drained from the store (as if being sent |
| 9 // to the server). | 9 // to the server). |
| 10 | 10 |
| 11 self.indexedDB = self.indexedDB || self.webkitIndexedDB || | |
| 12 self.mozIndexedDB; | |
| 13 self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange; | |
| 14 | |
| 15 var $ = function(s) { | 11 var $ = function(s) { |
| 16 return document.querySelector(s); | 12 return document.querySelector(s); |
| 17 }; | 13 }; |
| 18 | 14 |
| 19 function status(message) { | 15 function status(message) { |
| 20 var elem = $('#status'); | 16 var elem = $('#status'); |
| 21 while (elem.firstChild) | 17 while (elem.firstChild) |
| 22 elem.removeChild(elem.firstChild); | 18 elem.removeChild(elem.firstChild); |
| 23 elem.appendChild(document.createTextNode(message)); | 19 elem.appendChild(document.createTextNode(message)); |
| 24 } | 20 } |
| 25 | 21 |
| 26 function log(message) { | 22 function log(message) { |
| 27 status(message); | 23 status(message); |
| 28 } | 24 } |
| 29 | 25 |
| 30 function error(message) { | 26 function error(message) { |
| 31 status(message); | 27 status(message); |
| 32 console.error(message); | 28 console.error(message); |
| 33 } | 29 } |
| 34 | 30 |
| 35 function unexpectedErrorCallback(e) { | 31 function unexpectedErrorCallback(e) { |
| 36 error("Unexpected error callback: (" + e.target.error.name + ") " + | 32 error("Unexpected error callback: (" + e.target.error.name + ") " + |
| 37 e.target.webkitErrorMessage); | 33 e.target.error.message); |
| 38 } | 34 } |
| 39 | 35 |
| 40 function unexpectedAbortCallback(e) { | 36 function unexpectedAbortCallback(e) { |
| 41 error("Unexpected abort callback: (" + e.target.error.name + ") " + | 37 error("Unexpected abort callback: (" + e.target.error.name + ") " + |
| 42 e.target.webkitErrorMessage); | 38 e.target.error.message); |
| 43 } | 39 } |
| 44 | 40 |
| 45 function unexpectedBlockedCallback(e) { | 41 function unexpectedBlockedCallback(e) { |
| 46 error("Unexpected blocked callback!"); | 42 error("Unexpected blocked callback!"); |
| 47 } | 43 } |
| 48 | 44 |
| 49 var DBNAME = 'endurance-db'; | 45 var DBNAME = 'endurance-db'; |
| 50 var DBVERSION = 1; | 46 var DBVERSION = 1; |
| 51 var MAX_DOC_ID = 25; | 47 var MAX_DOC_ID = 25; |
| 52 | 48 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 }; | 80 }; |
| 85 }; | 81 }; |
| 86 } | 82 } |
| 87 | 83 |
| 88 var offline = true; | 84 var offline = true; |
| 89 var worker = new Worker('app-worker.js?cachebust'); | 85 var worker = new Worker('app-worker.js?cachebust'); |
| 90 worker.onmessage = function (event) { | 86 worker.onmessage = function (event) { |
| 91 var data = event.data; | 87 var data = event.data; |
| 92 switch (data.type) { | 88 switch (data.type) { |
| 93 case 'ABORT': | 89 case 'ABORT': |
| 94 unexpectedAbortCallback( | 90 unexpectedAbortCallback({target: {error: data.error}}); |
| 95 {target:{ | |
| 96 error: data.error, | |
| 97 webkitErrorMessage: data.webkitErrorMessage}}); | |
| 98 break; | 91 break; |
| 99 case 'ERROR': | 92 case 'ERROR': |
| 100 unexpectedErrorCallback( | 93 unexpectedErrorCallback({target: {error: data.error}}); |
| 101 {target:{ | |
| 102 error: data.error, | |
| 103 webkitErrorMessage: data.webkitErrorMessage}}); | |
| 104 break; | 94 break; |
| 105 case 'BLOCKED': | 95 case 'BLOCKED': |
| 106 unexpectedBlockedCallback( | 96 unexpectedBlockedCallback({target: {error: data.error}}); |
| 107 {target:{ | |
| 108 error: data.error, | |
| 109 webkitErrorMessage: data.webkitErrorMessage}}); | |
| 110 break; | 97 break; |
| 111 case 'LOG': | 98 case 'LOG': |
| 112 log('WORKER: ' + data.message); | 99 log('WORKER: ' + data.message); |
| 113 break; | 100 break; |
| 114 case 'ERROR': | 101 case 'ERROR': |
| 115 error('WORKER: ' + data.message); | 102 error('WORKER: ' + data.message); |
| 116 break; | 103 break; |
| 117 } | 104 } |
| 118 }; | 105 }; |
| 119 worker.onerror = function (event) { | 106 worker.onerror = function (event) { |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 278 var s = ''; | 265 var s = ''; |
| 279 while (len--) | 266 while (len--) |
| 280 s += Math.floor((Math.random() * 36)).toString(36); | 267 s += Math.floor((Math.random() * 36)).toString(36); |
| 281 return s; | 268 return s; |
| 282 } | 269 } |
| 283 | 270 |
| 284 window.onload = function () { | 271 window.onload = function () { |
| 285 log("initializing..."); | 272 log("initializing..."); |
| 286 initdb(); | 273 initdb(); |
| 287 }; | 274 }; |
| OLD | NEW |