OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/indexed_db/indexed_db_callbacks.h" | 5 #include "content/browser/indexed_db/indexed_db_callbacks.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 | 10 |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
154 std::unique_ptr<IndexedDBConnection> connection, | 154 std::unique_ptr<IndexedDBConnection> connection, |
155 const IndexedDBDatabaseMetadata& metadata) { | 155 const IndexedDBDatabaseMetadata& metadata) { |
156 DCHECK(dispatcher_host_.get()); | 156 DCHECK(dispatcher_host_.get()); |
157 | 157 |
158 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 158 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
159 DCHECK_NE(kNoTransaction, host_transaction_id_); | 159 DCHECK_NE(kNoTransaction, host_transaction_id_); |
160 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 160 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
161 DCHECK_NE(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 161 DCHECK_NE(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
162 | 162 |
163 dispatcher_host_->RegisterTransactionId(host_transaction_id_, origin_); | 163 dispatcher_host_->RegisterTransactionId(host_transaction_id_, origin_); |
164 IndexedDBConnection* connection_ptr = connection.get(); | |
164 int32_t ipc_database_id = | 165 int32_t ipc_database_id = |
165 dispatcher_host_->Add(connection.release(), ipc_thread_id_, origin_); | 166 dispatcher_host_->Add(connection.release(), ipc_thread_id_, origin_); |
167 connection_ptr->setId(ipc_database_id); | |
168 | |
166 if (ipc_database_id < 0) | 169 if (ipc_database_id < 0) |
167 return; | 170 return; |
168 ipc_database_id_ = ipc_database_id; | 171 ipc_database_id_ = ipc_database_id; |
169 IndexedDBMsg_CallbacksUpgradeNeeded_Params params; | 172 IndexedDBMsg_CallbacksUpgradeNeeded_Params params; |
170 params.ipc_thread_id = ipc_thread_id_; | 173 params.ipc_thread_id = ipc_thread_id_; |
171 params.ipc_callbacks_id = ipc_callbacks_id_; | 174 params.ipc_callbacks_id = ipc_callbacks_id_; |
172 params.ipc_database_id = ipc_database_id; | 175 params.ipc_database_id = ipc_database_id; |
173 params.ipc_database_callbacks_id = ipc_database_callbacks_id_; | 176 params.ipc_database_callbacks_id = ipc_database_callbacks_id_; |
174 params.old_version = old_version; | 177 params.old_version = old_version; |
175 params.idb_metadata = IndexedDBDispatcherHost::ConvertMetadata(metadata); | 178 params.idb_metadata = IndexedDBDispatcherHost::ConvertMetadata(metadata); |
(...skipping 17 matching lines...) Expand all Loading... | |
193 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 196 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
194 DCHECK_NE(kNoTransaction, host_transaction_id_); | 197 DCHECK_NE(kNoTransaction, host_transaction_id_); |
195 DCHECK_NE(ipc_database_id_ == kNoDatabase, !connection); | 198 DCHECK_NE(ipc_database_id_ == kNoDatabase, !connection); |
196 DCHECK_NE(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 199 DCHECK_NE(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
197 | 200 |
198 scoped_refptr<IndexedDBCallbacks> self(this); | 201 scoped_refptr<IndexedDBCallbacks> self(this); |
199 | 202 |
200 int32_t ipc_object_id = kNoDatabase; | 203 int32_t ipc_object_id = kNoDatabase; |
201 // Only register if the connection was not previously sent in OnUpgradeNeeded. | 204 // Only register if the connection was not previously sent in OnUpgradeNeeded. |
202 if (ipc_database_id_ == kNoDatabase) { | 205 if (ipc_database_id_ == kNoDatabase) { |
206 IndexedDBConnection* connection_ptr = connection.get(); | |
203 ipc_object_id = | 207 ipc_object_id = |
204 dispatcher_host_->Add(connection.release(), ipc_thread_id_, origin_); | 208 dispatcher_host_->Add(connection.release(), ipc_thread_id_, origin_); |
209 connection_ptr->setId(ipc_object_id); | |
cmumford
2016/07/07 21:14:21
IndexedDBDispatcherHost::Add() will delete connect
| |
205 } | 210 } |
206 | |
207 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessIDBDatabase( | 211 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessIDBDatabase( |
208 ipc_thread_id_, | 212 ipc_thread_id_, |
209 ipc_callbacks_id_, | 213 ipc_callbacks_id_, |
210 ipc_database_callbacks_id_, | 214 ipc_database_callbacks_id_, |
211 ipc_object_id, | 215 ipc_object_id, |
212 IndexedDBDispatcherHost::ConvertMetadata(metadata))); | 216 IndexedDBDispatcherHost::ConvertMetadata(metadata))); |
213 dispatcher_host_ = NULL; | 217 dispatcher_host_ = NULL; |
214 | 218 |
215 if (!connection_open_start_time_.is_null()) { | 219 if (!connection_open_start_time_.is_null()) { |
216 UMA_HISTOGRAM_MEDIUM_TIMES( | 220 UMA_HISTOGRAM_MEDIUM_TIMES( |
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
607 ipc_thread_id_, ipc_callbacks_id_)); | 611 ipc_thread_id_, ipc_callbacks_id_)); |
608 dispatcher_host_ = NULL; | 612 dispatcher_host_ = NULL; |
609 } | 613 } |
610 | 614 |
611 void IndexedDBCallbacks::SetConnectionOpenStartTime( | 615 void IndexedDBCallbacks::SetConnectionOpenStartTime( |
612 const base::TimeTicks& start_time) { | 616 const base::TimeTicks& start_time) { |
613 connection_open_start_time_ = start_time; | 617 connection_open_start_time_ = start_time; |
614 } | 618 } |
615 | 619 |
616 } // namespace content | 620 } // namespace content |
OLD | NEW |