| 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;
|
| -};
|
|
|