Index: third_party/WebKit/Source/devtools/front_end/resources/IndexedDBModel.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/resources/IndexedDBModel.js b/third_party/WebKit/Source/devtools/front_end/resources/IndexedDBModel.js |
index 503682cd10f85396f734384eb56e0d2a5dc2dd92..78e254096743324a103091d003d1fa02ba0e455d 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/resources/IndexedDBModel.js |
+++ b/third_party/WebKit/Source/devtools/front_end/resources/IndexedDBModel.js |
@@ -27,16 +27,16 @@ |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
- |
/** |
- * @constructor |
- * @extends {WebInspector.SDKModel} |
- * @param {!WebInspector.Target} target |
- * @param {!WebInspector.SecurityOriginManager} securityOriginManager |
+ * @unrestricted |
*/ |
-WebInspector.IndexedDBModel = function(target, securityOriginManager) |
-{ |
- WebInspector.SDKModel.call(this, WebInspector.IndexedDBModel, target); |
+WebInspector.IndexedDBModel = class extends WebInspector.SDKModel { |
+ /** |
+ * @param {!WebInspector.Target} target |
+ * @param {!WebInspector.SecurityOriginManager} securityOriginManager |
+ */ |
+ constructor(target, securityOriginManager) { |
+ super(WebInspector.IndexedDBModel, target); |
this._securityOriginManager = securityOriginManager; |
this._agent = target.indexedDBAgent(); |
@@ -44,74 +44,59 @@ WebInspector.IndexedDBModel = function(target, securityOriginManager) |
this._databases = new Map(); |
/** @type {!Object.<string, !Array.<string>>} */ |
this._databaseNamesBySecurityOrigin = {}; |
-}; |
- |
-WebInspector.IndexedDBModel.KeyTypes = { |
- NumberType: "number", |
- StringType: "string", |
- DateType: "date", |
- ArrayType: "array" |
-}; |
- |
-WebInspector.IndexedDBModel.KeyPathTypes = { |
- NullType: "null", |
- StringType: "string", |
- ArrayType: "array" |
-}; |
- |
-/** |
- * @param {*} idbKey |
- * @return {({ |
- * array: (!Array<?>|undefined), |
- * date: (number|undefined), |
- * number: (number|undefined), |
- * string: (string|undefined), |
- * type: !IndexedDBAgent.KeyType<string> |
- * }|undefined)} |
- */ |
-WebInspector.IndexedDBModel.keyFromIDBKey = function(idbKey) |
-{ |
- if (typeof(idbKey) === "undefined" || idbKey === null) |
- return undefined; |
+ } |
+ |
+ /** |
+ * @param {*} idbKey |
+ * @return {({ |
+ * array: (!Array<?>|undefined), |
+ * date: (number|undefined), |
+ * number: (number|undefined), |
+ * string: (string|undefined), |
+ * type: !IndexedDBAgent.KeyType<string> |
+ * }|undefined)} |
+ */ |
+ static keyFromIDBKey(idbKey) { |
+ if (typeof(idbKey) === 'undefined' || idbKey === null) |
+ return undefined; |
var type; |
var key = {}; |
switch (typeof(idbKey)) { |
- case "number": |
+ case 'number': |
key.number = idbKey; |
type = WebInspector.IndexedDBModel.KeyTypes.NumberType; |
break; |
- case "string": |
+ case 'string': |
key.string = idbKey; |
type = WebInspector.IndexedDBModel.KeyTypes.StringType; |
break; |
- case "object": |
+ case 'object': |
if (idbKey instanceof Date) { |
- key.date = idbKey.getTime(); |
- type = WebInspector.IndexedDBModel.KeyTypes.DateType; |
+ key.date = idbKey.getTime(); |
+ type = WebInspector.IndexedDBModel.KeyTypes.DateType; |
} else if (Array.isArray(idbKey)) { |
- key.array = []; |
- for (var i = 0; i < idbKey.length; ++i) |
- key.array.push(WebInspector.IndexedDBModel.keyFromIDBKey(idbKey[i])); |
- type = WebInspector.IndexedDBModel.KeyTypes.ArrayType; |
+ key.array = []; |
+ for (var i = 0; i < idbKey.length; ++i) |
+ key.array.push(WebInspector.IndexedDBModel.keyFromIDBKey(idbKey[i])); |
+ type = WebInspector.IndexedDBModel.KeyTypes.ArrayType; |
} |
break; |
- default: |
+ default: |
return undefined; |
} |
key.type = /** @type {!IndexedDBAgent.KeyType<string>} */ (type); |
return key; |
-}; |
+ } |
-/** |
- * @param {?IDBKeyRange=} idbKeyRange |
- * @return {?IndexedDBAgent.KeyRange} |
- * eturn {?{lower: ?Object, upper: ?Object, lowerOpen: *, upperOpen: *}} |
- */ |
-WebInspector.IndexedDBModel.keyRangeFromIDBKeyRange = function(idbKeyRange) |
-{ |
- if (typeof idbKeyRange === "undefined" || idbKeyRange === null) |
- return null; |
+ /** |
+ * @param {?IDBKeyRange=} idbKeyRange |
+ * @return {?IndexedDBAgent.KeyRange} |
+ * eturn {?{lower: ?Object, upper: ?Object, lowerOpen: *, upperOpen: *}} |
+ */ |
+ static keyRangeFromIDBKeyRange(idbKeyRange) { |
+ if (typeof idbKeyRange === 'undefined' || idbKeyRange === null) |
+ return null; |
var keyRange = {}; |
keyRange.lower = WebInspector.IndexedDBModel.keyFromIDBKey(idbKeyRange.lower); |
@@ -119,435 +104,440 @@ WebInspector.IndexedDBModel.keyRangeFromIDBKeyRange = function(idbKeyRange) |
keyRange.lowerOpen = !!idbKeyRange.lowerOpen; |
keyRange.upperOpen = !!idbKeyRange.upperOpen; |
return keyRange; |
-}; |
+ } |
-/** |
- * @param {!IndexedDBAgent.KeyPath} keyPath |
- * @return {?string|!Array.<string>|undefined} |
- */ |
-WebInspector.IndexedDBModel.idbKeyPathFromKeyPath = function(keyPath) |
-{ |
+ /** |
+ * @param {!IndexedDBAgent.KeyPath} keyPath |
+ * @return {?string|!Array.<string>|undefined} |
+ */ |
+ static idbKeyPathFromKeyPath(keyPath) { |
var idbKeyPath; |
switch (keyPath.type) { |
- case WebInspector.IndexedDBModel.KeyPathTypes.NullType: |
+ case WebInspector.IndexedDBModel.KeyPathTypes.NullType: |
idbKeyPath = null; |
break; |
- case WebInspector.IndexedDBModel.KeyPathTypes.StringType: |
+ case WebInspector.IndexedDBModel.KeyPathTypes.StringType: |
idbKeyPath = keyPath.string; |
break; |
- case WebInspector.IndexedDBModel.KeyPathTypes.ArrayType: |
+ case WebInspector.IndexedDBModel.KeyPathTypes.ArrayType: |
idbKeyPath = keyPath.array; |
break; |
} |
return idbKeyPath; |
-}; |
- |
-/** |
- * @param {?string|!Array.<string>|undefined} idbKeyPath |
- * @return {?string} |
- */ |
-WebInspector.IndexedDBModel.keyPathStringFromIDBKeyPath = function(idbKeyPath) |
-{ |
- if (typeof idbKeyPath === "string") |
- return "\"" + idbKeyPath + "\""; |
+ } |
+ |
+ /** |
+ * @param {?string|!Array.<string>|undefined} idbKeyPath |
+ * @return {?string} |
+ */ |
+ static keyPathStringFromIDBKeyPath(idbKeyPath) { |
+ if (typeof idbKeyPath === 'string') |
+ return '"' + idbKeyPath + '"'; |
if (idbKeyPath instanceof Array) |
- return "[\"" + idbKeyPath.join("\", \"") + "\"]"; |
+ return '["' + idbKeyPath.join('", "') + '"]'; |
return null; |
-}; |
- |
-/** @enum {symbol} */ |
-WebInspector.IndexedDBModel.Events = { |
- DatabaseAdded: Symbol("DatabaseAdded"), |
- DatabaseRemoved: Symbol("DatabaseRemoved"), |
- DatabaseLoaded: Symbol("DatabaseLoaded") |
-}; |
- |
-WebInspector.IndexedDBModel.prototype = { |
- enable: function() |
- { |
- if (this._enabled) |
- return; |
- |
- this._agent.enable(); |
- this._securityOriginManager.addEventListener(WebInspector.SecurityOriginManager.Events.SecurityOriginAdded, this._securityOriginAdded, this); |
- this._securityOriginManager.addEventListener(WebInspector.SecurityOriginManager.Events.SecurityOriginRemoved, this._securityOriginRemoved, this); |
- |
- for (var securityOrigin of this._securityOriginManager.securityOrigins()) |
- this._addOrigin(securityOrigin); |
- |
- this._enabled = true; |
- }, |
- |
- /** |
- * @param {string} origin |
- */ |
- clearForOrigin: function(origin) |
- { |
- if (!this._enabled) |
- return; |
- |
- this._removeOrigin(origin); |
- this._addOrigin(origin); |
- }, |
- |
- refreshDatabaseNames: function() |
- { |
- for (var securityOrigin in this._databaseNamesBySecurityOrigin) |
- this._loadDatabaseNames(securityOrigin); |
- }, |
- |
- /** |
- * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId |
- */ |
- refreshDatabase: function(databaseId) |
- { |
- this._loadDatabase(databaseId); |
- }, |
- |
- /** |
- * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId |
- * @param {string} objectStoreName |
- * @param {function()} callback |
- */ |
- clearObjectStore: function(databaseId, objectStoreName, callback) |
- { |
- this._agent.clearObjectStore(databaseId.securityOrigin, databaseId.name, objectStoreName, callback); |
- }, |
- |
- /** |
- * @param {!WebInspector.Event} event |
- */ |
- _securityOriginAdded: function(event) |
- { |
- var securityOrigin = /** @type {string} */ (event.data); |
- this._addOrigin(securityOrigin); |
- }, |
- |
- /** |
- * @param {!WebInspector.Event} event |
- */ |
- _securityOriginRemoved: function(event) |
- { |
- var securityOrigin = /** @type {string} */ (event.data); |
- this._removeOrigin(securityOrigin); |
- }, |
- |
- /** |
- * @param {string} securityOrigin |
- */ |
- _addOrigin: function(securityOrigin) |
- { |
- console.assert(!this._databaseNamesBySecurityOrigin[securityOrigin]); |
- this._databaseNamesBySecurityOrigin[securityOrigin] = []; |
- this._loadDatabaseNames(securityOrigin); |
- }, |
- |
- /** |
- * @param {string} securityOrigin |
- */ |
- _removeOrigin: function(securityOrigin) |
- { |
- console.assert(this._databaseNamesBySecurityOrigin[securityOrigin]); |
- for (var i = 0; i < this._databaseNamesBySecurityOrigin[securityOrigin].length; ++i) |
- this._databaseRemoved(securityOrigin, this._databaseNamesBySecurityOrigin[securityOrigin][i]); |
- delete this._databaseNamesBySecurityOrigin[securityOrigin]; |
- }, |
+ } |
+ /** |
+ * @param {!WebInspector.Target} target |
+ * @return {!WebInspector.IndexedDBModel} |
+ */ |
+ static fromTarget(target) { |
+ var model = /** @type {?WebInspector.IndexedDBModel} */ (target.model(WebInspector.IndexedDBModel)); |
+ if (!model) |
+ model = new WebInspector.IndexedDBModel(target, WebInspector.SecurityOriginManager.fromTarget(target)); |
+ return model; |
+ } |
+ |
+ enable() { |
+ if (this._enabled) |
+ return; |
+ |
+ this._agent.enable(); |
+ this._securityOriginManager.addEventListener( |
+ WebInspector.SecurityOriginManager.Events.SecurityOriginAdded, this._securityOriginAdded, this); |
+ this._securityOriginManager.addEventListener( |
+ WebInspector.SecurityOriginManager.Events.SecurityOriginRemoved, this._securityOriginRemoved, this); |
+ |
+ for (var securityOrigin of this._securityOriginManager.securityOrigins()) |
+ this._addOrigin(securityOrigin); |
+ |
+ this._enabled = true; |
+ } |
+ |
+ /** |
+ * @param {string} origin |
+ */ |
+ clearForOrigin(origin) { |
+ if (!this._enabled) |
+ return; |
+ |
+ this._removeOrigin(origin); |
+ this._addOrigin(origin); |
+ } |
+ |
+ refreshDatabaseNames() { |
+ for (var securityOrigin in this._databaseNamesBySecurityOrigin) |
+ this._loadDatabaseNames(securityOrigin); |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId |
+ */ |
+ refreshDatabase(databaseId) { |
+ this._loadDatabase(databaseId); |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId |
+ * @param {string} objectStoreName |
+ * @param {function()} callback |
+ */ |
+ clearObjectStore(databaseId, objectStoreName, callback) { |
+ this._agent.clearObjectStore(databaseId.securityOrigin, databaseId.name, objectStoreName, callback); |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.Event} event |
+ */ |
+ _securityOriginAdded(event) { |
+ var securityOrigin = /** @type {string} */ (event.data); |
+ this._addOrigin(securityOrigin); |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.Event} event |
+ */ |
+ _securityOriginRemoved(event) { |
+ var securityOrigin = /** @type {string} */ (event.data); |
+ this._removeOrigin(securityOrigin); |
+ } |
+ |
+ /** |
+ * @param {string} securityOrigin |
+ */ |
+ _addOrigin(securityOrigin) { |
+ console.assert(!this._databaseNamesBySecurityOrigin[securityOrigin]); |
+ this._databaseNamesBySecurityOrigin[securityOrigin] = []; |
+ this._loadDatabaseNames(securityOrigin); |
+ } |
+ |
+ /** |
+ * @param {string} securityOrigin |
+ */ |
+ _removeOrigin(securityOrigin) { |
+ console.assert(this._databaseNamesBySecurityOrigin[securityOrigin]); |
+ for (var i = 0; i < this._databaseNamesBySecurityOrigin[securityOrigin].length; ++i) |
+ this._databaseRemoved(securityOrigin, this._databaseNamesBySecurityOrigin[securityOrigin][i]); |
+ delete this._databaseNamesBySecurityOrigin[securityOrigin]; |
+ } |
+ |
+ /** |
+ * @param {string} securityOrigin |
+ * @param {!Array.<string>} databaseNames |
+ */ |
+ _updateOriginDatabaseNames(securityOrigin, databaseNames) { |
+ var newDatabaseNames = new Set(databaseNames); |
+ var oldDatabaseNames = new Set(this._databaseNamesBySecurityOrigin[securityOrigin]); |
+ |
+ this._databaseNamesBySecurityOrigin[securityOrigin] = databaseNames; |
+ |
+ for (var databaseName of oldDatabaseNames) { |
+ if (!newDatabaseNames.has(databaseName)) |
+ this._databaseRemoved(securityOrigin, databaseName); |
+ } |
+ for (var databaseName of newDatabaseNames) { |
+ if (!oldDatabaseNames.has(databaseName)) |
+ this._databaseAdded(securityOrigin, databaseName); |
+ } |
+ } |
+ |
+ /** |
+ * @return {!Array.<!WebInspector.IndexedDBModel.DatabaseId>} |
+ */ |
+ databases() { |
+ var result = []; |
+ for (var securityOrigin in this._databaseNamesBySecurityOrigin) { |
+ var databaseNames = this._databaseNamesBySecurityOrigin[securityOrigin]; |
+ for (var i = 0; i < databaseNames.length; ++i) { |
+ result.push(new WebInspector.IndexedDBModel.DatabaseId(securityOrigin, databaseNames[i])); |
+ } |
+ } |
+ return result; |
+ } |
+ |
+ /** |
+ * @param {string} securityOrigin |
+ * @param {string} databaseName |
+ */ |
+ _databaseAdded(securityOrigin, databaseName) { |
+ var databaseId = new WebInspector.IndexedDBModel.DatabaseId(securityOrigin, databaseName); |
+ this.dispatchEventToListeners(WebInspector.IndexedDBModel.Events.DatabaseAdded, databaseId); |
+ } |
+ |
+ /** |
+ * @param {string} securityOrigin |
+ * @param {string} databaseName |
+ */ |
+ _databaseRemoved(securityOrigin, databaseName) { |
+ var databaseId = new WebInspector.IndexedDBModel.DatabaseId(securityOrigin, databaseName); |
+ this.dispatchEventToListeners(WebInspector.IndexedDBModel.Events.DatabaseRemoved, databaseId); |
+ } |
+ |
+ /** |
+ * @param {string} securityOrigin |
+ */ |
+ _loadDatabaseNames(securityOrigin) { |
/** |
- * @param {string} securityOrigin |
+ * @param {?Protocol.Error} error |
* @param {!Array.<string>} databaseNames |
+ * @this {WebInspector.IndexedDBModel} |
*/ |
- _updateOriginDatabaseNames: function(securityOrigin, databaseNames) |
- { |
- var newDatabaseNames = new Set(databaseNames); |
- var oldDatabaseNames = new Set(this._databaseNamesBySecurityOrigin[securityOrigin]); |
- |
- this._databaseNamesBySecurityOrigin[securityOrigin] = databaseNames; |
- |
- for (var databaseName of oldDatabaseNames) { |
- if (!newDatabaseNames.has(databaseName)) |
- this._databaseRemoved(securityOrigin, databaseName); |
- } |
- for (var databaseName of newDatabaseNames) { |
- if (!oldDatabaseNames.has(databaseName)) |
- this._databaseAdded(securityOrigin, databaseName); |
- } |
- }, |
- |
- /** |
- * @return {!Array.<!WebInspector.IndexedDBModel.DatabaseId>} |
- */ |
- databases: function() |
- { |
- var result = []; |
- for (var securityOrigin in this._databaseNamesBySecurityOrigin) { |
- var databaseNames = this._databaseNamesBySecurityOrigin[securityOrigin]; |
- for (var i = 0; i < databaseNames.length; ++i) { |
- result.push(new WebInspector.IndexedDBModel.DatabaseId(securityOrigin, databaseNames[i])); |
- } |
- } |
- return result; |
- }, |
- |
- /** |
- * @param {string} securityOrigin |
- * @param {string} databaseName |
- */ |
- _databaseAdded: function(securityOrigin, databaseName) |
- { |
- var databaseId = new WebInspector.IndexedDBModel.DatabaseId(securityOrigin, databaseName); |
- this.dispatchEventToListeners(WebInspector.IndexedDBModel.Events.DatabaseAdded, databaseId); |
- }, |
+ function callback(error, databaseNames) { |
+ if (error) { |
+ console.error('IndexedDBAgent error: ' + error); |
+ return; |
+ } |
+ |
+ if (!this._databaseNamesBySecurityOrigin[securityOrigin]) |
+ return; |
+ this._updateOriginDatabaseNames(securityOrigin, databaseNames); |
+ } |
- /** |
- * @param {string} securityOrigin |
- * @param {string} databaseName |
- */ |
- _databaseRemoved: function(securityOrigin, databaseName) |
- { |
- var databaseId = new WebInspector.IndexedDBModel.DatabaseId(securityOrigin, databaseName); |
- this.dispatchEventToListeners(WebInspector.IndexedDBModel.Events.DatabaseRemoved, databaseId); |
- }, |
+ this._agent.requestDatabaseNames(securityOrigin, callback.bind(this)); |
+ } |
+ /** |
+ * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId |
+ */ |
+ _loadDatabase(databaseId) { |
/** |
- * @param {string} securityOrigin |
+ * @param {?Protocol.Error} error |
+ * @param {!IndexedDBAgent.DatabaseWithObjectStores} databaseWithObjectStores |
+ * @this {WebInspector.IndexedDBModel} |
*/ |
- _loadDatabaseNames: function(securityOrigin) |
- { |
- /** |
- * @param {?Protocol.Error} error |
- * @param {!Array.<string>} databaseNames |
- * @this {WebInspector.IndexedDBModel} |
- */ |
- function callback(error, databaseNames) |
- { |
- if (error) { |
- console.error("IndexedDBAgent error: " + error); |
- return; |
- } |
- |
- if (!this._databaseNamesBySecurityOrigin[securityOrigin]) |
- return; |
- this._updateOriginDatabaseNames(securityOrigin, databaseNames); |
+ function callback(error, databaseWithObjectStores) { |
+ if (error) { |
+ console.error('IndexedDBAgent error: ' + error); |
+ return; |
+ } |
+ |
+ if (!this._databaseNamesBySecurityOrigin[databaseId.securityOrigin]) |
+ return; |
+ var databaseModel = new WebInspector.IndexedDBModel.Database(databaseId, databaseWithObjectStores.version); |
+ this._databases.set(databaseId, databaseModel); |
+ for (var i = 0; i < databaseWithObjectStores.objectStores.length; ++i) { |
+ var objectStore = databaseWithObjectStores.objectStores[i]; |
+ var objectStoreIDBKeyPath = WebInspector.IndexedDBModel.idbKeyPathFromKeyPath(objectStore.keyPath); |
+ var objectStoreModel = new WebInspector.IndexedDBModel.ObjectStore( |
+ objectStore.name, objectStoreIDBKeyPath, objectStore.autoIncrement); |
+ for (var j = 0; j < objectStore.indexes.length; ++j) { |
+ var index = objectStore.indexes[j]; |
+ var indexIDBKeyPath = WebInspector.IndexedDBModel.idbKeyPathFromKeyPath(index.keyPath); |
+ var indexModel = |
+ new WebInspector.IndexedDBModel.Index(index.name, indexIDBKeyPath, index.unique, index.multiEntry); |
+ objectStoreModel.indexes[indexModel.name] = indexModel; |
} |
+ databaseModel.objectStores[objectStoreModel.name] = objectStoreModel; |
+ } |
- this._agent.requestDatabaseNames(securityOrigin, callback.bind(this)); |
- }, |
+ this.dispatchEventToListeners(WebInspector.IndexedDBModel.Events.DatabaseLoaded, databaseModel); |
+ } |
+ this._agent.requestDatabase(databaseId.securityOrigin, databaseId.name, callback.bind(this)); |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId |
+ * @param {string} objectStoreName |
+ * @param {?IDBKeyRange} idbKeyRange |
+ * @param {number} skipCount |
+ * @param {number} pageSize |
+ * @param {function(!Array.<!WebInspector.IndexedDBModel.Entry>, boolean)} callback |
+ */ |
+ loadObjectStoreData(databaseId, objectStoreName, idbKeyRange, skipCount, pageSize, callback) { |
+ this._requestData(databaseId, databaseId.name, objectStoreName, '', idbKeyRange, skipCount, pageSize, callback); |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId |
+ * @param {string} objectStoreName |
+ * @param {string} indexName |
+ * @param {?IDBKeyRange} idbKeyRange |
+ * @param {number} skipCount |
+ * @param {number} pageSize |
+ * @param {function(!Array.<!WebInspector.IndexedDBModel.Entry>, boolean)} callback |
+ */ |
+ loadIndexData(databaseId, objectStoreName, indexName, idbKeyRange, skipCount, pageSize, callback) { |
+ this._requestData( |
+ databaseId, databaseId.name, objectStoreName, indexName, idbKeyRange, skipCount, pageSize, callback); |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId |
+ * @param {string} databaseName |
+ * @param {string} objectStoreName |
+ * @param {string} indexName |
+ * @param {?IDBKeyRange} idbKeyRange |
+ * @param {number} skipCount |
+ * @param {number} pageSize |
+ * @param {function(!Array.<!WebInspector.IndexedDBModel.Entry>, boolean)} callback |
+ */ |
+ _requestData(databaseId, databaseName, objectStoreName, indexName, idbKeyRange, skipCount, pageSize, callback) { |
/** |
- * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId |
+ * @param {?Protocol.Error} error |
+ * @param {!Array.<!IndexedDBAgent.DataEntry>} dataEntries |
+ * @param {boolean} hasMore |
+ * @this {WebInspector.IndexedDBModel} |
*/ |
- _loadDatabase: function(databaseId) |
- { |
- /** |
- * @param {?Protocol.Error} error |
- * @param {!IndexedDBAgent.DatabaseWithObjectStores} databaseWithObjectStores |
- * @this {WebInspector.IndexedDBModel} |
- */ |
- function callback(error, databaseWithObjectStores) |
- { |
- if (error) { |
- console.error("IndexedDBAgent error: " + error); |
- return; |
- } |
- |
- if (!this._databaseNamesBySecurityOrigin[databaseId.securityOrigin]) |
- return; |
- var databaseModel = new WebInspector.IndexedDBModel.Database(databaseId, databaseWithObjectStores.version); |
- this._databases.set(databaseId, databaseModel); |
- for (var i = 0; i < databaseWithObjectStores.objectStores.length; ++i) { |
- var objectStore = databaseWithObjectStores.objectStores[i]; |
- var objectStoreIDBKeyPath = WebInspector.IndexedDBModel.idbKeyPathFromKeyPath(objectStore.keyPath); |
- var objectStoreModel = new WebInspector.IndexedDBModel.ObjectStore(objectStore.name, objectStoreIDBKeyPath, objectStore.autoIncrement); |
- for (var j = 0; j < objectStore.indexes.length; ++j) { |
- var index = objectStore.indexes[j]; |
- var indexIDBKeyPath = WebInspector.IndexedDBModel.idbKeyPathFromKeyPath(index.keyPath); |
- var indexModel = new WebInspector.IndexedDBModel.Index(index.name, indexIDBKeyPath, index.unique, index.multiEntry); |
- objectStoreModel.indexes[indexModel.name] = indexModel; |
- } |
- databaseModel.objectStores[objectStoreModel.name] = objectStoreModel; |
- } |
- |
- this.dispatchEventToListeners(WebInspector.IndexedDBModel.Events.DatabaseLoaded, databaseModel); |
- } |
- |
- this._agent.requestDatabase(databaseId.securityOrigin, databaseId.name, callback.bind(this)); |
- }, |
+ function innerCallback(error, dataEntries, hasMore) { |
+ if (error) { |
+ console.error('IndexedDBAgent error: ' + error); |
+ return; |
+ } |
+ |
+ if (!this._databaseNamesBySecurityOrigin[databaseId.securityOrigin]) |
+ return; |
+ var entries = []; |
+ for (var i = 0; i < dataEntries.length; ++i) { |
+ var key = this.target().runtimeModel.createRemoteObject(dataEntries[i].key); |
+ var primaryKey = this.target().runtimeModel.createRemoteObject(dataEntries[i].primaryKey); |
+ var value = this.target().runtimeModel.createRemoteObject(dataEntries[i].value); |
+ entries.push(new WebInspector.IndexedDBModel.Entry(key, primaryKey, value)); |
+ } |
+ callback(entries, hasMore); |
+ } |
- /** |
- * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId |
- * @param {string} objectStoreName |
- * @param {?IDBKeyRange} idbKeyRange |
- * @param {number} skipCount |
- * @param {number} pageSize |
- * @param {function(!Array.<!WebInspector.IndexedDBModel.Entry>, boolean)} callback |
- */ |
- loadObjectStoreData: function(databaseId, objectStoreName, idbKeyRange, skipCount, pageSize, callback) |
- { |
- this._requestData(databaseId, databaseId.name, objectStoreName, "", idbKeyRange, skipCount, pageSize, callback); |
- }, |
+ var keyRange = WebInspector.IndexedDBModel.keyRangeFromIDBKeyRange(idbKeyRange); |
+ this._agent.requestData( |
+ databaseId.securityOrigin, databaseName, objectStoreName, indexName, skipCount, pageSize, |
+ keyRange ? keyRange : undefined, innerCallback.bind(this)); |
+ } |
+}; |
- /** |
- * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId |
- * @param {string} objectStoreName |
- * @param {string} indexName |
- * @param {?IDBKeyRange} idbKeyRange |
- * @param {number} skipCount |
- * @param {number} pageSize |
- * @param {function(!Array.<!WebInspector.IndexedDBModel.Entry>, boolean)} callback |
- */ |
- loadIndexData: function(databaseId, objectStoreName, indexName, idbKeyRange, skipCount, pageSize, callback) |
- { |
- this._requestData(databaseId, databaseId.name, objectStoreName, indexName, idbKeyRange, skipCount, pageSize, callback); |
- }, |
+WebInspector.IndexedDBModel.KeyTypes = { |
+ NumberType: 'number', |
+ StringType: 'string', |
+ DateType: 'date', |
+ ArrayType: 'array' |
+}; |
- /** |
- * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId |
- * @param {string} databaseName |
- * @param {string} objectStoreName |
- * @param {string} indexName |
- * @param {?IDBKeyRange} idbKeyRange |
- * @param {number} skipCount |
- * @param {number} pageSize |
- * @param {function(!Array.<!WebInspector.IndexedDBModel.Entry>, boolean)} callback |
- */ |
- _requestData: function(databaseId, databaseName, objectStoreName, indexName, idbKeyRange, skipCount, pageSize, callback) |
- { |
- /** |
- * @param {?Protocol.Error} error |
- * @param {!Array.<!IndexedDBAgent.DataEntry>} dataEntries |
- * @param {boolean} hasMore |
- * @this {WebInspector.IndexedDBModel} |
- */ |
- function innerCallback(error, dataEntries, hasMore) |
- { |
- if (error) { |
- console.error("IndexedDBAgent error: " + error); |
- return; |
- } |
- |
- if (!this._databaseNamesBySecurityOrigin[databaseId.securityOrigin]) |
- return; |
- var entries = []; |
- for (var i = 0; i < dataEntries.length; ++i) { |
- var key = this.target().runtimeModel.createRemoteObject(dataEntries[i].key); |
- var primaryKey = this.target().runtimeModel.createRemoteObject(dataEntries[i].primaryKey); |
- var value = this.target().runtimeModel.createRemoteObject(dataEntries[i].value); |
- entries.push(new WebInspector.IndexedDBModel.Entry(key, primaryKey, value)); |
- } |
- callback(entries, hasMore); |
- } |
+WebInspector.IndexedDBModel.KeyPathTypes = { |
+ NullType: 'null', |
+ StringType: 'string', |
+ ArrayType: 'array' |
+}; |
- var keyRange = WebInspector.IndexedDBModel.keyRangeFromIDBKeyRange(idbKeyRange); |
- this._agent.requestData(databaseId.securityOrigin, databaseName, objectStoreName, indexName, skipCount, pageSize, keyRange ? keyRange : undefined, innerCallback.bind(this)); |
- }, |
- __proto__: WebInspector.SDKModel.prototype |
+/** @enum {symbol} */ |
+WebInspector.IndexedDBModel.Events = { |
+ DatabaseAdded: Symbol('DatabaseAdded'), |
+ DatabaseRemoved: Symbol('DatabaseRemoved'), |
+ DatabaseLoaded: Symbol('DatabaseLoaded') |
}; |
/** |
- * @constructor |
- * @param {!WebInspector.RemoteObject} key |
- * @param {!WebInspector.RemoteObject} primaryKey |
- * @param {!WebInspector.RemoteObject} value |
+ * @unrestricted |
*/ |
-WebInspector.IndexedDBModel.Entry = function(key, primaryKey, value) |
-{ |
+WebInspector.IndexedDBModel.Entry = class { |
+ /** |
+ * @param {!WebInspector.RemoteObject} key |
+ * @param {!WebInspector.RemoteObject} primaryKey |
+ * @param {!WebInspector.RemoteObject} value |
+ */ |
+ constructor(key, primaryKey, value) { |
this.key = key; |
this.primaryKey = primaryKey; |
this.value = value; |
+ } |
}; |
/** |
- * @constructor |
- * @param {string} securityOrigin |
- * @param {string} name |
+ * @unrestricted |
*/ |
-WebInspector.IndexedDBModel.DatabaseId = function(securityOrigin, name) |
-{ |
+WebInspector.IndexedDBModel.DatabaseId = class { |
+ /** |
+ * @param {string} securityOrigin |
+ * @param {string} name |
+ */ |
+ constructor(securityOrigin, name) { |
this.securityOrigin = securityOrigin; |
this.name = name; |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId |
+ * @return {boolean} |
+ */ |
+ equals(databaseId) { |
+ return this.name === databaseId.name && this.securityOrigin === databaseId.securityOrigin; |
+ } |
}; |
-WebInspector.IndexedDBModel.DatabaseId.prototype = { |
- /** |
- * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId |
- * @return {boolean} |
- */ |
- equals: function(databaseId) |
- { |
- return this.name === databaseId.name && this.securityOrigin === databaseId.securityOrigin; |
- }, |
-}; |
/** |
- * @constructor |
- * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId |
- * @param {number} version |
+ * @unrestricted |
*/ |
-WebInspector.IndexedDBModel.Database = function(databaseId, version) |
-{ |
+WebInspector.IndexedDBModel.Database = class { |
+ /** |
+ * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId |
+ * @param {number} version |
+ */ |
+ constructor(databaseId, version) { |
this.databaseId = databaseId; |
this.version = version; |
this.objectStores = {}; |
+ } |
}; |
/** |
- * @constructor |
- * @param {string} name |
- * @param {*} keyPath |
- * @param {boolean} autoIncrement |
+ * @unrestricted |
*/ |
-WebInspector.IndexedDBModel.ObjectStore = function(name, keyPath, autoIncrement) |
-{ |
+WebInspector.IndexedDBModel.ObjectStore = class { |
+ /** |
+ * @param {string} name |
+ * @param {*} keyPath |
+ * @param {boolean} autoIncrement |
+ */ |
+ constructor(name, keyPath, autoIncrement) { |
this.name = name; |
this.keyPath = keyPath; |
this.autoIncrement = autoIncrement; |
this.indexes = {}; |
-}; |
- |
-WebInspector.IndexedDBModel.ObjectStore.prototype = { |
- /** |
- * @type {string} |
- */ |
- get keyPathString() |
- { |
- return WebInspector.IndexedDBModel.keyPathStringFromIDBKeyPath(this.keyPath); |
- } |
+ } |
+ |
+ /** |
+ * @return {string} |
+ */ |
+ get keyPathString() { |
+ return /** @type {string}*/ ( |
+ WebInspector.IndexedDBModel.keyPathStringFromIDBKeyPath(/** @type {string}*/ (this.keyPath))); |
+ } |
}; |
/** |
- * @constructor |
- * @param {string} name |
- * @param {*} keyPath |
- * @param {boolean} unique |
- * @param {boolean} multiEntry |
+ * @unrestricted |
*/ |
-WebInspector.IndexedDBModel.Index = function(name, keyPath, unique, multiEntry) |
-{ |
+WebInspector.IndexedDBModel.Index = class { |
+ /** |
+ * @param {string} name |
+ * @param {*} keyPath |
+ * @param {boolean} unique |
+ * @param {boolean} multiEntry |
+ */ |
+ constructor(name, keyPath, unique, multiEntry) { |
this.name = name; |
this.keyPath = keyPath; |
this.unique = unique; |
this.multiEntry = multiEntry; |
+ } |
+ |
+ /** |
+ * @return {string} |
+ */ |
+ get keyPathString() { |
+ return /** @type {string}*/ ( |
+ WebInspector.IndexedDBModel.keyPathStringFromIDBKeyPath(/** @type {string}*/ (this.keyPath))); |
+ } |
}; |
-WebInspector.IndexedDBModel.Index.prototype = { |
- /** |
- * @type {string} |
- */ |
- get keyPathString() |
- { |
- return WebInspector.IndexedDBModel.keyPathStringFromIDBKeyPath(this.keyPath); |
- } |
-}; |
-/** |
- * @param {!WebInspector.Target} target |
- * @return {!WebInspector.IndexedDBModel} |
- */ |
-WebInspector.IndexedDBModel.fromTarget = function(target) |
-{ |
- var model = /** @type {?WebInspector.IndexedDBModel} */ (target.model(WebInspector.IndexedDBModel)); |
- if (!model) |
- model = new WebInspector.IndexedDBModel(target, WebInspector.SecurityOriginManager.fromTarget(target)); |
- return model; |
-}; |