Commit e3e8f25e authored by jsbell@chromium.org's avatar jsbell@chromium.org

IndexedDB: Make IndexedDBDatabaseError non-RefCounted

BUG=234278
R=alecflett@chromium.org

Review URL: https://chromiumcodereview.appspot.com/15927032

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@204080 0039d316-1c4b-4281-b951-d872f2087c98
parent aba67044
...@@ -29,11 +29,10 @@ IndexedDBCallbacksWrapper::IndexedDBCallbacksWrapper( ...@@ -29,11 +29,10 @@ IndexedDBCallbacksWrapper::IndexedDBCallbacksWrapper(
IndexedDBCallbacksWrapper::~IndexedDBCallbacksWrapper() {} IndexedDBCallbacksWrapper::~IndexedDBCallbacksWrapper() {}
void IndexedDBCallbacksWrapper::OnError( void IndexedDBCallbacksWrapper::OnError(const IndexedDBDatabaseError& error) {
scoped_refptr<IndexedDBDatabaseError> error) {
DCHECK(callbacks_); DCHECK(callbacks_);
callbacks_->onError( callbacks_->onError(
WebKit::WebIDBDatabaseError(error->code(), error->message())); WebKit::WebIDBDatabaseError(error.code(), error.message()));
callbacks_.reset(); callbacks_.reset();
} }
......
...@@ -34,7 +34,7 @@ class CONTENT_EXPORT IndexedDBCallbacksWrapper ...@@ -34,7 +34,7 @@ class CONTENT_EXPORT IndexedDBCallbacksWrapper
return make_scoped_refptr(new IndexedDBCallbacksWrapper(callbacks)); return make_scoped_refptr(new IndexedDBCallbacksWrapper(callbacks));
} }
virtual void OnError(scoped_refptr<IndexedDBDatabaseError> error); virtual void OnError(const IndexedDBDatabaseError& error);
// From IDBFactory.webkitGetDatabaseNames() // From IDBFactory.webkitGetDatabaseNames()
virtual void OnSuccess(const std::vector<string16>& string); virtual void OnSuccess(const std::vector<string16>& string);
// From IDBObjectStore/IDBIndex.openCursor(), // From IDBObjectStore/IDBIndex.openCursor(),
......
...@@ -47,7 +47,7 @@ class IndexedDBDatabase : public base::RefCounted<IndexedDBDatabase> { ...@@ -47,7 +47,7 @@ class IndexedDBDatabase : public base::RefCounted<IndexedDBDatabase> {
virtual void Commit(int64 transaction_id) = 0; virtual void Commit(int64 transaction_id) = 0;
virtual void Abort(int64 transaction_id) = 0; virtual void Abort(int64 transaction_id) = 0;
virtual void Abort(int64 transaction_id, virtual void Abort(int64 transaction_id,
scoped_refptr<IndexedDBDatabaseError> error) = 0; const IndexedDBDatabaseError& error) = 0;
virtual void CreateIndex(int64 transaction_id, virtual void CreateIndex(int64 transaction_id,
int64 object_store_id, int64 object_store_id,
......
...@@ -26,12 +26,12 @@ void IndexedDBDatabaseCallbacksWrapper::OnVersionChange(int64 old_version, ...@@ -26,12 +26,12 @@ void IndexedDBDatabaseCallbacksWrapper::OnVersionChange(int64 old_version,
void IndexedDBDatabaseCallbacksWrapper::OnAbort( void IndexedDBDatabaseCallbacksWrapper::OnAbort(
int64 transaction_id, int64 transaction_id,
scoped_refptr<IndexedDBDatabaseError> error) { const IndexedDBDatabaseError& error) {
if (!callbacks_) if (!callbacks_)
return; return;
callbacks_->onAbort( callbacks_->onAbort(
transaction_id, transaction_id,
WebKit::WebIDBDatabaseError(error->code(), error->message())); WebKit::WebIDBDatabaseError(error.code(), error.message()));
} }
void IndexedDBDatabaseCallbacksWrapper::OnComplete(int64 transaction_id) { void IndexedDBDatabaseCallbacksWrapper::OnComplete(int64 transaction_id) {
if (!callbacks_) if (!callbacks_)
......
...@@ -27,7 +27,7 @@ class CONTENT_EXPORT IndexedDBDatabaseCallbacksWrapper ...@@ -27,7 +27,7 @@ class CONTENT_EXPORT IndexedDBDatabaseCallbacksWrapper
virtual void OnVersionChange(int64 old_version, int64 new_version); virtual void OnVersionChange(int64 old_version, int64 new_version);
virtual void OnAbort(int64 transaction_id, virtual void OnAbort(int64 transaction_id,
scoped_refptr<IndexedDBDatabaseError> error); const IndexedDBDatabaseError& error);
virtual void OnComplete(int64 transaction_id); virtual void OnComplete(int64 transaction_id);
protected: protected:
......
...@@ -6,34 +6,26 @@ ...@@ -6,34 +6,26 @@
#define CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_DATABASE_ERROR_H_ #define CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_DATABASE_ERROR_H_
#include "base/basictypes.h" #include "base/basictypes.h"
#include "base/logging.h"
#include "base/memory/ref_counted.h"
#include "base/string16.h" #include "base/string16.h"
#include "base/strings/utf_string_conversions.h"
#include "third_party/WebKit/public/platform/WebIDBDatabaseError.h" #include "third_party/WebKit/public/platform/WebIDBDatabaseError.h"
namespace content { namespace content {
class IndexedDBDatabaseError : public base::RefCounted<IndexedDBDatabaseError> { class IndexedDBDatabaseError {
public: public:
static scoped_refptr<IndexedDBDatabaseError> Create(uint16 code, IndexedDBDatabaseError(uint16 code, const char* message)
const string16& message) { : code_(code), message_(ASCIIToUTF16(message)) {}
// TODO(jsbell): Assert that this is a valid WebIDBDatabaseException code. IndexedDBDatabaseError(uint16 code, const string16& message)
return make_scoped_refptr(new IndexedDBDatabaseError(code, message)); : code_(code), message_(message) {}
} IndexedDBDatabaseError(const WebKit::WebIDBDatabaseError& other)
static scoped_refptr<IndexedDBDatabaseError> Create( : code_(other.code()), message_(other.message()) {}
const WebKit::WebIDBDatabaseError& other) { ~IndexedDBDatabaseError() {}
return make_scoped_refptr(
new IndexedDBDatabaseError(other.code(), other.message()));
}
uint16 code() const { return code_; } uint16 code() const { return code_; }
const string16& message() const { return message_; } const string16& message() const { return message_; }
private: private:
IndexedDBDatabaseError(uint16 code, const string16& message)
: code_(code), message_(message) {}
~IndexedDBDatabaseError() {}
friend class base::RefCounted<IndexedDBDatabaseError>;
const uint16 code_; const uint16 code_;
const string16 message_; const string16 message_;
}; };
......
...@@ -549,14 +549,10 @@ void CreateObjectStoreOperation::Perform(IndexedDBTransaction* transaction) { ...@@ -549,14 +549,10 @@ void CreateObjectStoreOperation::Perform(IndexedDBTransaction* transaction) {
object_store_metadata_.name, object_store_metadata_.name,
object_store_metadata_.key_path, object_store_metadata_.key_path,
object_store_metadata_.auto_increment)) { object_store_metadata_.auto_increment)) {
string16 error_string = transaction->Abort(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionUnknownError,
ASCIIToUTF16("Internal error creating object store '") + ASCIIToUTF16("Internal error creating object store '") +
object_store_metadata_.name + ASCIIToUTF16("'."); object_store_metadata_.name + ASCIIToUTF16("'.")));
scoped_refptr<IndexedDBDatabaseError> error =
IndexedDBDatabaseError::Create(
WebKit::WebIDBDatabaseExceptionUnknownError, error_string);
transaction->Abort(error);
return; return;
} }
} }
...@@ -625,7 +621,7 @@ void CreateIndexOperation::Perform(IndexedDBTransaction* transaction) { ...@@ -625,7 +621,7 @@ void CreateIndexOperation::Perform(IndexedDBTransaction* transaction) {
index_metadata_.multi_entry)) { index_metadata_.multi_entry)) {
string16 error_string = ASCIIToUTF16("Internal error creating index '") + string16 error_string = ASCIIToUTF16("Internal error creating index '") +
index_metadata_.name + ASCIIToUTF16("'."); index_metadata_.name + ASCIIToUTF16("'.");
transaction->Abort(IndexedDBDatabaseError::Create( transaction->Abort(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionUnknownError, error_string)); WebKit::WebIDBDatabaseExceptionUnknownError, error_string));
return; return;
} }
...@@ -672,10 +668,8 @@ void DeleteIndexOperation::Perform(IndexedDBTransaction* transaction) { ...@@ -672,10 +668,8 @@ void DeleteIndexOperation::Perform(IndexedDBTransaction* transaction) {
if (!ok) { if (!ok) {
string16 error_string = ASCIIToUTF16("Internal error deleting index '") + string16 error_string = ASCIIToUTF16("Internal error deleting index '") +
index_metadata_.name + ASCIIToUTF16("'."); index_metadata_.name + ASCIIToUTF16("'.");
scoped_refptr<IndexedDBDatabaseError> error = transaction->Abort(IndexedDBDatabaseError(
IndexedDBDatabaseError::Create( WebKit::WebIDBDatabaseExceptionUnknownError, error_string));
WebKit::WebIDBDatabaseExceptionUnknownError, error_string);
transaction->Abort(error);
} }
} }
...@@ -703,7 +697,7 @@ void IndexedDBDatabaseImpl::Abort(int64 transaction_id) { ...@@ -703,7 +697,7 @@ void IndexedDBDatabaseImpl::Abort(int64 transaction_id) {
} }
void IndexedDBDatabaseImpl::Abort(int64 transaction_id, void IndexedDBDatabaseImpl::Abort(int64 transaction_id,
scoped_refptr<IndexedDBDatabaseError> error) { const IndexedDBDatabaseError& error) {
// If the transaction is unknown, then it has already been aborted by the // If the transaction is unknown, then it has already been aborted by the
// backend before this call so it is safe to ignore it. // backend before this call so it is safe to ignore it.
if (transactions_.find(transaction_id) != transactions_.end()) if (transactions_.find(transaction_id) != transactions_.end())
...@@ -791,9 +785,9 @@ void GetOperation::Perform(IndexedDBTransaction* transaction) { ...@@ -791,9 +785,9 @@ void GetOperation::Perform(IndexedDBTransaction* transaction) {
*key, *key,
value); value);
if (!ok) { if (!ok) {
callbacks_->OnError(IndexedDBDatabaseError::Create( callbacks_->OnError(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionUnknownError, WebKit::WebIDBDatabaseExceptionUnknownError,
ASCIIToUTF16("Internal error in get_record."))); "Internal error in get_record."));
return; return;
} }
...@@ -820,9 +814,9 @@ void GetOperation::Perform(IndexedDBTransaction* transaction) { ...@@ -820,9 +814,9 @@ void GetOperation::Perform(IndexedDBTransaction* transaction) {
*key, *key,
&primary_key); &primary_key);
if (!ok) { if (!ok) {
callbacks_->OnError(IndexedDBDatabaseError::Create( callbacks_->OnError(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionUnknownError, WebKit::WebIDBDatabaseExceptionUnknownError,
ASCIIToUTF16("Internal error in get_primary_key_via_index."))); "Internal error in get_primary_key_via_index."));
return; return;
} }
if (!primary_key) { if (!primary_key) {
...@@ -843,9 +837,9 @@ void GetOperation::Perform(IndexedDBTransaction* transaction) { ...@@ -843,9 +837,9 @@ void GetOperation::Perform(IndexedDBTransaction* transaction) {
*primary_key, *primary_key,
value); value);
if (!ok) { if (!ok) {
callbacks_->OnError(IndexedDBDatabaseError::Create( callbacks_->OnError(
WebKit::WebIDBDatabaseExceptionUnknownError, IndexedDBDatabaseError(WebKit::WebIDBDatabaseExceptionUnknownError,
ASCIIToUTF16("Internal error in get_record."))); "Internal error in get_record."));
return; return;
} }
...@@ -947,9 +941,9 @@ void PutOperation::Perform(IndexedDBTransaction* transaction) { ...@@ -947,9 +941,9 @@ void PutOperation::Perform(IndexedDBTransaction* transaction) {
backing_store_, transaction, database_id_, object_store_.id); backing_store_, transaction, database_id_, object_store_.id);
key_was_generated = true; key_was_generated = true;
if (!auto_inc_key->IsValid()) { if (!auto_inc_key->IsValid()) {
callbacks_->OnError(IndexedDBDatabaseError::Create( callbacks_->OnError(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionConstraintError, WebKit::WebIDBDatabaseExceptionConstraintError,
ASCIIToUTF16("Maximum key generator value reached."))); "Maximum key generator value reached."));
return; return;
} }
key = auto_inc_key.Pass(); key = auto_inc_key.Pass();
...@@ -970,15 +964,15 @@ void PutOperation::Perform(IndexedDBTransaction* transaction) { ...@@ -970,15 +964,15 @@ void PutOperation::Perform(IndexedDBTransaction* transaction) {
&record_identifier, &record_identifier,
found); found);
if (!ok) { if (!ok) {
callbacks_->OnError(IndexedDBDatabaseError::Create( callbacks_->OnError(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionUnknownError, WebKit::WebIDBDatabaseExceptionUnknownError,
ASCIIToUTF16("Internal error checking key existence."))); "Internal error checking key existence."));
return; return;
} }
if (found) { if (found) {
callbacks_->OnError(IndexedDBDatabaseError::Create( callbacks_->OnError(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionConstraintError, WebKit::WebIDBDatabaseExceptionConstraintError,
ASCIIToUTF16("Key already exists in the object store."))); "Key already exists in the object store."));
return; return;
} }
} }
...@@ -999,14 +993,13 @@ void PutOperation::Perform(IndexedDBTransaction* transaction) { ...@@ -999,14 +993,13 @@ void PutOperation::Perform(IndexedDBTransaction* transaction) {
&error_message, &error_message,
&obeys_constraints); &obeys_constraints);
if (!backing_store_success) { if (!backing_store_success) {
callbacks_->OnError(IndexedDBDatabaseError::Create( callbacks_->OnError(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionUnknownError, WebKit::WebIDBDatabaseExceptionUnknownError,
ASCIIToUTF16( "Internal error: backing store error updating index keys."));
"Internal error: backing store error updating index keys.")));
return; return;
} }
if (!obeys_constraints) { if (!obeys_constraints) {
callbacks_->OnError(IndexedDBDatabaseError::Create( callbacks_->OnError(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionConstraintError, error_message)); WebKit::WebIDBDatabaseExceptionConstraintError, error_message));
return; return;
} }
...@@ -1021,10 +1014,9 @@ void PutOperation::Perform(IndexedDBTransaction* transaction) { ...@@ -1021,10 +1014,9 @@ void PutOperation::Perform(IndexedDBTransaction* transaction) {
value_, value_,
&record_identifier); &record_identifier);
if (!backing_store_success) { if (!backing_store_success) {
callbacks_->OnError(IndexedDBDatabaseError::Create( callbacks_->OnError(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionUnknownError, WebKit::WebIDBDatabaseExceptionUnknownError,
ASCIIToUTF16( "Internal error: backing store error performing put/add."));
"Internal error: backing store error performing put/add.")));
return; return;
} }
...@@ -1047,9 +1039,9 @@ void PutOperation::Perform(IndexedDBTransaction* transaction) { ...@@ -1047,9 +1039,9 @@ void PutOperation::Perform(IndexedDBTransaction* transaction) {
key.get(), key.get(),
!key_was_generated); !key_was_generated);
if (!ok) { if (!ok) {
callbacks_->OnError(IndexedDBDatabaseError::Create( callbacks_->OnError(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionUnknownError, WebKit::WebIDBDatabaseExceptionUnknownError,
ASCIIToUTF16("Internal error updating key generator."))); "Internal error updating key generator."));
return; return;
} }
} }
...@@ -1084,18 +1076,15 @@ void IndexedDBDatabaseImpl::SetIndexKeys( ...@@ -1084,18 +1076,15 @@ void IndexedDBDatabaseImpl::SetIndexKeys(
&record_identifier, &record_identifier,
found); found);
if (!ok) { if (!ok) {
transaction->Abort(IndexedDBDatabaseError::Create( transaction->Abort(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionUnknownError, WebKit::WebIDBDatabaseExceptionUnknownError,
ASCIIToUTF16("Internal error setting index keys."))); "Internal error setting index keys."));
return; return;
} }
if (!found) { if (!found) {
scoped_refptr<IndexedDBDatabaseError> error = transaction->Abort(IndexedDBDatabaseError(
IndexedDBDatabaseError::Create(
WebKit::WebIDBDatabaseExceptionUnknownError, WebKit::WebIDBDatabaseExceptionUnknownError,
ASCIIToUTF16(
"Internal error setting index keys for object store.")); "Internal error setting index keys for object store."));
transaction->Abort(error);
return; return;
} }
...@@ -1119,14 +1108,13 @@ void IndexedDBDatabaseImpl::SetIndexKeys( ...@@ -1119,14 +1108,13 @@ void IndexedDBDatabaseImpl::SetIndexKeys(
&error_message, &error_message,
&obeys_constraints); &obeys_constraints);
if (!backing_store_success) { if (!backing_store_success) {
transaction->Abort(IndexedDBDatabaseError::Create( transaction->Abort(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionUnknownError, WebKit::WebIDBDatabaseExceptionUnknownError,
ASCIIToUTF16( "Internal error: backing store error updating index keys."));
"Internal error: backing store error updating index keys.")));
return; return;
} }
if (!obeys_constraints) { if (!obeys_constraints) {
transaction->Abort(IndexedDBDatabaseError::Create( transaction->Abort(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionConstraintError, error_message)); WebKit::WebIDBDatabaseExceptionConstraintError, error_message));
return; return;
} }
...@@ -1332,9 +1320,9 @@ void DeleteRangeOperation::Perform(IndexedDBTransaction* transaction) { ...@@ -1332,9 +1320,9 @@ void DeleteRangeOperation::Perform(IndexedDBTransaction* transaction) {
database_id_, database_id_,
object_store_id_, object_store_id_,
backing_store_cursor->record_identifier())) { backing_store_cursor->record_identifier())) {
callbacks_->OnError(IndexedDBDatabaseError::Create( callbacks_->OnError(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionUnknownError, WebKit::WebIDBDatabaseExceptionUnknownError,
ASCIIToUTF16("Internal error deleting data in range"))); "Internal error deleting data in range"));
return; return;
} }
} while (backing_store_cursor->ContinueFunction(0)); } while (backing_store_cursor->ContinueFunction(0));
...@@ -1364,9 +1352,9 @@ void ClearOperation::Perform(IndexedDBTransaction* transaction) { ...@@ -1364,9 +1352,9 @@ void ClearOperation::Perform(IndexedDBTransaction* transaction) {
if (!backing_store_->ClearObjectStore(transaction->BackingStoreTransaction(), if (!backing_store_->ClearObjectStore(transaction->BackingStoreTransaction(),
database_id_, database_id_,
object_store_id_)) { object_store_id_)) {
callbacks_->OnError(IndexedDBDatabaseError::Create( callbacks_->OnError(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionUnknownError, WebKit::WebIDBDatabaseExceptionUnknownError,
ASCIIToUTF16("Internal error clearing object store"))); "Internal error clearing object store"));
return; return;
} }
callbacks_->OnSuccess(); callbacks_->OnSuccess();
...@@ -1382,10 +1370,8 @@ void DeleteObjectStoreOperation::Perform(IndexedDBTransaction* transaction) { ...@@ -1382,10 +1370,8 @@ void DeleteObjectStoreOperation::Perform(IndexedDBTransaction* transaction) {
string16 error_string = string16 error_string =
ASCIIToUTF16("Internal error deleting object store '") + ASCIIToUTF16("Internal error deleting object store '") +
object_store_metadata_.name + ASCIIToUTF16("'."); object_store_metadata_.name + ASCIIToUTF16("'.");
scoped_refptr<IndexedDBDatabaseError> error = transaction->Abort(IndexedDBDatabaseError(
IndexedDBDatabaseError::Create( WebKit::WebIDBDatabaseExceptionUnknownError, error_string));
WebKit::WebIDBDatabaseExceptionUnknownError, error_string);
transaction->Abort(error);
} }
} }
...@@ -1400,8 +1386,7 @@ void IndexedDBDatabaseImpl::VersionChangeOperation::Perform( ...@@ -1400,8 +1386,7 @@ void IndexedDBDatabaseImpl::VersionChangeOperation::Perform(
transaction->BackingStoreTransaction(), transaction->BackingStoreTransaction(),
database_id, database_id,
database_->metadata_.int_version)) { database_->metadata_.int_version)) {
scoped_refptr<IndexedDBDatabaseError> error = IndexedDBDatabaseError error(
IndexedDBDatabaseError::Create(
WebKit::WebIDBDatabaseExceptionUnknownError, WebKit::WebIDBDatabaseExceptionUnknownError,
ASCIIToUTF16("Internal error writing data to stable storage when " ASCIIToUTF16("Internal error writing data to stable storage when "
"updating version.")); "updating version."));
...@@ -1440,11 +1425,10 @@ void IndexedDBDatabaseImpl::TransactionFinishedAndAbortFired( ...@@ -1440,11 +1425,10 @@ void IndexedDBDatabaseImpl::TransactionFinishedAndAbortFired(
IndexedDBTransaction* transaction) { IndexedDBTransaction* transaction) {
if (transaction->mode() == indexed_db::TRANSACTION_VERSION_CHANGE) { if (transaction->mode() == indexed_db::TRANSACTION_VERSION_CHANGE) {
if (pending_second_half_open_) { if (pending_second_half_open_) {
pending_second_half_open_->Callbacks() pending_second_half_open_->Callbacks()->OnError(IndexedDBDatabaseError(
->OnError(IndexedDBDatabaseError::Create(
WebKit::WebIDBDatabaseExceptionAbortError, WebKit::WebIDBDatabaseExceptionAbortError,
ASCIIToUTF16("Version change transaction was aborted in " "Version change transaction was aborted in "
"upgradeneeded event handler."))); "upgradeneeded event handler."));
pending_second_half_open_.reset(); pending_second_half_open_.reset();
} }
ProcessPendingCalls(); ProcessPendingCalls();
...@@ -1575,7 +1559,6 @@ void IndexedDBDatabaseImpl::OpenConnection( ...@@ -1575,7 +1559,6 @@ void IndexedDBDatabaseImpl::OpenConnection(
IndexedDBDatabaseMetadata::NO_INT_VERSION); IndexedDBDatabaseMetadata::NO_INT_VERSION);
} else { } else {
string16 message; string16 message;
scoped_refptr<IndexedDBDatabaseError> error;
if (version == IndexedDBDatabaseMetadata::NO_INT_VERSION) if (version == IndexedDBDatabaseMetadata::NO_INT_VERSION)
message = ASCIIToUTF16( message = ASCIIToUTF16(
"Internal error opening database with no version specified."); "Internal error opening database with no version specified.");
...@@ -1583,7 +1566,7 @@ void IndexedDBDatabaseImpl::OpenConnection( ...@@ -1583,7 +1566,7 @@ void IndexedDBDatabaseImpl::OpenConnection(
message = message =
ASCIIToUTF16("Internal error opening database with version ") + ASCIIToUTF16("Internal error opening database with version ") +
Int64ToString16(version); Int64ToString16(version);
callbacks->OnError(IndexedDBDatabaseError::Create( callbacks->OnError(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionUnknownError, message)); WebKit::WebIDBDatabaseExceptionUnknownError, message));
return; return;
} }
...@@ -1623,7 +1606,7 @@ void IndexedDBDatabaseImpl::OpenConnection( ...@@ -1623,7 +1606,7 @@ void IndexedDBDatabaseImpl::OpenConnection(
return; return;
} }
if (version < metadata_.int_version) { if (version < metadata_.int_version) {
callbacks->OnError(IndexedDBDatabaseError::Create( callbacks->OnError(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionVersionError, WebKit::WebIDBDatabaseExceptionVersionError,
ASCIIToUTF16("The requested version (") + Int64ToString16(version) + ASCIIToUTF16("The requested version (") + Int64ToString16(version) +
ASCIIToUTF16(") is less than the existing version (") + ASCIIToUTF16(") is less than the existing version (") +
...@@ -1725,9 +1708,9 @@ void IndexedDBDatabaseImpl::DeleteDatabaseFinal( ...@@ -1725,9 +1708,9 @@ void IndexedDBDatabaseImpl::DeleteDatabaseFinal(
DCHECK(!IsDeleteDatabaseBlocked()); DCHECK(!IsDeleteDatabaseBlocked());
DCHECK(backing_store_); DCHECK(backing_store_);
if (!backing_store_->DeleteDatabase(metadata_.name)) { if (!backing_store_->DeleteDatabase(metadata_.name)) {
callbacks->OnError(IndexedDBDatabaseError::Create( callbacks->OnError(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionUnknownError, WebKit::WebIDBDatabaseExceptionUnknownError,
ASCIIToUTF16("Internal error deleting database."))); "Internal error deleting database."));
return; return;
} }
metadata_.version = kNoStringVersion; metadata_.version = kNoStringVersion;
...@@ -1754,19 +1737,18 @@ void IndexedDBDatabaseImpl::Close( ...@@ -1754,19 +1737,18 @@ void IndexedDBDatabaseImpl::Close(
it != end; it != end;
++it) { ++it) {
if (it->second->connection() == callbacks) if (it->second->connection() == callbacks)
it->second->Abort(IndexedDBDatabaseError::Create( it->second->Abort(
WebKit::WebIDBDatabaseExceptionUnknownError, IndexedDBDatabaseError(WebKit::WebIDBDatabaseExceptionUnknownError,
ASCIIToUTF16("Connection is closing."))); "Connection is closing."));
} }
} }
database_callbacks_set_.erase(callbacks); database_callbacks_set_.erase(callbacks);
if (pending_second_half_open_ && if (pending_second_half_open_ &&
pending_second_half_open_->DatabaseCallbacks() == callbacks) { pending_second_half_open_->DatabaseCallbacks() == callbacks) {
pending_second_half_open_->Callbacks() pending_second_half_open_->Callbacks()->OnError(
->OnError(IndexedDBDatabaseError::Create( IndexedDBDatabaseError(WebKit::WebIDBDatabaseExceptionAbortError,
WebKit::WebIDBDatabaseExceptionAbortError, "The connection was closed."));
ASCIIToUTF16("The connection was closed.")));
pending_second_half_open_.reset(); pending_second_half_open_.reset();
} }
......
...@@ -68,8 +68,8 @@ class CONTENT_EXPORT IndexedDBDatabaseImpl ...@@ -68,8 +68,8 @@ class CONTENT_EXPORT IndexedDBDatabaseImpl
virtual void Commit(int64 transaction_id) OVERRIDE; virtual void Commit(int64 transaction_id) OVERRIDE;
virtual void Abort(int64 transaction_id) OVERRIDE; virtual void Abort(int64 transaction_id) OVERRIDE;
virtual void Abort(int64 transaction_id, virtual void Abort(int64 transaction_id, const IndexedDBDatabaseError& error)
scoped_refptr<IndexedDBDatabaseError> error) OVERRIDE; OVERRIDE;
virtual void CreateIndex(int64 transaction_id, virtual void CreateIndex(int64 transaction_id,
int64 object_store_id, int64 object_store_id,
......
...@@ -47,7 +47,7 @@ class MockIDBCallbacks : public IndexedDBCallbacksWrapper { ...@@ -47,7 +47,7 @@ class MockIDBCallbacks : public IndexedDBCallbacksWrapper {
static scoped_refptr<MockIDBCallbacks> Create() { static scoped_refptr<MockIDBCallbacks> Create() {
return make_scoped_refptr(new MockIDBCallbacks()); return make_scoped_refptr(new MockIDBCallbacks());
} }
virtual void OnError(scoped_refptr<IndexedDBDatabaseError>) OVERRIDE {} virtual void OnError(const IndexedDBDatabaseError& error) OVERRIDE {}
virtual void OnSuccess(const std::vector<string16>&) OVERRIDE {} virtual void OnSuccess(const std::vector<string16>&) OVERRIDE {}
virtual void OnSuccess(scoped_refptr<IndexedDBCursor> cursor, virtual void OnSuccess(scoped_refptr<IndexedDBCursor> cursor,
const IndexedDBKey&, const IndexedDBKey&,
...@@ -87,7 +87,7 @@ class FakeIDBDatabaseCallbacks : public IndexedDBDatabaseCallbacksWrapper { ...@@ -87,7 +87,7 @@ class FakeIDBDatabaseCallbacks : public IndexedDBDatabaseCallbacksWrapper {
virtual void OnVersionChange(int64 old_version, int64 new_version) OVERRIDE {} virtual void OnVersionChange(int64 old_version, int64 new_version) OVERRIDE {}
virtual void OnForcedClose() OVERRIDE {} virtual void OnForcedClose() OVERRIDE {}
virtual void OnAbort(int64 transaction_id, virtual void OnAbort(int64 transaction_id,
scoped_refptr<IndexedDBDatabaseError> error) OVERRIDE {} const IndexedDBDatabaseError& error) OVERRIDE {}
virtual void OnComplete(int64 transaction_id) OVERRIDE {} virtual void OnComplete(int64 transaction_id) OVERRIDE {}
private: private:
...@@ -151,7 +151,7 @@ class MockIDBDatabaseCallbacks : public IndexedDBDatabaseCallbacksWrapper { ...@@ -151,7 +151,7 @@ class MockIDBDatabaseCallbacks : public IndexedDBDatabaseCallbacksWrapper {
virtual void OnVersionChange(int64 old_version, int64 new_version) OVERRIDE {} virtual void OnVersionChange(int64 old_version, int64 new_version) OVERRIDE {}
virtual void OnForcedClose() OVERRIDE {} virtual void OnForcedClose() OVERRIDE {}
virtual void OnAbort(int64 transaction_id, virtual void OnAbort(int64 transaction_id,
scoped_refptr<IndexedDBDatabaseError> error) OVERRIDE { const IndexedDBDatabaseError& error) OVERRIDE {
was_abort_called_ = true; was_abort_called_ = true;
} }
virtual void OnComplete(int64 transaction_id) OVERRIDE {} virtual void OnComplete(int64 transaction_id) OVERRIDE {}
...@@ -176,7 +176,7 @@ class WebIDBDatabaseCallbacksImpl : public WebIDBDatabaseCallbacks { ...@@ -176,7 +176,7 @@ class WebIDBDatabaseCallbacksImpl : public WebIDBDatabaseCallbacks {
} }
virtual void onAbort(long long transaction_id, virtual void onAbort(long long transaction_id,
const WebIDBDatabaseError& error) { const WebIDBDatabaseError& error) {
callbacks_->OnAbort(transaction_id, IndexedDBDatabaseError::Create(error)); callbacks_->OnAbort(transaction_id, IndexedDBDatabaseError(error));
} }
virtual void onComplete(long long transaction_id) { virtual void onComplete(long long transaction_id) {
callbacks_->OnComplete(transaction_id); callbacks_->OnComplete(transaction_id);
......
...@@ -58,10 +58,10 @@ void IndexedDBFactoryImpl::GetDatabaseNames( ...@@ -58,10 +58,10 @@ void IndexedDBFactoryImpl::GetDatabaseNames(
scoped_refptr<IndexedDBBackingStore> backing_store = scoped_refptr<IndexedDBBackingStore> backing_store =
OpenBackingStore(database_identifier, data_directory); OpenBackingStore(database_identifier, data_directory);
if (!backing_store) { if (!backing_store) {
callbacks->OnError(IndexedDBDatabaseError::Create( callbacks->OnError(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionUnknownError, WebKit::WebIDBDatabaseExceptionUnknownError,
ASCIIToUTF16("Internal error opening backing store for " "Internal error opening backing store for "
"indexed_db.webkit_get_database_names."))); "indexed_db.webkit_get_database_names."));
return; return;
} }
...@@ -90,7 +90,7 @@ void IndexedDBFactoryImpl::DeleteDatabase( ...@@ -90,7 +90,7 @@ void IndexedDBFactoryImpl::DeleteDatabase(
scoped_refptr<IndexedDBBackingStore> backing_store = scoped_refptr<IndexedDBBackingStore> backing_store =
OpenBackingStore(database_identifier, data_directory); OpenBackingStore(database_identifier, data_directory);
if (!backing_store) { if (!backing_store) {
callbacks->OnError(IndexedDBDatabaseError::Create( callbacks->OnError(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionUnknownError, WebKit::WebIDBDatabaseExceptionUnknownError,
ASCIIToUTF16("Internal error opening backing store " ASCIIToUTF16("Internal error opening backing store "
"for indexed_db.delete_database."))); "for indexed_db.delete_database.")));
...@@ -101,7 +101,7 @@ void IndexedDBFactoryImpl::DeleteDatabase( ...@@ -101,7 +101,7 @@ void IndexedDBFactoryImpl::DeleteDatabase(
IndexedDBDatabaseImpl::Create( IndexedDBDatabaseImpl::Create(
name, backing_store.get(), this, unique_identifier); name, backing_store.get(), this, unique_identifier);
if (!database_backend) { if (!database_backend) {
callbacks->OnError(IndexedDBDatabaseError::Create( callbacks->OnError(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionUnknownError, WebKit::WebIDBDatabaseExceptionUnknownError,
ASCIIToUTF16("Internal error creating database backend for " ASCIIToUTF16("Internal error creating database backend for "
"indexed_db.delete_database."))); "indexed_db.delete_database.")));
...@@ -168,7 +168,7 @@ void IndexedDBFactoryImpl::Open( ...@@ -168,7 +168,7 @@ void IndexedDBFactoryImpl::Open(
scoped_refptr<IndexedDBBackingStore> backing_store = scoped_refptr<IndexedDBBackingStore> backing_store =
OpenBackingStore(database_identifier, data_directory); OpenBackingStore(database_identifier, data_directory);
if (!backing_store) { if (!backing_store) {
callbacks->OnError(IndexedDBDatabaseError::Create( callbacks->OnError(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionUnknownError, WebKit::WebIDBDatabaseExceptionUnknownError,
ASCIIToUTF16( ASCIIToUTF16(
"Internal error opening backing store for indexedDB.open."))); "Internal error opening backing store for indexedDB.open.")));
...@@ -178,7 +178,7 @@ void IndexedDBFactoryImpl::Open( ...@@ -178,7 +178,7 @@ void IndexedDBFactoryImpl::Open(
database_backend = IndexedDBDatabaseImpl::Create( database_backend = IndexedDBDatabaseImpl::Create(
name, backing_store.get(), this, unique_identifier); name, backing_store.get(), this, unique_identifier);
if (!database_backend) { if (!database_backend) {
callbacks->OnError(IndexedDBDatabaseError::Create( callbacks->OnError(IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionUnknownError, WebKit::WebIDBDatabaseExceptionUnknownError,
ASCIIToUTF16( ASCIIToUTF16(
"Internal error creating database backend for indexedDB.open."))); "Internal error creating database backend for indexedDB.open.")));
......
...@@ -114,12 +114,11 @@ void IndexedDBTransaction::ScheduleTask(IndexedDBDatabase::TaskType type, ...@@ -114,12 +114,11 @@ void IndexedDBTransaction::ScheduleTask(IndexedDBDatabase::TaskType type,
} }
void IndexedDBTransaction::Abort() { void IndexedDBTransaction::Abort() {
Abort(IndexedDBDatabaseError::Create( Abort(IndexedDBDatabaseError(WebKit::WebIDBDatabaseExceptionUnknownError,
WebKit::WebIDBDatabaseExceptionUnknownError, "Internal error (unknown cause)"));
ASCIIToUTF16("Internal error (unknown cause)")));
} }
void IndexedDBTransaction::Abort(scoped_refptr<IndexedDBDatabaseError> error) { void IndexedDBTransaction::Abort(const IndexedDBDatabaseError& error) {
IDB_TRACE("IndexedDBTransaction::abort"); IDB_TRACE("IndexedDBTransaction::abort");
if (state_ == FINISHED) if (state_ == FINISHED)
return; return;
...@@ -255,9 +254,9 @@ void IndexedDBTransaction::Commit() { ...@@ -255,9 +254,9 @@ void IndexedDBTransaction::Commit() {
} else { } else {
callbacks_->OnAbort( callbacks_->OnAbort(
id_, id_,
IndexedDBDatabaseError::Create( IndexedDBDatabaseError(
WebKit::WebIDBDatabaseExceptionUnknownError, WebKit::WebIDBDatabaseExceptionUnknownError,
ASCIIToUTF16("Internal error committing transaction."))); "Internal error committing transaction."));
database_->TransactionFinishedAndAbortFired(this); database_->TransactionFinishedAndAbortFired(this);
} }
......
...@@ -43,7 +43,7 @@ class IndexedDBTransaction : public base::RefCounted<IndexedDBTransaction> { ...@@ -43,7 +43,7 @@ class IndexedDBTransaction : public base::RefCounted<IndexedDBTransaction> {
virtual void Perform(IndexedDBTransaction* transaction) = 0; virtual void Perform(IndexedDBTransaction* transaction) = 0;
}; };
void Abort(scoped_refptr<IndexedDBDatabaseError> error); void Abort(const IndexedDBDatabaseError& error);
void Run(); void Run();
indexed_db::TransactionMode mode() const { return mode_; } indexed_db::TransactionMode mode() const { return mode_; }
const std::set<int64>& scope() const { return object_store_ids_; } const std::set<int64>& scope() const { return object_store_ids_; }
......
...@@ -97,8 +97,7 @@ void WebIDBDatabaseImpl::abort(long long transaction_id) { ...@@ -97,8 +97,7 @@ void WebIDBDatabaseImpl::abort(long long transaction_id) {
void WebIDBDatabaseImpl::abort(long long transaction_id, void WebIDBDatabaseImpl::abort(long long transaction_id,
const WebIDBDatabaseError& error) { const WebIDBDatabaseError& error) {
if (database_backend_) if (database_backend_)
database_backend_->Abort(transaction_id, database_backend_->Abort(transaction_id, IndexedDBDatabaseError(error));
IndexedDBDatabaseError::Create(error));
} }
void WebIDBDatabaseImpl::commit(long long transaction_id) { void WebIDBDatabaseImpl::commit(long long transaction_id) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment