summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/WebKit/Source/devtools/front_end/sdk/Database.js
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/WebKit/Source/devtools/front_end/sdk/Database.js')
-rw-r--r--chromium/third_party/WebKit/Source/devtools/front_end/sdk/Database.js215
1 files changed, 215 insertions, 0 deletions
diff --git a/chromium/third_party/WebKit/Source/devtools/front_end/sdk/Database.js b/chromium/third_party/WebKit/Source/devtools/front_end/sdk/Database.js
new file mode 100644
index 00000000000..34364b1e511
--- /dev/null
+++ b/chromium/third_party/WebKit/Source/devtools/front_end/sdk/Database.js
@@ -0,0 +1,215 @@
+/*
+ * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (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
+ * @param {!WebInspector.DatabaseModel} model
+ * @param {string} id
+ * @param {string} domain
+ * @param {string} name
+ * @param {string} version
+ */
+WebInspector.Database = function(model, id, domain, name, version)
+{
+ this._model = model;
+ this._id = id;
+ this._domain = domain;
+ this._name = name;
+ this._version = version;
+}
+
+WebInspector.Database.prototype = {
+ /** @return {string} */
+ get id()
+ {
+ return this._id;
+ },
+
+ /** @return {string} */
+ get name()
+ {
+ return this._name;
+ },
+
+ set name(x)
+ {
+ this._name = x;
+ },
+
+ /** @return {string} */
+ get version()
+ {
+ return this._version;
+ },
+
+ set version(x)
+ {
+ this._version = x;
+ },
+
+ /** @return {string} */
+ get domain()
+ {
+ return this._domain;
+ },
+
+ set domain(x)
+ {
+ this._domain = x;
+ },
+
+ /**
+ * @param {function(!Array.<string>)} callback
+ */
+ getTableNames: function(callback)
+ {
+ function sortingCallback(error, names)
+ {
+ if (!error)
+ callback(names.sort());
+ }
+ this._model._agent.getDatabaseTableNames(this._id, sortingCallback);
+ },
+
+ /**
+ * @param {string} query
+ * @param {function(!Array.<string>=, !Array.<*>=)} onSuccess
+ * @param {function(string)} onError
+ */
+ executeSql: function(query, onSuccess, onError)
+ {
+ /**
+ * @param {?Protocol.Error} error
+ * @param {!Array.<string>=} columnNames
+ * @param {!Array.<*>=} values
+ * @param {!DatabaseAgent.Error=} errorObj
+ */
+ function callback(error, columnNames, values, errorObj)
+ {
+ if (error) {
+ onError(error);
+ return;
+ }
+ if (errorObj) {
+ var message;
+ if (errorObj.message)
+ message = errorObj.message;
+ else if (errorObj.code == 2)
+ message = WebInspector.UIString("Database no longer has expected version.");
+ else
+ message = WebInspector.UIString("An unexpected error %s occurred.", errorObj.code);
+ onError(message);
+ return;
+ }
+ onSuccess(columnNames, values);
+ }
+ this._model._agent.executeSQL(this._id, query, callback);
+ }
+}
+
+/**
+ * @constructor
+ * @extends {WebInspector.TargetAwareObject}
+ * @param {!WebInspector.Target} target
+ */
+WebInspector.DatabaseModel = function(target)
+{
+ WebInspector.TargetAwareObject.call(this, target);
+
+ this._databases = [];
+ target.registerDatabaseDispatcher(new WebInspector.DatabaseDispatcher(this));
+ this._agent = target.databaseAgent();
+ this._agent.enable();
+}
+
+WebInspector.DatabaseModel.Events = {
+ DatabaseAdded: "DatabaseAdded"
+}
+
+WebInspector.DatabaseModel.prototype = {
+ /**
+ * @return {!Array.<!WebInspector.Database>}
+ */
+ databases: function()
+ {
+ var result = [];
+ for (var databaseId in this._databases)
+ result.push(this._databases[databaseId]);
+ return result;
+ },
+
+ /**
+ * @param {!DatabaseAgent.DatabaseId} databaseId
+ * @return {!WebInspector.Database}
+ */
+ databaseForId: function(databaseId)
+ {
+ return this._databases[databaseId];
+ },
+
+ /**
+ * @param {!WebInspector.Database} database
+ */
+ _addDatabase: function(database)
+ {
+ this._databases.push(database);
+ this.dispatchEventToListeners(WebInspector.DatabaseModel.Events.DatabaseAdded, database);
+ },
+
+ __proto__: WebInspector.TargetAwareObject.prototype
+}
+
+/**
+ * @constructor
+ * @implements {DatabaseAgent.Dispatcher}
+ * @param {!WebInspector.DatabaseModel} model
+ */
+WebInspector.DatabaseDispatcher = function(model)
+{
+ this._model = model;
+}
+
+WebInspector.DatabaseDispatcher.prototype = {
+ /**
+ * @param {!DatabaseAgent.Database} payload
+ */
+ addDatabase: function(payload)
+ {
+ this._model._addDatabase(new WebInspector.Database(
+ this._model,
+ payload.id,
+ payload.domain,
+ payload.name,
+ payload.version));
+ }
+}
+
+/**
+ * @type {!WebInspector.DatabaseModel}
+ */
+WebInspector.databaseModel;