| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 29 */ | 29 */ |
| 30 | 30 |
| 31 /** | 31 /** |
| 32 * @unrestricted | 32 * @unrestricted |
| 33 */ | 33 */ |
| 34 WebInspector.IndexedDBModel = class extends WebInspector.SDKModel { | 34 Resources.IndexedDBModel = class extends SDK.SDKModel { |
| 35 /** | 35 /** |
| 36 * @param {!WebInspector.Target} target | 36 * @param {!SDK.Target} target |
| 37 * @param {!WebInspector.SecurityOriginManager} securityOriginManager | 37 * @param {!SDK.SecurityOriginManager} securityOriginManager |
| 38 */ | 38 */ |
| 39 constructor(target, securityOriginManager) { | 39 constructor(target, securityOriginManager) { |
| 40 super(WebInspector.IndexedDBModel, target); | 40 super(Resources.IndexedDBModel, target); |
| 41 this._securityOriginManager = securityOriginManager; | 41 this._securityOriginManager = securityOriginManager; |
| 42 this._agent = target.indexedDBAgent(); | 42 this._agent = target.indexedDBAgent(); |
| 43 | 43 |
| 44 /** @type {!Map.<!WebInspector.IndexedDBModel.DatabaseId, !WebInspector.Inde
xedDBModel.Database>} */ | 44 /** @type {!Map.<!Resources.IndexedDBModel.DatabaseId, !Resources.IndexedDBM
odel.Database>} */ |
| 45 this._databases = new Map(); | 45 this._databases = new Map(); |
| 46 /** @type {!Object.<string, !Array.<string>>} */ | 46 /** @type {!Object.<string, !Array.<string>>} */ |
| 47 this._databaseNamesBySecurityOrigin = {}; | 47 this._databaseNamesBySecurityOrigin = {}; |
| 48 } | 48 } |
| 49 | 49 |
| 50 /** | 50 /** |
| 51 * @param {*} idbKey | 51 * @param {*} idbKey |
| 52 * @return {({ | 52 * @return {({ |
| 53 * array: (!Array<?>|undefined), | 53 * array: (!Array<?>|undefined), |
| 54 * date: (number|undefined), | 54 * date: (number|undefined), |
| 55 * number: (number|undefined), | 55 * number: (number|undefined), |
| 56 * string: (string|undefined), | 56 * string: (string|undefined), |
| 57 * type: !Protocol.IndexedDB.KeyType<string> | 57 * type: !Protocol.IndexedDB.KeyType<string> |
| 58 * }|undefined)} | 58 * }|undefined)} |
| 59 */ | 59 */ |
| 60 static keyFromIDBKey(idbKey) { | 60 static keyFromIDBKey(idbKey) { |
| 61 if (typeof(idbKey) === 'undefined' || idbKey === null) | 61 if (typeof(idbKey) === 'undefined' || idbKey === null) |
| 62 return undefined; | 62 return undefined; |
| 63 | 63 |
| 64 var type; | 64 var type; |
| 65 var key = {}; | 65 var key = {}; |
| 66 switch (typeof(idbKey)) { | 66 switch (typeof(idbKey)) { |
| 67 case 'number': | 67 case 'number': |
| 68 key.number = idbKey; | 68 key.number = idbKey; |
| 69 type = WebInspector.IndexedDBModel.KeyTypes.NumberType; | 69 type = Resources.IndexedDBModel.KeyTypes.NumberType; |
| 70 break; | 70 break; |
| 71 case 'string': | 71 case 'string': |
| 72 key.string = idbKey; | 72 key.string = idbKey; |
| 73 type = WebInspector.IndexedDBModel.KeyTypes.StringType; | 73 type = Resources.IndexedDBModel.KeyTypes.StringType; |
| 74 break; | 74 break; |
| 75 case 'object': | 75 case 'object': |
| 76 if (idbKey instanceof Date) { | 76 if (idbKey instanceof Date) { |
| 77 key.date = idbKey.getTime(); | 77 key.date = idbKey.getTime(); |
| 78 type = WebInspector.IndexedDBModel.KeyTypes.DateType; | 78 type = Resources.IndexedDBModel.KeyTypes.DateType; |
| 79 } else if (Array.isArray(idbKey)) { | 79 } else if (Array.isArray(idbKey)) { |
| 80 key.array = []; | 80 key.array = []; |
| 81 for (var i = 0; i < idbKey.length; ++i) | 81 for (var i = 0; i < idbKey.length; ++i) |
| 82 key.array.push(WebInspector.IndexedDBModel.keyFromIDBKey(idbKey[i]))
; | 82 key.array.push(Resources.IndexedDBModel.keyFromIDBKey(idbKey[i])); |
| 83 type = WebInspector.IndexedDBModel.KeyTypes.ArrayType; | 83 type = Resources.IndexedDBModel.KeyTypes.ArrayType; |
| 84 } | 84 } |
| 85 break; | 85 break; |
| 86 default: | 86 default: |
| 87 return undefined; | 87 return undefined; |
| 88 } | 88 } |
| 89 key.type = /** @type {!Protocol.IndexedDB.KeyType<string>} */ (type); | 89 key.type = /** @type {!Protocol.IndexedDB.KeyType<string>} */ (type); |
| 90 return key; | 90 return key; |
| 91 } | 91 } |
| 92 | 92 |
| 93 /** | 93 /** |
| 94 * @param {?IDBKeyRange=} idbKeyRange | 94 * @param {?IDBKeyRange=} idbKeyRange |
| 95 * @return {?Protocol.IndexedDB.KeyRange} | 95 * @return {?Protocol.IndexedDB.KeyRange} |
| 96 * eturn {?{lower: ?Object, upper: ?Object, lowerOpen: *, upperOpen: *}} | 96 * eturn {?{lower: ?Object, upper: ?Object, lowerOpen: *, upperOpen: *}} |
| 97 */ | 97 */ |
| 98 static keyRangeFromIDBKeyRange(idbKeyRange) { | 98 static keyRangeFromIDBKeyRange(idbKeyRange) { |
| 99 if (typeof idbKeyRange === 'undefined' || idbKeyRange === null) | 99 if (typeof idbKeyRange === 'undefined' || idbKeyRange === null) |
| 100 return null; | 100 return null; |
| 101 | 101 |
| 102 var keyRange = {}; | 102 var keyRange = {}; |
| 103 keyRange.lower = WebInspector.IndexedDBModel.keyFromIDBKey(idbKeyRange.lower
); | 103 keyRange.lower = Resources.IndexedDBModel.keyFromIDBKey(idbKeyRange.lower); |
| 104 keyRange.upper = WebInspector.IndexedDBModel.keyFromIDBKey(idbKeyRange.upper
); | 104 keyRange.upper = Resources.IndexedDBModel.keyFromIDBKey(idbKeyRange.upper); |
| 105 keyRange.lowerOpen = !!idbKeyRange.lowerOpen; | 105 keyRange.lowerOpen = !!idbKeyRange.lowerOpen; |
| 106 keyRange.upperOpen = !!idbKeyRange.upperOpen; | 106 keyRange.upperOpen = !!idbKeyRange.upperOpen; |
| 107 return keyRange; | 107 return keyRange; |
| 108 } | 108 } |
| 109 | 109 |
| 110 /** | 110 /** |
| 111 * @param {!Protocol.IndexedDB.KeyPath} keyPath | 111 * @param {!Protocol.IndexedDB.KeyPath} keyPath |
| 112 * @return {?string|!Array.<string>|undefined} | 112 * @return {?string|!Array.<string>|undefined} |
| 113 */ | 113 */ |
| 114 static idbKeyPathFromKeyPath(keyPath) { | 114 static idbKeyPathFromKeyPath(keyPath) { |
| 115 var idbKeyPath; | 115 var idbKeyPath; |
| 116 switch (keyPath.type) { | 116 switch (keyPath.type) { |
| 117 case WebInspector.IndexedDBModel.KeyPathTypes.NullType: | 117 case Resources.IndexedDBModel.KeyPathTypes.NullType: |
| 118 idbKeyPath = null; | 118 idbKeyPath = null; |
| 119 break; | 119 break; |
| 120 case WebInspector.IndexedDBModel.KeyPathTypes.StringType: | 120 case Resources.IndexedDBModel.KeyPathTypes.StringType: |
| 121 idbKeyPath = keyPath.string; | 121 idbKeyPath = keyPath.string; |
| 122 break; | 122 break; |
| 123 case WebInspector.IndexedDBModel.KeyPathTypes.ArrayType: | 123 case Resources.IndexedDBModel.KeyPathTypes.ArrayType: |
| 124 idbKeyPath = keyPath.array; | 124 idbKeyPath = keyPath.array; |
| 125 break; | 125 break; |
| 126 } | 126 } |
| 127 return idbKeyPath; | 127 return idbKeyPath; |
| 128 } | 128 } |
| 129 | 129 |
| 130 /** | 130 /** |
| 131 * @param {?string|!Array.<string>|undefined} idbKeyPath | 131 * @param {?string|!Array.<string>|undefined} idbKeyPath |
| 132 * @return {?string} | 132 * @return {?string} |
| 133 */ | 133 */ |
| 134 static keyPathStringFromIDBKeyPath(idbKeyPath) { | 134 static keyPathStringFromIDBKeyPath(idbKeyPath) { |
| 135 if (typeof idbKeyPath === 'string') | 135 if (typeof idbKeyPath === 'string') |
| 136 return '"' + idbKeyPath + '"'; | 136 return '"' + idbKeyPath + '"'; |
| 137 if (idbKeyPath instanceof Array) | 137 if (idbKeyPath instanceof Array) |
| 138 return '["' + idbKeyPath.join('", "') + '"]'; | 138 return '["' + idbKeyPath.join('", "') + '"]'; |
| 139 return null; | 139 return null; |
| 140 } | 140 } |
| 141 | 141 |
| 142 /** | 142 /** |
| 143 * @param {!WebInspector.Target} target | 143 * @param {!SDK.Target} target |
| 144 * @return {!WebInspector.IndexedDBModel} | 144 * @return {!Resources.IndexedDBModel} |
| 145 */ | 145 */ |
| 146 static fromTarget(target) { | 146 static fromTarget(target) { |
| 147 var model = /** @type {?WebInspector.IndexedDBModel} */ (target.model(WebIns
pector.IndexedDBModel)); | 147 var model = /** @type {?Resources.IndexedDBModel} */ (target.model(Resources
.IndexedDBModel)); |
| 148 if (!model) | 148 if (!model) |
| 149 model = new WebInspector.IndexedDBModel(target, WebInspector.SecurityOrigi
nManager.fromTarget(target)); | 149 model = new Resources.IndexedDBModel(target, SDK.SecurityOriginManager.fro
mTarget(target)); |
| 150 return model; | 150 return model; |
| 151 } | 151 } |
| 152 | 152 |
| 153 enable() { | 153 enable() { |
| 154 if (this._enabled) | 154 if (this._enabled) |
| 155 return; | 155 return; |
| 156 | 156 |
| 157 this._agent.enable(); | 157 this._agent.enable(); |
| 158 this._securityOriginManager.addEventListener( | 158 this._securityOriginManager.addEventListener( |
| 159 WebInspector.SecurityOriginManager.Events.SecurityOriginAdded, this._sec
urityOriginAdded, this); | 159 SDK.SecurityOriginManager.Events.SecurityOriginAdded, this._securityOrig
inAdded, this); |
| 160 this._securityOriginManager.addEventListener( | 160 this._securityOriginManager.addEventListener( |
| 161 WebInspector.SecurityOriginManager.Events.SecurityOriginRemoved, this._s
ecurityOriginRemoved, this); | 161 SDK.SecurityOriginManager.Events.SecurityOriginRemoved, this._securityOr
iginRemoved, this); |
| 162 | 162 |
| 163 for (var securityOrigin of this._securityOriginManager.securityOrigins()) | 163 for (var securityOrigin of this._securityOriginManager.securityOrigins()) |
| 164 this._addOrigin(securityOrigin); | 164 this._addOrigin(securityOrigin); |
| 165 | 165 |
| 166 this._enabled = true; | 166 this._enabled = true; |
| 167 } | 167 } |
| 168 | 168 |
| 169 /** | 169 /** |
| 170 * @param {string} origin | 170 * @param {string} origin |
| 171 */ | 171 */ |
| 172 clearForOrigin(origin) { | 172 clearForOrigin(origin) { |
| 173 if (!this._enabled) | 173 if (!this._enabled) |
| 174 return; | 174 return; |
| 175 | 175 |
| 176 this._removeOrigin(origin); | 176 this._removeOrigin(origin); |
| 177 this._addOrigin(origin); | 177 this._addOrigin(origin); |
| 178 } | 178 } |
| 179 | 179 |
| 180 refreshDatabaseNames() { | 180 refreshDatabaseNames() { |
| 181 for (var securityOrigin in this._databaseNamesBySecurityOrigin) | 181 for (var securityOrigin in this._databaseNamesBySecurityOrigin) |
| 182 this._loadDatabaseNames(securityOrigin); | 182 this._loadDatabaseNames(securityOrigin); |
| 183 } | 183 } |
| 184 | 184 |
| 185 /** | 185 /** |
| 186 * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId | 186 * @param {!Resources.IndexedDBModel.DatabaseId} databaseId |
| 187 */ | 187 */ |
| 188 refreshDatabase(databaseId) { | 188 refreshDatabase(databaseId) { |
| 189 this._loadDatabase(databaseId); | 189 this._loadDatabase(databaseId); |
| 190 } | 190 } |
| 191 | 191 |
| 192 /** | 192 /** |
| 193 * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId | 193 * @param {!Resources.IndexedDBModel.DatabaseId} databaseId |
| 194 * @param {string} objectStoreName | 194 * @param {string} objectStoreName |
| 195 * @param {function()} callback | 195 * @param {function()} callback |
| 196 */ | 196 */ |
| 197 clearObjectStore(databaseId, objectStoreName, callback) { | 197 clearObjectStore(databaseId, objectStoreName, callback) { |
| 198 this._agent.clearObjectStore(databaseId.securityOrigin, databaseId.name, obj
ectStoreName, callback); | 198 this._agent.clearObjectStore(databaseId.securityOrigin, databaseId.name, obj
ectStoreName, callback); |
| 199 } | 199 } |
| 200 | 200 |
| 201 /** | 201 /** |
| 202 * @param {!WebInspector.Event} event | 202 * @param {!Common.Event} event |
| 203 */ | 203 */ |
| 204 _securityOriginAdded(event) { | 204 _securityOriginAdded(event) { |
| 205 var securityOrigin = /** @type {string} */ (event.data); | 205 var securityOrigin = /** @type {string} */ (event.data); |
| 206 this._addOrigin(securityOrigin); | 206 this._addOrigin(securityOrigin); |
| 207 } | 207 } |
| 208 | 208 |
| 209 /** | 209 /** |
| 210 * @param {!WebInspector.Event} event | 210 * @param {!Common.Event} event |
| 211 */ | 211 */ |
| 212 _securityOriginRemoved(event) { | 212 _securityOriginRemoved(event) { |
| 213 var securityOrigin = /** @type {string} */ (event.data); | 213 var securityOrigin = /** @type {string} */ (event.data); |
| 214 this._removeOrigin(securityOrigin); | 214 this._removeOrigin(securityOrigin); |
| 215 } | 215 } |
| 216 | 216 |
| 217 /** | 217 /** |
| 218 * @param {string} securityOrigin | 218 * @param {string} securityOrigin |
| 219 */ | 219 */ |
| 220 _addOrigin(securityOrigin) { | 220 _addOrigin(securityOrigin) { |
| (...skipping 26 matching lines...) Expand all Loading... |
| 247 if (!newDatabaseNames.has(databaseName)) | 247 if (!newDatabaseNames.has(databaseName)) |
| 248 this._databaseRemoved(securityOrigin, databaseName); | 248 this._databaseRemoved(securityOrigin, databaseName); |
| 249 } | 249 } |
| 250 for (var databaseName of newDatabaseNames) { | 250 for (var databaseName of newDatabaseNames) { |
| 251 if (!oldDatabaseNames.has(databaseName)) | 251 if (!oldDatabaseNames.has(databaseName)) |
| 252 this._databaseAdded(securityOrigin, databaseName); | 252 this._databaseAdded(securityOrigin, databaseName); |
| 253 } | 253 } |
| 254 } | 254 } |
| 255 | 255 |
| 256 /** | 256 /** |
| 257 * @return {!Array.<!WebInspector.IndexedDBModel.DatabaseId>} | 257 * @return {!Array.<!Resources.IndexedDBModel.DatabaseId>} |
| 258 */ | 258 */ |
| 259 databases() { | 259 databases() { |
| 260 var result = []; | 260 var result = []; |
| 261 for (var securityOrigin in this._databaseNamesBySecurityOrigin) { | 261 for (var securityOrigin in this._databaseNamesBySecurityOrigin) { |
| 262 var databaseNames = this._databaseNamesBySecurityOrigin[securityOrigin]; | 262 var databaseNames = this._databaseNamesBySecurityOrigin[securityOrigin]; |
| 263 for (var i = 0; i < databaseNames.length; ++i) { | 263 for (var i = 0; i < databaseNames.length; ++i) { |
| 264 result.push(new WebInspector.IndexedDBModel.DatabaseId(securityOrigin, d
atabaseNames[i])); | 264 result.push(new Resources.IndexedDBModel.DatabaseId(securityOrigin, data
baseNames[i])); |
| 265 } | 265 } |
| 266 } | 266 } |
| 267 return result; | 267 return result; |
| 268 } | 268 } |
| 269 | 269 |
| 270 /** | 270 /** |
| 271 * @param {string} securityOrigin | 271 * @param {string} securityOrigin |
| 272 * @param {string} databaseName | 272 * @param {string} databaseName |
| 273 */ | 273 */ |
| 274 _databaseAdded(securityOrigin, databaseName) { | 274 _databaseAdded(securityOrigin, databaseName) { |
| 275 var databaseId = new WebInspector.IndexedDBModel.DatabaseId(securityOrigin,
databaseName); | 275 var databaseId = new Resources.IndexedDBModel.DatabaseId(securityOrigin, dat
abaseName); |
| 276 this.dispatchEventToListeners(WebInspector.IndexedDBModel.Events.DatabaseAdd
ed, databaseId); | 276 this.dispatchEventToListeners(Resources.IndexedDBModel.Events.DatabaseAdded,
databaseId); |
| 277 } | 277 } |
| 278 | 278 |
| 279 /** | 279 /** |
| 280 * @param {string} securityOrigin | 280 * @param {string} securityOrigin |
| 281 * @param {string} databaseName | 281 * @param {string} databaseName |
| 282 */ | 282 */ |
| 283 _databaseRemoved(securityOrigin, databaseName) { | 283 _databaseRemoved(securityOrigin, databaseName) { |
| 284 var databaseId = new WebInspector.IndexedDBModel.DatabaseId(securityOrigin,
databaseName); | 284 var databaseId = new Resources.IndexedDBModel.DatabaseId(securityOrigin, dat
abaseName); |
| 285 this.dispatchEventToListeners(WebInspector.IndexedDBModel.Events.DatabaseRem
oved, databaseId); | 285 this.dispatchEventToListeners(Resources.IndexedDBModel.Events.DatabaseRemove
d, databaseId); |
| 286 } | 286 } |
| 287 | 287 |
| 288 /** | 288 /** |
| 289 * @param {string} securityOrigin | 289 * @param {string} securityOrigin |
| 290 */ | 290 */ |
| 291 _loadDatabaseNames(securityOrigin) { | 291 _loadDatabaseNames(securityOrigin) { |
| 292 /** | 292 /** |
| 293 * @param {?Protocol.Error} error | 293 * @param {?Protocol.Error} error |
| 294 * @param {!Array.<string>} databaseNames | 294 * @param {!Array.<string>} databaseNames |
| 295 * @this {WebInspector.IndexedDBModel} | 295 * @this {Resources.IndexedDBModel} |
| 296 */ | 296 */ |
| 297 function callback(error, databaseNames) { | 297 function callback(error, databaseNames) { |
| 298 if (error) { | 298 if (error) { |
| 299 console.error('IndexedDBAgent error: ' + error); | 299 console.error('IndexedDBAgent error: ' + error); |
| 300 return; | 300 return; |
| 301 } | 301 } |
| 302 | 302 |
| 303 if (!this._databaseNamesBySecurityOrigin[securityOrigin]) | 303 if (!this._databaseNamesBySecurityOrigin[securityOrigin]) |
| 304 return; | 304 return; |
| 305 this._updateOriginDatabaseNames(securityOrigin, databaseNames); | 305 this._updateOriginDatabaseNames(securityOrigin, databaseNames); |
| 306 } | 306 } |
| 307 | 307 |
| 308 this._agent.requestDatabaseNames(securityOrigin, callback.bind(this)); | 308 this._agent.requestDatabaseNames(securityOrigin, callback.bind(this)); |
| 309 } | 309 } |
| 310 | 310 |
| 311 /** | 311 /** |
| 312 * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId | 312 * @param {!Resources.IndexedDBModel.DatabaseId} databaseId |
| 313 */ | 313 */ |
| 314 _loadDatabase(databaseId) { | 314 _loadDatabase(databaseId) { |
| 315 /** | 315 /** |
| 316 * @param {?Protocol.Error} error | 316 * @param {?Protocol.Error} error |
| 317 * @param {!Protocol.IndexedDB.DatabaseWithObjectStores} databaseWithObjectS
tores | 317 * @param {!Protocol.IndexedDB.DatabaseWithObjectStores} databaseWithObjectS
tores |
| 318 * @this {WebInspector.IndexedDBModel} | 318 * @this {Resources.IndexedDBModel} |
| 319 */ | 319 */ |
| 320 function callback(error, databaseWithObjectStores) { | 320 function callback(error, databaseWithObjectStores) { |
| 321 if (error) { | 321 if (error) { |
| 322 console.error('IndexedDBAgent error: ' + error); | 322 console.error('IndexedDBAgent error: ' + error); |
| 323 return; | 323 return; |
| 324 } | 324 } |
| 325 | 325 |
| 326 if (!this._databaseNamesBySecurityOrigin[databaseId.securityOrigin]) | 326 if (!this._databaseNamesBySecurityOrigin[databaseId.securityOrigin]) |
| 327 return; | 327 return; |
| 328 var databaseModel = new WebInspector.IndexedDBModel.Database(databaseId, d
atabaseWithObjectStores.version); | 328 var databaseModel = new Resources.IndexedDBModel.Database(databaseId, data
baseWithObjectStores.version); |
| 329 this._databases.set(databaseId, databaseModel); | 329 this._databases.set(databaseId, databaseModel); |
| 330 for (var i = 0; i < databaseWithObjectStores.objectStores.length; ++i) { | 330 for (var i = 0; i < databaseWithObjectStores.objectStores.length; ++i) { |
| 331 var objectStore = databaseWithObjectStores.objectStores[i]; | 331 var objectStore = databaseWithObjectStores.objectStores[i]; |
| 332 var objectStoreIDBKeyPath = WebInspector.IndexedDBModel.idbKeyPathFromKe
yPath(objectStore.keyPath); | 332 var objectStoreIDBKeyPath = Resources.IndexedDBModel.idbKeyPathFromKeyPa
th(objectStore.keyPath); |
| 333 var objectStoreModel = new WebInspector.IndexedDBModel.ObjectStore( | 333 var objectStoreModel = new Resources.IndexedDBModel.ObjectStore( |
| 334 objectStore.name, objectStoreIDBKeyPath, objectStore.autoIncrement); | 334 objectStore.name, objectStoreIDBKeyPath, objectStore.autoIncrement); |
| 335 for (var j = 0; j < objectStore.indexes.length; ++j) { | 335 for (var j = 0; j < objectStore.indexes.length; ++j) { |
| 336 var index = objectStore.indexes[j]; | 336 var index = objectStore.indexes[j]; |
| 337 var indexIDBKeyPath = WebInspector.IndexedDBModel.idbKeyPathFromKeyPat
h(index.keyPath); | 337 var indexIDBKeyPath = Resources.IndexedDBModel.idbKeyPathFromKeyPath(i
ndex.keyPath); |
| 338 var indexModel = | 338 var indexModel = |
| 339 new WebInspector.IndexedDBModel.Index(index.name, indexIDBKeyPath,
index.unique, index.multiEntry); | 339 new Resources.IndexedDBModel.Index(index.name, indexIDBKeyPath, in
dex.unique, index.multiEntry); |
| 340 objectStoreModel.indexes[indexModel.name] = indexModel; | 340 objectStoreModel.indexes[indexModel.name] = indexModel; |
| 341 } | 341 } |
| 342 databaseModel.objectStores[objectStoreModel.name] = objectStoreModel; | 342 databaseModel.objectStores[objectStoreModel.name] = objectStoreModel; |
| 343 } | 343 } |
| 344 | 344 |
| 345 this.dispatchEventToListeners(WebInspector.IndexedDBModel.Events.DatabaseL
oaded, databaseModel); | 345 this.dispatchEventToListeners(Resources.IndexedDBModel.Events.DatabaseLoad
ed, databaseModel); |
| 346 } | 346 } |
| 347 | 347 |
| 348 this._agent.requestDatabase(databaseId.securityOrigin, databaseId.name, call
back.bind(this)); | 348 this._agent.requestDatabase(databaseId.securityOrigin, databaseId.name, call
back.bind(this)); |
| 349 } | 349 } |
| 350 | 350 |
| 351 /** | 351 /** |
| 352 * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId | 352 * @param {!Resources.IndexedDBModel.DatabaseId} databaseId |
| 353 * @param {string} objectStoreName | 353 * @param {string} objectStoreName |
| 354 * @param {?IDBKeyRange} idbKeyRange | 354 * @param {?IDBKeyRange} idbKeyRange |
| 355 * @param {number} skipCount | 355 * @param {number} skipCount |
| 356 * @param {number} pageSize | 356 * @param {number} pageSize |
| 357 * @param {function(!Array.<!WebInspector.IndexedDBModel.Entry>, boolean)} cal
lback | 357 * @param {function(!Array.<!Resources.IndexedDBModel.Entry>, boolean)} callba
ck |
| 358 */ | 358 */ |
| 359 loadObjectStoreData(databaseId, objectStoreName, idbKeyRange, skipCount, pageS
ize, callback) { | 359 loadObjectStoreData(databaseId, objectStoreName, idbKeyRange, skipCount, pageS
ize, callback) { |
| 360 this._requestData(databaseId, databaseId.name, objectStoreName, '', idbKeyRa
nge, skipCount, pageSize, callback); | 360 this._requestData(databaseId, databaseId.name, objectStoreName, '', idbKeyRa
nge, skipCount, pageSize, callback); |
| 361 } | 361 } |
| 362 | 362 |
| 363 /** | 363 /** |
| 364 * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId | 364 * @param {!Resources.IndexedDBModel.DatabaseId} databaseId |
| 365 * @param {string} objectStoreName | 365 * @param {string} objectStoreName |
| 366 * @param {string} indexName | 366 * @param {string} indexName |
| 367 * @param {?IDBKeyRange} idbKeyRange | 367 * @param {?IDBKeyRange} idbKeyRange |
| 368 * @param {number} skipCount | 368 * @param {number} skipCount |
| 369 * @param {number} pageSize | 369 * @param {number} pageSize |
| 370 * @param {function(!Array.<!WebInspector.IndexedDBModel.Entry>, boolean)} cal
lback | 370 * @param {function(!Array.<!Resources.IndexedDBModel.Entry>, boolean)} callba
ck |
| 371 */ | 371 */ |
| 372 loadIndexData(databaseId, objectStoreName, indexName, idbKeyRange, skipCount,
pageSize, callback) { | 372 loadIndexData(databaseId, objectStoreName, indexName, idbKeyRange, skipCount,
pageSize, callback) { |
| 373 this._requestData( | 373 this._requestData( |
| 374 databaseId, databaseId.name, objectStoreName, indexName, idbKeyRange, sk
ipCount, pageSize, callback); | 374 databaseId, databaseId.name, objectStoreName, indexName, idbKeyRange, sk
ipCount, pageSize, callback); |
| 375 } | 375 } |
| 376 | 376 |
| 377 /** | 377 /** |
| 378 * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId | 378 * @param {!Resources.IndexedDBModel.DatabaseId} databaseId |
| 379 * @param {string} databaseName | 379 * @param {string} databaseName |
| 380 * @param {string} objectStoreName | 380 * @param {string} objectStoreName |
| 381 * @param {string} indexName | 381 * @param {string} indexName |
| 382 * @param {?IDBKeyRange} idbKeyRange | 382 * @param {?IDBKeyRange} idbKeyRange |
| 383 * @param {number} skipCount | 383 * @param {number} skipCount |
| 384 * @param {number} pageSize | 384 * @param {number} pageSize |
| 385 * @param {function(!Array.<!WebInspector.IndexedDBModel.Entry>, boolean)} cal
lback | 385 * @param {function(!Array.<!Resources.IndexedDBModel.Entry>, boolean)} callba
ck |
| 386 */ | 386 */ |
| 387 _requestData(databaseId, databaseName, objectStoreName, indexName, idbKeyRange
, skipCount, pageSize, callback) { | 387 _requestData(databaseId, databaseName, objectStoreName, indexName, idbKeyRange
, skipCount, pageSize, callback) { |
| 388 /** | 388 /** |
| 389 * @param {?Protocol.Error} error | 389 * @param {?Protocol.Error} error |
| 390 * @param {!Array.<!Protocol.IndexedDB.DataEntry>} dataEntries | 390 * @param {!Array.<!Protocol.IndexedDB.DataEntry>} dataEntries |
| 391 * @param {boolean} hasMore | 391 * @param {boolean} hasMore |
| 392 * @this {WebInspector.IndexedDBModel} | 392 * @this {Resources.IndexedDBModel} |
| 393 */ | 393 */ |
| 394 function innerCallback(error, dataEntries, hasMore) { | 394 function innerCallback(error, dataEntries, hasMore) { |
| 395 if (error) { | 395 if (error) { |
| 396 console.error('IndexedDBAgent error: ' + error); | 396 console.error('IndexedDBAgent error: ' + error); |
| 397 return; | 397 return; |
| 398 } | 398 } |
| 399 | 399 |
| 400 if (!this._databaseNamesBySecurityOrigin[databaseId.securityOrigin]) | 400 if (!this._databaseNamesBySecurityOrigin[databaseId.securityOrigin]) |
| 401 return; | 401 return; |
| 402 var entries = []; | 402 var entries = []; |
| 403 for (var i = 0; i < dataEntries.length; ++i) { | 403 for (var i = 0; i < dataEntries.length; ++i) { |
| 404 var key = this.target().runtimeModel.createRemoteObject(dataEntries[i].k
ey); | 404 var key = this.target().runtimeModel.createRemoteObject(dataEntries[i].k
ey); |
| 405 var primaryKey = this.target().runtimeModel.createRemoteObject(dataEntri
es[i].primaryKey); | 405 var primaryKey = this.target().runtimeModel.createRemoteObject(dataEntri
es[i].primaryKey); |
| 406 var value = this.target().runtimeModel.createRemoteObject(dataEntries[i]
.value); | 406 var value = this.target().runtimeModel.createRemoteObject(dataEntries[i]
.value); |
| 407 entries.push(new WebInspector.IndexedDBModel.Entry(key, primaryKey, valu
e)); | 407 entries.push(new Resources.IndexedDBModel.Entry(key, primaryKey, value))
; |
| 408 } | 408 } |
| 409 callback(entries, hasMore); | 409 callback(entries, hasMore); |
| 410 } | 410 } |
| 411 | 411 |
| 412 var keyRange = WebInspector.IndexedDBModel.keyRangeFromIDBKeyRange(idbKeyRan
ge); | 412 var keyRange = Resources.IndexedDBModel.keyRangeFromIDBKeyRange(idbKeyRange)
; |
| 413 this._agent.requestData( | 413 this._agent.requestData( |
| 414 databaseId.securityOrigin, databaseName, objectStoreName, indexName, ski
pCount, pageSize, | 414 databaseId.securityOrigin, databaseName, objectStoreName, indexName, ski
pCount, pageSize, |
| 415 keyRange ? keyRange : undefined, innerCallback.bind(this)); | 415 keyRange ? keyRange : undefined, innerCallback.bind(this)); |
| 416 } | 416 } |
| 417 }; | 417 }; |
| 418 | 418 |
| 419 WebInspector.IndexedDBModel.KeyTypes = { | 419 Resources.IndexedDBModel.KeyTypes = { |
| 420 NumberType: 'number', | 420 NumberType: 'number', |
| 421 StringType: 'string', | 421 StringType: 'string', |
| 422 DateType: 'date', | 422 DateType: 'date', |
| 423 ArrayType: 'array' | 423 ArrayType: 'array' |
| 424 }; | 424 }; |
| 425 | 425 |
| 426 WebInspector.IndexedDBModel.KeyPathTypes = { | 426 Resources.IndexedDBModel.KeyPathTypes = { |
| 427 NullType: 'null', | 427 NullType: 'null', |
| 428 StringType: 'string', | 428 StringType: 'string', |
| 429 ArrayType: 'array' | 429 ArrayType: 'array' |
| 430 }; | 430 }; |
| 431 | 431 |
| 432 | 432 |
| 433 /** @enum {symbol} */ | 433 /** @enum {symbol} */ |
| 434 WebInspector.IndexedDBModel.Events = { | 434 Resources.IndexedDBModel.Events = { |
| 435 DatabaseAdded: Symbol('DatabaseAdded'), | 435 DatabaseAdded: Symbol('DatabaseAdded'), |
| 436 DatabaseRemoved: Symbol('DatabaseRemoved'), | 436 DatabaseRemoved: Symbol('DatabaseRemoved'), |
| 437 DatabaseLoaded: Symbol('DatabaseLoaded') | 437 DatabaseLoaded: Symbol('DatabaseLoaded') |
| 438 }; | 438 }; |
| 439 | 439 |
| 440 /** | 440 /** |
| 441 * @unrestricted | 441 * @unrestricted |
| 442 */ | 442 */ |
| 443 WebInspector.IndexedDBModel.Entry = class { | 443 Resources.IndexedDBModel.Entry = class { |
| 444 /** | 444 /** |
| 445 * @param {!WebInspector.RemoteObject} key | 445 * @param {!SDK.RemoteObject} key |
| 446 * @param {!WebInspector.RemoteObject} primaryKey | 446 * @param {!SDK.RemoteObject} primaryKey |
| 447 * @param {!WebInspector.RemoteObject} value | 447 * @param {!SDK.RemoteObject} value |
| 448 */ | 448 */ |
| 449 constructor(key, primaryKey, value) { | 449 constructor(key, primaryKey, value) { |
| 450 this.key = key; | 450 this.key = key; |
| 451 this.primaryKey = primaryKey; | 451 this.primaryKey = primaryKey; |
| 452 this.value = value; | 452 this.value = value; |
| 453 } | 453 } |
| 454 }; | 454 }; |
| 455 | 455 |
| 456 /** | 456 /** |
| 457 * @unrestricted | 457 * @unrestricted |
| 458 */ | 458 */ |
| 459 WebInspector.IndexedDBModel.DatabaseId = class { | 459 Resources.IndexedDBModel.DatabaseId = class { |
| 460 /** | 460 /** |
| 461 * @param {string} securityOrigin | 461 * @param {string} securityOrigin |
| 462 * @param {string} name | 462 * @param {string} name |
| 463 */ | 463 */ |
| 464 constructor(securityOrigin, name) { | 464 constructor(securityOrigin, name) { |
| 465 this.securityOrigin = securityOrigin; | 465 this.securityOrigin = securityOrigin; |
| 466 this.name = name; | 466 this.name = name; |
| 467 } | 467 } |
| 468 | 468 |
| 469 /** | 469 /** |
| 470 * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId | 470 * @param {!Resources.IndexedDBModel.DatabaseId} databaseId |
| 471 * @return {boolean} | 471 * @return {boolean} |
| 472 */ | 472 */ |
| 473 equals(databaseId) { | 473 equals(databaseId) { |
| 474 return this.name === databaseId.name && this.securityOrigin === databaseId.s
ecurityOrigin; | 474 return this.name === databaseId.name && this.securityOrigin === databaseId.s
ecurityOrigin; |
| 475 } | 475 } |
| 476 }; | 476 }; |
| 477 | 477 |
| 478 /** | 478 /** |
| 479 * @unrestricted | 479 * @unrestricted |
| 480 */ | 480 */ |
| 481 WebInspector.IndexedDBModel.Database = class { | 481 Resources.IndexedDBModel.Database = class { |
| 482 /** | 482 /** |
| 483 * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId | 483 * @param {!Resources.IndexedDBModel.DatabaseId} databaseId |
| 484 * @param {number} version | 484 * @param {number} version |
| 485 */ | 485 */ |
| 486 constructor(databaseId, version) { | 486 constructor(databaseId, version) { |
| 487 this.databaseId = databaseId; | 487 this.databaseId = databaseId; |
| 488 this.version = version; | 488 this.version = version; |
| 489 this.objectStores = {}; | 489 this.objectStores = {}; |
| 490 } | 490 } |
| 491 }; | 491 }; |
| 492 | 492 |
| 493 /** | 493 /** |
| 494 * @unrestricted | 494 * @unrestricted |
| 495 */ | 495 */ |
| 496 WebInspector.IndexedDBModel.ObjectStore = class { | 496 Resources.IndexedDBModel.ObjectStore = class { |
| 497 /** | 497 /** |
| 498 * @param {string} name | 498 * @param {string} name |
| 499 * @param {*} keyPath | 499 * @param {*} keyPath |
| 500 * @param {boolean} autoIncrement | 500 * @param {boolean} autoIncrement |
| 501 */ | 501 */ |
| 502 constructor(name, keyPath, autoIncrement) { | 502 constructor(name, keyPath, autoIncrement) { |
| 503 this.name = name; | 503 this.name = name; |
| 504 this.keyPath = keyPath; | 504 this.keyPath = keyPath; |
| 505 this.autoIncrement = autoIncrement; | 505 this.autoIncrement = autoIncrement; |
| 506 this.indexes = {}; | 506 this.indexes = {}; |
| 507 } | 507 } |
| 508 | 508 |
| 509 /** | 509 /** |
| 510 * @return {string} | 510 * @return {string} |
| 511 */ | 511 */ |
| 512 get keyPathString() { | 512 get keyPathString() { |
| 513 return /** @type {string}*/ ( | 513 return /** @type {string}*/ ( |
| 514 WebInspector.IndexedDBModel.keyPathStringFromIDBKeyPath(/** @type {strin
g}*/ (this.keyPath))); | 514 Resources.IndexedDBModel.keyPathStringFromIDBKeyPath(/** @type {string}*
/ (this.keyPath))); |
| 515 } | 515 } |
| 516 }; | 516 }; |
| 517 | 517 |
| 518 /** | 518 /** |
| 519 * @unrestricted | 519 * @unrestricted |
| 520 */ | 520 */ |
| 521 WebInspector.IndexedDBModel.Index = class { | 521 Resources.IndexedDBModel.Index = class { |
| 522 /** | 522 /** |
| 523 * @param {string} name | 523 * @param {string} name |
| 524 * @param {*} keyPath | 524 * @param {*} keyPath |
| 525 * @param {boolean} unique | 525 * @param {boolean} unique |
| 526 * @param {boolean} multiEntry | 526 * @param {boolean} multiEntry |
| 527 */ | 527 */ |
| 528 constructor(name, keyPath, unique, multiEntry) { | 528 constructor(name, keyPath, unique, multiEntry) { |
| 529 this.name = name; | 529 this.name = name; |
| 530 this.keyPath = keyPath; | 530 this.keyPath = keyPath; |
| 531 this.unique = unique; | 531 this.unique = unique; |
| 532 this.multiEntry = multiEntry; | 532 this.multiEntry = multiEntry; |
| 533 } | 533 } |
| 534 | 534 |
| 535 /** | 535 /** |
| 536 * @return {string} | 536 * @return {string} |
| 537 */ | 537 */ |
| 538 get keyPathString() { | 538 get keyPathString() { |
| 539 return /** @type {string}*/ ( | 539 return /** @type {string}*/ ( |
| 540 WebInspector.IndexedDBModel.keyPathStringFromIDBKeyPath(/** @type {strin
g}*/ (this.keyPath))); | 540 Resources.IndexedDBModel.keyPathStringFromIDBKeyPath(/** @type {string}*
/ (this.keyPath))); |
| 541 } | 541 } |
| 542 }; | 542 }; |
| OLD | NEW |