WebInspector.Database = function(id, domain, name, version)
{
this._id = id;
this._domain = domain;
this._name = name;
this._version = version;
}
WebInspector.Database.prototype = {
get id()
{
return this._id;
},
get name()
{
return this._name;
},
set name(x)
{
this._name = x;
},
get version()
{
return this._version;
},
set version(x)
{
this._version = x;
},
get domain()
{
return this._domain;
},
set domain(x)
{
this._domain = x;
},
get displayDomain()
{
return WebInspector.Resource.prototype.__lookupGetter__("displayDomain").call(this);
},
getTableNames: function(callback)
{
function sortingCallback(error, names)
{
if (!error)
callback(names.sort());
}
DatabaseAgent.getDatabaseTableNames(this._id, sortingCallback);
},
executeSql: function(query, onSuccess, onError)
{
function callback(error, success, transactionId)
{
if (error) {
onError(error);
return;
}
if (!success) {
onError(WebInspector.UIString("Database not found."));
return;
}
WebInspector.DatabaseDispatcher._callbacks[transactionId] = {"onSuccess": onSuccess, "onError": onError};
}
DatabaseAgent.executeSQL(this._id, query, callback);
}
}
WebInspector.DatabaseDispatcher = function()
{
}
WebInspector.DatabaseDispatcher._callbacks = {};
WebInspector.DatabaseDispatcher.prototype = {
addDatabase: function(payload)
{
var database = new WebInspector.Database(
payload.id,
payload.domain,
payload.name,
payload.version);
WebInspector.panels.resources.addDatabase(database);
},
sqlTransactionSucceeded: function(transactionId, columnNames, values)
{
if (!WebInspector.DatabaseDispatcher._callbacks[transactionId])
return;
var callback = WebInspector.DatabaseDispatcher._callbacks[transactionId].onSuccess;
delete WebInspector.DatabaseDispatcher._callbacks[transactionId];
if (callback)
callback(columnNames, values);
},
sqlTransactionFailed: function(transactionId, errorObj)
{
if (!WebInspector.DatabaseDispatcher._callbacks[transactionId])
return;
var callback = WebInspector.DatabaseDispatcher._callbacks[transactionId].onError;
delete WebInspector.DatabaseDispatcher._callbacks[transactionId];
if (callback)
callback(errorObj);
}
}
InspectorBackend.registerDomainDispatcher("Database", new WebInspector.DatabaseDispatcher());