| 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 <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "content/browser/indexed_db/indexed_db_connection.h" | 9 #include "content/browser/indexed_db/indexed_db_connection.h" |
| 10 #include "content/browser/indexed_db/indexed_db_cursor.h" | 10 #include "content/browser/indexed_db/indexed_db_cursor.h" |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 | 25 |
| 26 IndexedDBCallbacks::IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, | 26 IndexedDBCallbacks::IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, |
| 27 int32 ipc_thread_id, | 27 int32 ipc_thread_id, |
| 28 int32 ipc_callbacks_id) | 28 int32 ipc_callbacks_id) |
| 29 : dispatcher_host_(dispatcher_host), | 29 : dispatcher_host_(dispatcher_host), |
| 30 ipc_callbacks_id_(ipc_callbacks_id), | 30 ipc_callbacks_id_(ipc_callbacks_id), |
| 31 ipc_thread_id_(ipc_thread_id), | 31 ipc_thread_id_(ipc_thread_id), |
| 32 ipc_cursor_id_(kNoCursor), | 32 ipc_cursor_id_(kNoCursor), |
| 33 host_transaction_id_(kNoTransaction), | 33 host_transaction_id_(kNoTransaction), |
| 34 ipc_database_id_(kNoDatabase), | 34 ipc_database_id_(kNoDatabase), |
| 35 ipc_database_callbacks_id_(kNoDatabaseCallbacks) {} | 35 ipc_database_callbacks_id_(kNoDatabaseCallbacks), |
| 36 data_loss_(blink::WebIDBDataLossNone) {} |
| 36 | 37 |
| 37 IndexedDBCallbacks::IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, | 38 IndexedDBCallbacks::IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, |
| 38 int32 ipc_thread_id, | 39 int32 ipc_thread_id, |
| 39 int32 ipc_callbacks_id, | 40 int32 ipc_callbacks_id, |
| 40 int32 ipc_cursor_id) | 41 int32 ipc_cursor_id) |
| 41 : dispatcher_host_(dispatcher_host), | 42 : dispatcher_host_(dispatcher_host), |
| 42 ipc_callbacks_id_(ipc_callbacks_id), | 43 ipc_callbacks_id_(ipc_callbacks_id), |
| 43 ipc_thread_id_(ipc_thread_id), | 44 ipc_thread_id_(ipc_thread_id), |
| 44 ipc_cursor_id_(ipc_cursor_id), | 45 ipc_cursor_id_(ipc_cursor_id), |
| 45 host_transaction_id_(kNoTransaction), | 46 host_transaction_id_(kNoTransaction), |
| 46 ipc_database_id_(kNoDatabase), | 47 ipc_database_id_(kNoDatabase), |
| 47 ipc_database_callbacks_id_(kNoDatabaseCallbacks) {} | 48 ipc_database_callbacks_id_(kNoDatabaseCallbacks), |
| 49 data_loss_(blink::WebIDBDataLossNone) {} |
| 48 | 50 |
| 49 IndexedDBCallbacks::IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, | 51 IndexedDBCallbacks::IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, |
| 50 int32 ipc_thread_id, | 52 int32 ipc_thread_id, |
| 51 int32 ipc_callbacks_id, | 53 int32 ipc_callbacks_id, |
| 52 int32 ipc_database_callbacks_id, | 54 int32 ipc_database_callbacks_id, |
| 53 int64 host_transaction_id, | 55 int64 host_transaction_id, |
| 54 const GURL& origin_url) | 56 const GURL& origin_url) |
| 55 : dispatcher_host_(dispatcher_host), | 57 : dispatcher_host_(dispatcher_host), |
| 56 ipc_callbacks_id_(ipc_callbacks_id), | 58 ipc_callbacks_id_(ipc_callbacks_id), |
| 57 ipc_thread_id_(ipc_thread_id), | 59 ipc_thread_id_(ipc_thread_id), |
| 58 ipc_cursor_id_(kNoCursor), | 60 ipc_cursor_id_(kNoCursor), |
| 59 host_transaction_id_(host_transaction_id), | 61 host_transaction_id_(host_transaction_id), |
| 60 origin_url_(origin_url), | 62 origin_url_(origin_url), |
| 61 ipc_database_id_(kNoDatabase), | 63 ipc_database_id_(kNoDatabase), |
| 62 ipc_database_callbacks_id_(ipc_database_callbacks_id) {} | 64 ipc_database_callbacks_id_(ipc_database_callbacks_id), |
| 65 data_loss_(blink::WebIDBDataLossNone) {} |
| 63 | 66 |
| 64 IndexedDBCallbacks::~IndexedDBCallbacks() {} | 67 IndexedDBCallbacks::~IndexedDBCallbacks() {} |
| 65 | 68 |
| 66 void IndexedDBCallbacks::OnError(const IndexedDBDatabaseError& error) { | 69 void IndexedDBCallbacks::OnError(const IndexedDBDatabaseError& error) { |
| 67 DCHECK(dispatcher_host_.get()); | 70 DCHECK(dispatcher_host_.get()); |
| 68 | 71 |
| 69 dispatcher_host_->Send(new IndexedDBMsg_CallbacksError( | 72 dispatcher_host_->Send(new IndexedDBMsg_CallbacksError( |
| 70 ipc_thread_id_, ipc_callbacks_id_, error.code(), error.message())); | 73 ipc_thread_id_, ipc_callbacks_id_, error.code(), error.message())); |
| 71 dispatcher_host_ = NULL; | 74 dispatcher_host_ = NULL; |
| 72 } | 75 } |
| 73 | 76 |
| 74 void IndexedDBCallbacks::OnSuccess(const std::vector<base::string16>& value) { | 77 void IndexedDBCallbacks::OnSuccess(const std::vector<base::string16>& value) { |
| 75 DCHECK(dispatcher_host_.get()); | 78 DCHECK(dispatcher_host_.get()); |
| 76 | 79 |
| 77 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 80 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
| 78 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 81 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 79 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 82 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 80 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 83 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 84 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
| 81 | 85 |
| 82 std::vector<base::string16> list; | 86 std::vector<base::string16> list; |
| 83 for (unsigned i = 0; i < value.size(); ++i) | 87 for (unsigned i = 0; i < value.size(); ++i) |
| 84 list.push_back(value[i]); | 88 list.push_back(value[i]); |
| 85 | 89 |
| 86 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessStringList( | 90 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessStringList( |
| 87 ipc_thread_id_, ipc_callbacks_id_, list)); | 91 ipc_thread_id_, ipc_callbacks_id_, list)); |
| 88 dispatcher_host_ = NULL; | 92 dispatcher_host_ = NULL; |
| 89 } | 93 } |
| 90 | 94 |
| 91 void IndexedDBCallbacks::OnBlocked(int64 existing_version) { | 95 void IndexedDBCallbacks::OnBlocked(int64 existing_version) { |
| 92 DCHECK(dispatcher_host_.get()); | 96 DCHECK(dispatcher_host_.get()); |
| 93 | 97 |
| 94 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 98 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
| 95 // No transaction/db callbacks for DeleteDatabase. | 99 // No transaction/db callbacks for DeleteDatabase. |
| 96 DCHECK_EQ(kNoTransaction == host_transaction_id_, | 100 DCHECK_EQ(kNoTransaction == host_transaction_id_, |
| 97 kNoDatabaseCallbacks == ipc_database_callbacks_id_); | 101 kNoDatabaseCallbacks == ipc_database_callbacks_id_); |
| 98 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 102 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 99 | 103 |
| 100 dispatcher_host_->Send(new IndexedDBMsg_CallbacksIntBlocked( | 104 dispatcher_host_->Send(new IndexedDBMsg_CallbacksIntBlocked( |
| 101 ipc_thread_id_, ipc_callbacks_id_, existing_version)); | 105 ipc_thread_id_, ipc_callbacks_id_, existing_version)); |
| 102 } | 106 } |
| 103 | 107 |
| 108 void IndexedDBCallbacks::OnDataLoss(blink::WebIDBDataLoss data_loss, |
| 109 std::string data_loss_message) { |
| 110 DCHECK_NE(blink::WebIDBDataLossNone, data_loss); |
| 111 data_loss_ = data_loss; |
| 112 data_loss_message_ = data_loss_message; |
| 113 } |
| 114 |
| 104 void IndexedDBCallbacks::OnUpgradeNeeded( | 115 void IndexedDBCallbacks::OnUpgradeNeeded( |
| 105 int64 old_version, | 116 int64 old_version, |
| 106 scoped_ptr<IndexedDBConnection> connection, | 117 scoped_ptr<IndexedDBConnection> connection, |
| 107 const IndexedDBDatabaseMetadata& metadata, | 118 const IndexedDBDatabaseMetadata& metadata) { |
| 108 blink::WebIDBDataLoss data_loss, | |
| 109 std::string data_loss_message) { | |
| 110 DCHECK(dispatcher_host_.get()); | 119 DCHECK(dispatcher_host_.get()); |
| 111 | 120 |
| 112 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 121 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
| 113 DCHECK_NE(kNoTransaction, host_transaction_id_); | 122 DCHECK_NE(kNoTransaction, host_transaction_id_); |
| 114 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 123 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 115 DCHECK_NE(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 124 DCHECK_NE(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 116 | 125 |
| 117 dispatcher_host_->RegisterTransactionId(host_transaction_id_, origin_url_); | 126 dispatcher_host_->RegisterTransactionId(host_transaction_id_, origin_url_); |
| 118 int32 ipc_database_id = | 127 int32 ipc_database_id = |
| 119 dispatcher_host_->Add(connection.release(), ipc_thread_id_, origin_url_); | 128 dispatcher_host_->Add(connection.release(), ipc_thread_id_, origin_url_); |
| 120 if (ipc_database_id < 0) | 129 if (ipc_database_id < 0) |
| 121 return; | 130 return; |
| 122 ipc_database_id_ = ipc_database_id; | 131 ipc_database_id_ = ipc_database_id; |
| 123 IndexedDBMsg_CallbacksUpgradeNeeded_Params params; | 132 IndexedDBMsg_CallbacksUpgradeNeeded_Params params; |
| 124 params.ipc_thread_id = ipc_thread_id_; | 133 params.ipc_thread_id = ipc_thread_id_; |
| 125 params.ipc_callbacks_id = ipc_callbacks_id_; | 134 params.ipc_callbacks_id = ipc_callbacks_id_; |
| 126 params.ipc_database_id = ipc_database_id; | 135 params.ipc_database_id = ipc_database_id; |
| 127 params.ipc_database_callbacks_id = ipc_database_callbacks_id_; | 136 params.ipc_database_callbacks_id = ipc_database_callbacks_id_; |
| 128 params.old_version = old_version; | 137 params.old_version = old_version; |
| 129 params.idb_metadata = IndexedDBDispatcherHost::ConvertMetadata(metadata); | 138 params.idb_metadata = IndexedDBDispatcherHost::ConvertMetadata(metadata); |
| 130 params.data_loss = data_loss; | 139 params.data_loss = data_loss_; |
| 131 params.data_loss_message = data_loss_message; | 140 params.data_loss_message = data_loss_message_; |
| 132 dispatcher_host_->Send(new IndexedDBMsg_CallbacksUpgradeNeeded(params)); | 141 dispatcher_host_->Send(new IndexedDBMsg_CallbacksUpgradeNeeded(params)); |
| 133 } | 142 } |
| 134 | 143 |
| 135 void IndexedDBCallbacks::OnSuccess(scoped_ptr<IndexedDBConnection> connection, | 144 void IndexedDBCallbacks::OnSuccess(scoped_ptr<IndexedDBConnection> connection, |
| 136 const IndexedDBDatabaseMetadata& metadata) { | 145 const IndexedDBDatabaseMetadata& metadata) { |
| 137 DCHECK(dispatcher_host_.get()); | 146 DCHECK(dispatcher_host_.get()); |
| 138 | 147 |
| 139 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 148 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
| 140 DCHECK_NE(kNoTransaction, host_transaction_id_); | 149 DCHECK_NE(kNoTransaction, host_transaction_id_); |
| 141 DCHECK_NE(ipc_database_id_ == kNoDatabase, !connection); | 150 DCHECK_NE(ipc_database_id_ == kNoDatabase, !connection); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 162 void IndexedDBCallbacks::OnSuccess(scoped_refptr<IndexedDBCursor> cursor, | 171 void IndexedDBCallbacks::OnSuccess(scoped_refptr<IndexedDBCursor> cursor, |
| 163 const IndexedDBKey& key, | 172 const IndexedDBKey& key, |
| 164 const IndexedDBKey& primary_key, | 173 const IndexedDBKey& primary_key, |
| 165 std::string* value) { | 174 std::string* value) { |
| 166 DCHECK(dispatcher_host_.get()); | 175 DCHECK(dispatcher_host_.get()); |
| 167 | 176 |
| 168 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 177 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
| 169 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 178 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 170 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 179 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 171 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 180 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 181 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
| 172 | 182 |
| 173 int32 ipc_object_id = dispatcher_host_->Add(cursor.get()); | 183 int32 ipc_object_id = dispatcher_host_->Add(cursor.get()); |
| 174 IndexedDBMsg_CallbacksSuccessIDBCursor_Params params; | 184 IndexedDBMsg_CallbacksSuccessIDBCursor_Params params; |
| 175 params.ipc_thread_id = ipc_thread_id_; | 185 params.ipc_thread_id = ipc_thread_id_; |
| 176 params.ipc_callbacks_id = ipc_callbacks_id_; | 186 params.ipc_callbacks_id = ipc_callbacks_id_; |
| 177 params.ipc_cursor_id = ipc_object_id; | 187 params.ipc_cursor_id = ipc_object_id; |
| 178 params.key = key; | 188 params.key = key; |
| 179 params.primary_key = primary_key; | 189 params.primary_key = primary_key; |
| 180 if (value && !value->empty()) | 190 if (value && !value->empty()) |
| 181 std::swap(params.value, *value); | 191 std::swap(params.value, *value); |
| 182 // TODO(alecflett): Avoid a copy here: the whole params object is | 192 // TODO(alecflett): Avoid a copy here: the whole params object is |
| 183 // being copied into the message. | 193 // being copied into the message. |
| 184 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessIDBCursor(params)); | 194 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessIDBCursor(params)); |
| 185 | 195 |
| 186 dispatcher_host_ = NULL; | 196 dispatcher_host_ = NULL; |
| 187 } | 197 } |
| 188 | 198 |
| 189 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& key, | 199 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& key, |
| 190 const IndexedDBKey& primary_key, | 200 const IndexedDBKey& primary_key, |
| 191 std::string* value) { | 201 std::string* value) { |
| 192 DCHECK(dispatcher_host_.get()); | 202 DCHECK(dispatcher_host_.get()); |
| 193 | 203 |
| 194 DCHECK_NE(kNoCursor, ipc_cursor_id_); | 204 DCHECK_NE(kNoCursor, ipc_cursor_id_); |
| 195 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 205 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 196 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 206 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 197 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 207 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 208 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
| 198 | 209 |
| 199 IndexedDBCursor* idb_cursor = | 210 IndexedDBCursor* idb_cursor = |
| 200 dispatcher_host_->GetCursorFromId(ipc_cursor_id_); | 211 dispatcher_host_->GetCursorFromId(ipc_cursor_id_); |
| 201 | 212 |
| 202 DCHECK(idb_cursor); | 213 DCHECK(idb_cursor); |
| 203 if (!idb_cursor) | 214 if (!idb_cursor) |
| 204 return; | 215 return; |
| 205 IndexedDBMsg_CallbacksSuccessCursorContinue_Params params; | 216 IndexedDBMsg_CallbacksSuccessCursorContinue_Params params; |
| 206 params.ipc_thread_id = ipc_thread_id_; | 217 params.ipc_thread_id = ipc_thread_id_; |
| 207 params.ipc_callbacks_id = ipc_callbacks_id_; | 218 params.ipc_callbacks_id = ipc_callbacks_id_; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 223 const std::vector<std::string>& values) { | 234 const std::vector<std::string>& values) { |
| 224 DCHECK_EQ(keys.size(), primary_keys.size()); | 235 DCHECK_EQ(keys.size(), primary_keys.size()); |
| 225 DCHECK_EQ(keys.size(), values.size()); | 236 DCHECK_EQ(keys.size(), values.size()); |
| 226 | 237 |
| 227 DCHECK(dispatcher_host_.get()); | 238 DCHECK(dispatcher_host_.get()); |
| 228 | 239 |
| 229 DCHECK_NE(kNoCursor, ipc_cursor_id_); | 240 DCHECK_NE(kNoCursor, ipc_cursor_id_); |
| 230 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 241 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 231 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 242 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 232 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 243 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 244 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
| 233 | 245 |
| 234 std::vector<IndexedDBKey> msgKeys; | 246 std::vector<IndexedDBKey> msgKeys; |
| 235 std::vector<IndexedDBKey> msgPrimaryKeys; | 247 std::vector<IndexedDBKey> msgPrimaryKeys; |
| 236 | 248 |
| 237 for (size_t i = 0; i < keys.size(); ++i) { | 249 for (size_t i = 0; i < keys.size(); ++i) { |
| 238 msgKeys.push_back(keys[i]); | 250 msgKeys.push_back(keys[i]); |
| 239 msgPrimaryKeys.push_back(primary_keys[i]); | 251 msgPrimaryKeys.push_back(primary_keys[i]); |
| 240 } | 252 } |
| 241 | 253 |
| 242 IndexedDBMsg_CallbacksSuccessCursorPrefetch_Params params; | 254 IndexedDBMsg_CallbacksSuccessCursorPrefetch_Params params; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 253 | 265 |
| 254 void IndexedDBCallbacks::OnSuccess(std::string* value, | 266 void IndexedDBCallbacks::OnSuccess(std::string* value, |
| 255 const IndexedDBKey& key, | 267 const IndexedDBKey& key, |
| 256 const IndexedDBKeyPath& key_path) { | 268 const IndexedDBKeyPath& key_path) { |
| 257 DCHECK(dispatcher_host_.get()); | 269 DCHECK(dispatcher_host_.get()); |
| 258 | 270 |
| 259 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 271 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
| 260 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 272 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 261 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 273 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 262 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 274 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 275 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
| 263 | 276 |
| 264 std::string value_copy; | 277 std::string value_copy; |
| 265 if (value && !value->empty()) | 278 if (value && !value->empty()) |
| 266 std::swap(value_copy, *value); | 279 std::swap(value_copy, *value); |
| 267 | 280 |
| 268 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessValueWithKey( | 281 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessValueWithKey( |
| 269 ipc_thread_id_, | 282 ipc_thread_id_, |
| 270 ipc_callbacks_id_, | 283 ipc_callbacks_id_, |
| 271 // TODO(alecflett): Avoid a copy here. | 284 // TODO(alecflett): Avoid a copy here. |
| 272 value_copy, | 285 value_copy, |
| 273 key, | 286 key, |
| 274 key_path)); | 287 key_path)); |
| 275 dispatcher_host_ = NULL; | 288 dispatcher_host_ = NULL; |
| 276 } | 289 } |
| 277 | 290 |
| 278 void IndexedDBCallbacks::OnSuccess(std::string* value) { | 291 void IndexedDBCallbacks::OnSuccess(std::string* value) { |
| 279 DCHECK(dispatcher_host_.get()); | 292 DCHECK(dispatcher_host_.get()); |
| 280 | 293 |
| 281 DCHECK(kNoCursor == ipc_cursor_id_ || value == NULL); | 294 DCHECK(kNoCursor == ipc_cursor_id_ || value == NULL); |
| 282 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 295 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 283 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 296 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 284 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 297 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 298 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
| 285 | 299 |
| 286 std::string value_copy; | 300 std::string value_copy; |
| 287 if (value && !value->empty()) | 301 if (value && !value->empty()) |
| 288 std::swap(value_copy, *value); | 302 std::swap(value_copy, *value); |
| 289 | 303 |
| 290 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessValue( | 304 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessValue( |
| 291 ipc_thread_id_, | 305 ipc_thread_id_, |
| 292 ipc_callbacks_id_, | 306 ipc_callbacks_id_, |
| 293 // TODO(alecflett): avoid a copy here. | 307 // TODO(alecflett): avoid a copy here. |
| 294 value_copy)); | 308 value_copy)); |
| 295 dispatcher_host_ = NULL; | 309 dispatcher_host_ = NULL; |
| 296 } | 310 } |
| 297 | 311 |
| 298 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& value) { | 312 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& value) { |
| 299 DCHECK(dispatcher_host_.get()); | 313 DCHECK(dispatcher_host_.get()); |
| 300 | 314 |
| 301 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 315 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
| 302 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 316 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 303 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 317 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 304 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 318 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 319 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
| 305 | 320 |
| 306 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessIndexedDBKey( | 321 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessIndexedDBKey( |
| 307 ipc_thread_id_, ipc_callbacks_id_, value)); | 322 ipc_thread_id_, ipc_callbacks_id_, value)); |
| 308 dispatcher_host_ = NULL; | 323 dispatcher_host_ = NULL; |
| 309 } | 324 } |
| 310 | 325 |
| 311 void IndexedDBCallbacks::OnSuccess(int64 value) { | 326 void IndexedDBCallbacks::OnSuccess(int64 value) { |
| 312 DCHECK(dispatcher_host_.get()); | 327 DCHECK(dispatcher_host_.get()); |
| 313 | 328 |
| 314 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 329 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
| 315 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 330 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 316 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 331 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 317 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 332 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 333 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
| 318 | 334 |
| 319 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessInteger( | 335 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessInteger( |
| 320 ipc_thread_id_, ipc_callbacks_id_, value)); | 336 ipc_thread_id_, ipc_callbacks_id_, value)); |
| 321 dispatcher_host_ = NULL; | 337 dispatcher_host_ = NULL; |
| 322 } | 338 } |
| 323 | 339 |
| 324 void IndexedDBCallbacks::OnSuccess() { | 340 void IndexedDBCallbacks::OnSuccess() { |
| 325 DCHECK(dispatcher_host_.get()); | 341 DCHECK(dispatcher_host_.get()); |
| 326 | 342 |
| 327 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 343 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
| 328 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 344 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 329 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 345 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 330 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 346 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 347 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
| 331 | 348 |
| 332 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessUndefined( | 349 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessUndefined( |
| 333 ipc_thread_id_, ipc_callbacks_id_)); | 350 ipc_thread_id_, ipc_callbacks_id_)); |
| 334 dispatcher_host_ = NULL; | 351 dispatcher_host_ = NULL; |
| 335 } | 352 } |
| 336 | 353 |
| 337 } // namespace content | 354 } // namespace content |
| OLD | NEW |