Index: content/browser/indexed_db/indexed_db_database.cc |
diff --git a/content/browser/indexed_db/indexed_db_database.cc b/content/browser/indexed_db/indexed_db_database.cc |
index 055042042684a0ea5230d10007cd071ca69e9940..b06b636cd6675aa0daedaaf7e61a71075b2368ed 100644 |
--- a/content/browser/indexed_db/indexed_db_database.cc |
+++ b/content/browser/indexed_db/indexed_db_database.cc |
@@ -117,8 +117,8 @@ class IndexedDBDatabase::OpenRequest |
: public IndexedDBDatabase::OpenOrDeleteRequest { |
public: |
OpenRequest(scoped_refptr<IndexedDBDatabase> db, |
- const IndexedDBPendingConnection& pending_connection) |
- : OpenOrDeleteRequest(db), pending_(pending_connection) {} |
+ std::unique_ptr<IndexedDBPendingConnection> pending_connection) |
+ : OpenOrDeleteRequest(db), pending_(std::move(pending_connection)) {} |
void Perform() override { |
if (db_->metadata_.id == kInvalidId) { |
@@ -127,15 +127,15 @@ class IndexedDBDatabase::OpenRequest |
if (!db_->OpenInternal().ok()) { |
// TODO(jsbell): Consider including sanitized leveldb status message. |
base::string16 message; |
- if (pending_.version == IndexedDBDatabaseMetadata::NO_VERSION) { |
+ if (pending_->version == IndexedDBDatabaseMetadata::NO_VERSION) { |
message = ASCIIToUTF16( |
"Internal error opening database with no version specified."); |
} else { |
message = |
ASCIIToUTF16("Internal error opening database with version ") + |
- Int64ToString16(pending_.version); |
+ Int64ToString16(pending_->version); |
} |
- pending_.callbacks->OnError(IndexedDBDatabaseError( |
+ pending_->callbacks->OnError(IndexedDBDatabaseError( |
blink::WebIDBDatabaseExceptionUnknownError, message)); |
db_->RequestComplete(this); |
return; |
@@ -145,7 +145,7 @@ class IndexedDBDatabase::OpenRequest |
} |
const int64_t old_version = db_->metadata_.version; |
- int64_t& new_version = pending_.version; |
+ int64_t& new_version = pending_->version; |
bool is_new_database = old_version == IndexedDBDatabaseMetadata::NO_VERSION; |
@@ -153,9 +153,9 @@ class IndexedDBDatabase::OpenRequest |
// For unit tests only - skip upgrade steps. (Calling from script with |
// DEFAULT_VERSION throws exception.) |
DCHECK(is_new_database); |
- pending_.callbacks->OnSuccess( |
- db_->CreateConnection(pending_.database_callbacks, |
- pending_.child_process_id), |
+ pending_->callbacks->OnSuccess( |
+ db_->CreateConnection(pending_->database_callbacks, |
+ pending_->child_process_id), |
db_->metadata_); |
db_->RequestComplete(this); |
return; |
@@ -164,9 +164,9 @@ class IndexedDBDatabase::OpenRequest |
if (!is_new_database && |
(new_version == old_version || |
new_version == IndexedDBDatabaseMetadata::NO_VERSION)) { |
- pending_.callbacks->OnSuccess( |
- db_->CreateConnection(pending_.database_callbacks, |
- pending_.child_process_id), |
+ pending_->callbacks->OnSuccess( |
+ db_->CreateConnection(pending_->database_callbacks, |
+ pending_->child_process_id), |
db_->metadata_); |
db_->RequestComplete(this); |
return; |
@@ -180,10 +180,10 @@ class IndexedDBDatabase::OpenRequest |
} else if (new_version < old_version) { |
// Requested version is lower than current version - fail the request. |
DCHECK(!is_new_database); |
- pending_.callbacks->OnError(IndexedDBDatabaseError( |
+ pending_->callbacks->OnError(IndexedDBDatabaseError( |
blink::WebIDBDatabaseExceptionVersionError, |
ASCIIToUTF16("The requested version (") + |
- Int64ToString16(pending_.version) + |
+ Int64ToString16(pending_->version) + |
ASCIIToUTF16(") is less than the existing version (") + |
Int64ToString16(db_->metadata_.version) + ASCIIToUTF16(")."))); |
db_->RequestComplete(this); |
@@ -203,8 +203,7 @@ class IndexedDBDatabase::OpenRequest |
// fired at connections that have close_pending set. A "blocked" event |
// will be fired at the request when one of the connections acks that the |
// "versionchange" event was ignored. |
- DCHECK_NE(pending_.callbacks->data_loss_info().status, |
- blink::WebIDBDataLossTotal); |
+ DCHECK_NE(pending_->data_loss_info.status, blink::WebIDBDataLossTotal); |
for (const auto* connection : db_->connections_) |
connection->callbacks()->OnVersionChange(old_version, new_version); |
@@ -212,13 +211,13 @@ class IndexedDBDatabase::OpenRequest |
} |
void OnVersionChangeIgnored() const override { |
- pending_.callbacks->OnBlocked(db_->metadata_.version); |
+ pending_->callbacks->OnBlocked(db_->metadata_.version); |
} |
void OnConnectionClosed(IndexedDBConnection* connection) override { |
// This connection closed prematurely; signal an error and complete. |
- if (connection && connection->callbacks() == pending_.database_callbacks) { |
- pending_.callbacks->OnError( |
+ if (connection && connection->callbacks() == pending_->database_callbacks) { |
+ pending_->callbacks->OnError( |
IndexedDBDatabaseError(blink::WebIDBDatabaseExceptionAbortError, |
"The connection was closed.")); |
db_->RequestComplete(this); |
@@ -235,26 +234,27 @@ class IndexedDBDatabase::OpenRequest |
// IndexedDBDatabase::VersionChangeOperation in order to kick the |
// transaction into the correct state. |
void StartUpgrade() { |
- connection_ = db_->CreateConnection(pending_.database_callbacks, |
- pending_.child_process_id); |
+ connection_ = db_->CreateConnection(pending_->database_callbacks, |
+ pending_->child_process_id); |
DCHECK_EQ(db_->connections_.count(connection_.get()), 1UL); |
std::vector<int64_t> object_store_ids; |
IndexedDBTransaction* transaction = db_->CreateTransaction( |
- pending_.transaction_id, connection_.get(), object_store_ids, |
+ pending_->transaction_id, connection_.get(), object_store_ids, |
blink::WebIDBTransactionModeVersionChange); |
DCHECK(db_->transaction_coordinator_.IsRunningVersionChangeTransaction()); |
transaction->ScheduleTask( |
base::Bind(&IndexedDBDatabase::VersionChangeOperation, db_, |
- pending_.version, pending_.callbacks)); |
+ pending_->version, pending_->callbacks)); |
} |
// Called when the upgrade transaction has started executing. |
void UpgradeTransactionStarted(int64_t old_version) override { |
DCHECK(connection_); |
- pending_.callbacks->OnUpgradeNeeded(old_version, std::move(connection_), |
- db_->metadata_); |
+ pending_->callbacks->OnUpgradeNeeded(old_version, std::move(connection_), |
+ db_->metadata_, |
+ pending_->data_loss_info); |
} |
void UpgradeTransactionFinished(bool committed) override { |
@@ -262,12 +262,12 @@ class IndexedDBDatabase::OpenRequest |
DCHECK(!connection_); |
if (committed) { |
- DCHECK_EQ(pending_.version, db_->metadata_.version); |
- pending_.callbacks->OnSuccess(std::unique_ptr<IndexedDBConnection>(), |
- db_->metadata()); |
+ DCHECK_EQ(pending_->version, db_->metadata_.version); |
+ pending_->callbacks->OnSuccess(std::unique_ptr<IndexedDBConnection>(), |
+ db_->metadata()); |
} else { |
- DCHECK_NE(pending_.version, db_->metadata_.version); |
- pending_.callbacks->OnError( |
+ DCHECK_NE(pending_->version, db_->metadata_.version); |
+ pending_->callbacks->OnError( |
IndexedDBDatabaseError(blink::WebIDBDatabaseExceptionAbortError, |
"Version change transaction was aborted in " |
"upgradeneeded event handler.")); |
@@ -276,7 +276,7 @@ class IndexedDBDatabase::OpenRequest |
} |
private: |
- IndexedDBPendingConnection pending_; |
+ std::unique_ptr<IndexedDBPendingConnection> pending_; |
// If an upgrade is needed, holds the pending connection until ownership is |
// transferred to the IndexedDBDispatcherHost via OnUpgradeNeeded. |
@@ -303,7 +303,6 @@ class IndexedDBDatabase::DeleteRequest |
// close_pending set. |
const int64_t old_version = db_->metadata_.version; |
const int64_t new_version = IndexedDBDatabaseMetadata::NO_VERSION; |
- DCHECK_NE(callbacks_->data_loss_info().status, blink::WebIDBDataLossTotal); |
for (const auto* connection : db_->connections_) |
connection->callbacks()->OnVersionChange(old_version, new_version); |
} |
@@ -1919,8 +1918,8 @@ void IndexedDBDatabase::TransactionCreated(IndexedDBTransaction* transaction) { |
} |
void IndexedDBDatabase::OpenConnection( |
- const IndexedDBPendingConnection& connection) { |
- AppendRequest(base::MakeUnique<OpenRequest>(this, connection)); |
+ std::unique_ptr<IndexedDBPendingConnection> connection) { |
+ AppendRequest(base::MakeUnique<OpenRequest>(this, std::move(connection))); |
} |
void IndexedDBDatabase::DeleteDatabase( |