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 #include <utility> |
10 | 11 |
11 #include "base/metrics/histogram.h" | 12 #include "base/metrics/histogram.h" |
12 #include "base/strings/utf_string_conversions.h" | 13 #include "base/strings/utf_string_conversions.h" |
13 #include "base/time/time.h" | 14 #include "base/time/time.h" |
14 #include "content/browser/child_process_security_policy_impl.h" | 15 #include "content/browser/child_process_security_policy_impl.h" |
15 #include "content/browser/fileapi/fileapi_message_filter.h" | 16 #include "content/browser/fileapi/fileapi_message_filter.h" |
16 #include "content/browser/indexed_db/indexed_db_blob_info.h" | 17 #include "content/browser/indexed_db/indexed_db_blob_info.h" |
17 #include "content/browser/indexed_db/indexed_db_connection.h" | 18 #include "content/browser/indexed_db/indexed_db_connection.h" |
18 #include "content/browser/indexed_db/indexed_db_context_impl.h" | 19 #include "content/browser/indexed_db/indexed_db_context_impl.h" |
19 #include "content/browser/indexed_db/indexed_db_cursor.h" | 20 #include "content/browser/indexed_db/indexed_db_cursor.h" |
(...skipping 22 matching lines...) Expand all Loading... |
42 IndexedDBCallbacks::IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, | 43 IndexedDBCallbacks::IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, |
43 int32_t ipc_thread_id, | 44 int32_t ipc_thread_id, |
44 int32_t ipc_callbacks_id) | 45 int32_t ipc_callbacks_id) |
45 : dispatcher_host_(dispatcher_host), | 46 : dispatcher_host_(dispatcher_host), |
46 ipc_callbacks_id_(ipc_callbacks_id), | 47 ipc_callbacks_id_(ipc_callbacks_id), |
47 ipc_thread_id_(ipc_thread_id), | 48 ipc_thread_id_(ipc_thread_id), |
48 ipc_cursor_id_(kNoCursor), | 49 ipc_cursor_id_(kNoCursor), |
49 host_transaction_id_(kNoTransaction), | 50 host_transaction_id_(kNoTransaction), |
50 ipc_database_id_(kNoDatabase), | 51 ipc_database_id_(kNoDatabase), |
51 ipc_database_callbacks_id_(kNoDatabaseCallbacks), | 52 ipc_database_callbacks_id_(kNoDatabaseCallbacks), |
52 data_loss_(blink::WebIDBDataLossNone), | |
53 sent_blocked_(false) {} | 53 sent_blocked_(false) {} |
54 | 54 |
55 IndexedDBCallbacks::IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, | 55 IndexedDBCallbacks::IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, |
56 int32_t ipc_thread_id, | 56 int32_t ipc_thread_id, |
57 int32_t ipc_callbacks_id, | 57 int32_t ipc_callbacks_id, |
58 int32_t ipc_cursor_id) | 58 int32_t ipc_cursor_id) |
59 : dispatcher_host_(dispatcher_host), | 59 : dispatcher_host_(dispatcher_host), |
60 ipc_callbacks_id_(ipc_callbacks_id), | 60 ipc_callbacks_id_(ipc_callbacks_id), |
61 ipc_thread_id_(ipc_thread_id), | 61 ipc_thread_id_(ipc_thread_id), |
62 ipc_cursor_id_(ipc_cursor_id), | 62 ipc_cursor_id_(ipc_cursor_id), |
63 host_transaction_id_(kNoTransaction), | 63 host_transaction_id_(kNoTransaction), |
64 ipc_database_id_(kNoDatabase), | 64 ipc_database_id_(kNoDatabase), |
65 ipc_database_callbacks_id_(kNoDatabaseCallbacks), | 65 ipc_database_callbacks_id_(kNoDatabaseCallbacks), |
66 data_loss_(blink::WebIDBDataLossNone), | |
67 sent_blocked_(false) {} | 66 sent_blocked_(false) {} |
68 | 67 |
69 IndexedDBCallbacks::IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, | 68 IndexedDBCallbacks::IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, |
70 int32_t ipc_thread_id, | 69 int32_t ipc_thread_id, |
71 int32_t ipc_callbacks_id, | 70 int32_t ipc_callbacks_id, |
72 int32_t ipc_database_callbacks_id, | 71 int32_t ipc_database_callbacks_id, |
73 int64_t host_transaction_id, | 72 int64_t host_transaction_id, |
74 const url::Origin& origin) | 73 const url::Origin& origin) |
75 : dispatcher_host_(dispatcher_host), | 74 : dispatcher_host_(dispatcher_host), |
76 ipc_callbacks_id_(ipc_callbacks_id), | 75 ipc_callbacks_id_(ipc_callbacks_id), |
77 ipc_thread_id_(ipc_thread_id), | 76 ipc_thread_id_(ipc_thread_id), |
78 ipc_cursor_id_(kNoCursor), | 77 ipc_cursor_id_(kNoCursor), |
79 host_transaction_id_(host_transaction_id), | 78 host_transaction_id_(host_transaction_id), |
80 origin_(origin), | 79 origin_(origin), |
81 ipc_database_id_(kNoDatabase), | 80 ipc_database_id_(kNoDatabase), |
82 ipc_database_callbacks_id_(ipc_database_callbacks_id), | 81 ipc_database_callbacks_id_(ipc_database_callbacks_id), |
83 data_loss_(blink::WebIDBDataLossNone), | |
84 sent_blocked_(false) {} | 82 sent_blocked_(false) {} |
85 | 83 |
86 IndexedDBCallbacks::~IndexedDBCallbacks() {} | 84 IndexedDBCallbacks::~IndexedDBCallbacks() {} |
87 | 85 |
88 void IndexedDBCallbacks::OnError(const IndexedDBDatabaseError& error) { | 86 void IndexedDBCallbacks::OnError(const IndexedDBDatabaseError& error) { |
89 DCHECK(dispatcher_host_.get()); | 87 DCHECK(dispatcher_host_.get()); |
90 | 88 |
91 dispatcher_host_->Send(new IndexedDBMsg_CallbacksError( | 89 dispatcher_host_->Send(new IndexedDBMsg_CallbacksError( |
92 ipc_thread_id_, ipc_callbacks_id_, error.code(), error.message())); | 90 ipc_thread_id_, ipc_callbacks_id_, error.code(), error.message())); |
93 dispatcher_host_ = NULL; | 91 dispatcher_host_ = NULL; |
94 | 92 |
95 if (!connection_open_start_time_.is_null()) { | 93 if (!connection_open_start_time_.is_null()) { |
96 UMA_HISTOGRAM_MEDIUM_TIMES( | 94 UMA_HISTOGRAM_MEDIUM_TIMES( |
97 "WebCore.IndexedDB.OpenTime.Error", | 95 "WebCore.IndexedDB.OpenTime.Error", |
98 base::TimeTicks::Now() - connection_open_start_time_); | 96 base::TimeTicks::Now() - connection_open_start_time_); |
99 connection_open_start_time_ = base::TimeTicks(); | 97 connection_open_start_time_ = base::TimeTicks(); |
100 } | 98 } |
101 } | 99 } |
102 | 100 |
103 void IndexedDBCallbacks::OnSuccess(const std::vector<base::string16>& value) { | 101 void IndexedDBCallbacks::OnSuccess(const std::vector<base::string16>& value) { |
104 DCHECK(dispatcher_host_.get()); | 102 DCHECK(dispatcher_host_.get()); |
105 | 103 |
106 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 104 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
107 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 105 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
108 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 106 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
109 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 107 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
110 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); | 108 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_info_.status); |
111 | 109 |
112 std::vector<base::string16> list; | 110 std::vector<base::string16> list; |
113 for (unsigned i = 0; i < value.size(); ++i) | 111 for (unsigned i = 0; i < value.size(); ++i) |
114 list.push_back(value[i]); | 112 list.push_back(value[i]); |
115 | 113 |
116 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessStringList( | 114 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessStringList( |
117 ipc_thread_id_, ipc_callbacks_id_, list)); | 115 ipc_thread_id_, ipc_callbacks_id_, list)); |
118 dispatcher_host_ = NULL; | 116 dispatcher_host_ = NULL; |
119 } | 117 } |
120 | 118 |
(...skipping 14 matching lines...) Expand all Loading... |
135 ipc_thread_id_, ipc_callbacks_id_, existing_version)); | 133 ipc_thread_id_, ipc_callbacks_id_, existing_version)); |
136 | 134 |
137 if (!connection_open_start_time_.is_null()) { | 135 if (!connection_open_start_time_.is_null()) { |
138 UMA_HISTOGRAM_MEDIUM_TIMES( | 136 UMA_HISTOGRAM_MEDIUM_TIMES( |
139 "WebCore.IndexedDB.OpenTime.Blocked", | 137 "WebCore.IndexedDB.OpenTime.Blocked", |
140 base::TimeTicks::Now() - connection_open_start_time_); | 138 base::TimeTicks::Now() - connection_open_start_time_); |
141 connection_open_start_time_ = base::TimeTicks(); | 139 connection_open_start_time_ = base::TimeTicks(); |
142 } | 140 } |
143 } | 141 } |
144 | 142 |
145 void IndexedDBCallbacks::OnDataLoss(blink::WebIDBDataLoss data_loss, | 143 void IndexedDBCallbacks::OnDataLoss(const IndexedDBDataLossInfo& info) { |
146 std::string data_loss_message) { | 144 data_loss_info_ = info; |
147 DCHECK_NE(blink::WebIDBDataLossNone, data_loss); | |
148 data_loss_ = data_loss; | |
149 data_loss_message_ = data_loss_message; | |
150 } | 145 } |
151 | 146 |
152 void IndexedDBCallbacks::OnUpgradeNeeded( | 147 void IndexedDBCallbacks::OnUpgradeNeeded( |
153 int64_t old_version, | 148 int64_t old_version, |
154 std::unique_ptr<IndexedDBConnection> connection, | 149 std::unique_ptr<IndexedDBConnection> connection, |
155 const IndexedDBDatabaseMetadata& metadata) { | 150 const IndexedDBDatabaseMetadata& metadata) { |
156 DCHECK(dispatcher_host_.get()); | 151 DCHECK(dispatcher_host_.get()); |
157 | 152 |
158 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 153 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
159 DCHECK_NE(kNoTransaction, host_transaction_id_); | 154 DCHECK_NE(kNoTransaction, host_transaction_id_); |
160 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 155 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
161 DCHECK_NE(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 156 DCHECK_NE(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
162 | 157 |
163 dispatcher_host_->RegisterTransactionId(host_transaction_id_, origin_); | 158 dispatcher_host_->RegisterTransactionId(host_transaction_id_, origin_); |
164 int32_t ipc_database_id = | 159 int32_t ipc_database_id = |
165 dispatcher_host_->Add(connection.release(), ipc_thread_id_, origin_); | 160 dispatcher_host_->Add(connection.release(), ipc_thread_id_, origin_); |
166 if (ipc_database_id < 0) | 161 if (ipc_database_id < 0) |
167 return; | 162 return; |
168 ipc_database_id_ = ipc_database_id; | 163 ipc_database_id_ = ipc_database_id; |
169 IndexedDBMsg_CallbacksUpgradeNeeded_Params params; | 164 IndexedDBMsg_CallbacksUpgradeNeeded_Params params; |
170 params.ipc_thread_id = ipc_thread_id_; | 165 params.ipc_thread_id = ipc_thread_id_; |
171 params.ipc_callbacks_id = ipc_callbacks_id_; | 166 params.ipc_callbacks_id = ipc_callbacks_id_; |
172 params.ipc_database_id = ipc_database_id; | 167 params.ipc_database_id = ipc_database_id; |
173 params.ipc_database_callbacks_id = ipc_database_callbacks_id_; | 168 params.ipc_database_callbacks_id = ipc_database_callbacks_id_; |
174 params.old_version = old_version; | 169 params.old_version = old_version; |
175 params.idb_metadata = IndexedDBDispatcherHost::ConvertMetadata(metadata); | 170 params.idb_metadata = IndexedDBDispatcherHost::ConvertMetadata(metadata); |
176 params.data_loss = data_loss_; | 171 params.data_loss = data_loss_info_.status; |
177 params.data_loss_message = data_loss_message_; | 172 params.data_loss_message = data_loss_info_.message; |
178 dispatcher_host_->Send(new IndexedDBMsg_CallbacksUpgradeNeeded(params)); | 173 dispatcher_host_->Send(new IndexedDBMsg_CallbacksUpgradeNeeded(params)); |
179 | 174 |
180 if (!connection_open_start_time_.is_null()) { | 175 if (!connection_open_start_time_.is_null()) { |
181 UMA_HISTOGRAM_MEDIUM_TIMES( | 176 UMA_HISTOGRAM_MEDIUM_TIMES( |
182 "WebCore.IndexedDB.OpenTime.UpgradeNeeded", | 177 "WebCore.IndexedDB.OpenTime.UpgradeNeeded", |
183 base::TimeTicks::Now() - connection_open_start_time_); | 178 base::TimeTicks::Now() - connection_open_start_time_); |
184 connection_open_start_time_ = base::TimeTicks(); | 179 connection_open_start_time_ = base::TimeTicks(); |
185 } | 180 } |
186 } | 181 } |
187 | 182 |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
338 void IndexedDBCallbacks::OnSuccess(scoped_refptr<IndexedDBCursor> cursor, | 333 void IndexedDBCallbacks::OnSuccess(scoped_refptr<IndexedDBCursor> cursor, |
339 const IndexedDBKey& key, | 334 const IndexedDBKey& key, |
340 const IndexedDBKey& primary_key, | 335 const IndexedDBKey& primary_key, |
341 IndexedDBValue* value) { | 336 IndexedDBValue* value) { |
342 DCHECK(dispatcher_host_.get()); | 337 DCHECK(dispatcher_host_.get()); |
343 | 338 |
344 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 339 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
345 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 340 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
346 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 341 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
347 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 342 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
348 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); | 343 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_info_.status); |
349 | 344 |
350 int32_t ipc_object_id = dispatcher_host_->Add(cursor.get()); | 345 int32_t ipc_object_id = dispatcher_host_->Add(cursor.get()); |
351 std::unique_ptr<IndexedDBMsg_CallbacksSuccessIDBCursor_Params> params( | 346 std::unique_ptr<IndexedDBMsg_CallbacksSuccessIDBCursor_Params> params( |
352 new IndexedDBMsg_CallbacksSuccessIDBCursor_Params()); | 347 new IndexedDBMsg_CallbacksSuccessIDBCursor_Params()); |
353 params->ipc_thread_id = ipc_thread_id_; | 348 params->ipc_thread_id = ipc_thread_id_; |
354 params->ipc_callbacks_id = ipc_callbacks_id_; | 349 params->ipc_callbacks_id = ipc_callbacks_id_; |
355 params->ipc_cursor_id = ipc_object_id; | 350 params->ipc_cursor_id = ipc_object_id; |
356 params->key = key; | 351 params->key = key; |
357 params->primary_key = primary_key; | 352 params->primary_key = primary_key; |
358 if (value && !value->empty()) | 353 if (value && !value->empty()) |
(...skipping 18 matching lines...) Expand all Loading... |
377 | 372 |
378 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& key, | 373 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& key, |
379 const IndexedDBKey& primary_key, | 374 const IndexedDBKey& primary_key, |
380 IndexedDBValue* value) { | 375 IndexedDBValue* value) { |
381 DCHECK(dispatcher_host_.get()); | 376 DCHECK(dispatcher_host_.get()); |
382 | 377 |
383 DCHECK_NE(kNoCursor, ipc_cursor_id_); | 378 DCHECK_NE(kNoCursor, ipc_cursor_id_); |
384 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 379 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
385 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 380 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
386 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 381 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
387 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); | 382 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_info_.status); |
388 | 383 |
389 IndexedDBCursor* idb_cursor = | 384 IndexedDBCursor* idb_cursor = |
390 dispatcher_host_->GetCursorFromId(ipc_cursor_id_); | 385 dispatcher_host_->GetCursorFromId(ipc_cursor_id_); |
391 | 386 |
392 DCHECK(idb_cursor); | 387 DCHECK(idb_cursor); |
393 if (!idb_cursor) | 388 if (!idb_cursor) |
394 return; | 389 return; |
395 | 390 |
396 std::unique_ptr<IndexedDBMsg_CallbacksSuccessCursorContinue_Params> params( | 391 std::unique_ptr<IndexedDBMsg_CallbacksSuccessCursorContinue_Params> params( |
397 new IndexedDBMsg_CallbacksSuccessCursorContinue_Params()); | 392 new IndexedDBMsg_CallbacksSuccessCursorContinue_Params()); |
(...skipping 30 matching lines...) Expand all Loading... |
428 std::vector<IndexedDBValue>* values) { | 423 std::vector<IndexedDBValue>* values) { |
429 DCHECK_EQ(keys.size(), primary_keys.size()); | 424 DCHECK_EQ(keys.size(), primary_keys.size()); |
430 DCHECK_EQ(keys.size(), values->size()); | 425 DCHECK_EQ(keys.size(), values->size()); |
431 | 426 |
432 DCHECK(dispatcher_host_.get()); | 427 DCHECK(dispatcher_host_.get()); |
433 | 428 |
434 DCHECK_NE(kNoCursor, ipc_cursor_id_); | 429 DCHECK_NE(kNoCursor, ipc_cursor_id_); |
435 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 430 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
436 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 431 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
437 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 432 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
438 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); | 433 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_info_.status); |
439 | 434 |
440 std::vector<IndexedDBKey> msg_keys; | 435 std::vector<IndexedDBKey> msg_keys; |
441 std::vector<IndexedDBKey> msg_primary_keys; | 436 std::vector<IndexedDBKey> msg_primary_keys; |
442 | 437 |
443 for (size_t i = 0; i < keys.size(); ++i) { | 438 for (size_t i = 0; i < keys.size(); ++i) { |
444 msg_keys.push_back(keys[i]); | 439 msg_keys.push_back(keys[i]); |
445 msg_primary_keys.push_back(primary_keys[i]); | 440 msg_primary_keys.push_back(primary_keys[i]); |
446 } | 441 } |
447 | 442 |
448 std::unique_ptr<IndexedDBMsg_CallbacksSuccessCursorPrefetch_Params> params( | 443 std::unique_ptr<IndexedDBMsg_CallbacksSuccessCursorPrefetch_Params> params( |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
486 DCHECK(dispatcher_host_.get()); | 481 DCHECK(dispatcher_host_.get()); |
487 | 482 |
488 if (value && value->primary_key.IsValid()) { | 483 if (value && value->primary_key.IsValid()) { |
489 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 484 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
490 } else { | 485 } else { |
491 DCHECK(kNoCursor == ipc_cursor_id_ || value == NULL); | 486 DCHECK(kNoCursor == ipc_cursor_id_ || value == NULL); |
492 } | 487 } |
493 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 488 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
494 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 489 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
495 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 490 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
496 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); | 491 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_info_.status); |
497 | 492 |
498 std::unique_ptr<IndexedDBMsg_CallbacksSuccessValue_Params> params( | 493 std::unique_ptr<IndexedDBMsg_CallbacksSuccessValue_Params> params( |
499 new IndexedDBMsg_CallbacksSuccessValue_Params()); | 494 new IndexedDBMsg_CallbacksSuccessValue_Params()); |
500 params->ipc_thread_id = ipc_thread_id_; | 495 params->ipc_thread_id = ipc_thread_id_; |
501 params->ipc_callbacks_id = ipc_callbacks_id_; | 496 params->ipc_callbacks_id = ipc_callbacks_id_; |
502 if (value && value->primary_key.IsValid()) { | 497 if (value && value->primary_key.IsValid()) { |
503 params->value.primary_key = value->primary_key; | 498 params->value.primary_key = value->primary_key; |
504 params->value.key_path = value->key_path; | 499 params->value.key_path = value->key_path; |
505 } | 500 } |
506 if (value && !value->empty()) | 501 if (value && !value->empty()) |
(...skipping 15 matching lines...) Expand all Loading... |
522 } | 517 } |
523 | 518 |
524 void IndexedDBCallbacks::OnSuccessArray( | 519 void IndexedDBCallbacks::OnSuccessArray( |
525 std::vector<IndexedDBReturnValue>* values, | 520 std::vector<IndexedDBReturnValue>* values, |
526 const IndexedDBKeyPath& key_path) { | 521 const IndexedDBKeyPath& key_path) { |
527 DCHECK(dispatcher_host_.get()); | 522 DCHECK(dispatcher_host_.get()); |
528 | 523 |
529 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 524 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
530 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 525 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
531 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 526 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
532 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); | 527 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_info_.status); |
533 | 528 |
534 std::unique_ptr<IndexedDBMsg_CallbacksSuccessArray_Params> params( | 529 std::unique_ptr<IndexedDBMsg_CallbacksSuccessArray_Params> params( |
535 new IndexedDBMsg_CallbacksSuccessArray_Params()); | 530 new IndexedDBMsg_CallbacksSuccessArray_Params()); |
536 params->ipc_thread_id = ipc_thread_id_; | 531 params->ipc_thread_id = ipc_thread_id_; |
537 params->ipc_callbacks_id = ipc_callbacks_id_; | 532 params->ipc_callbacks_id = ipc_callbacks_id_; |
538 params->values.resize(values->size()); | 533 params->values.resize(values->size()); |
539 | 534 |
540 bool found_blob_info = false; | 535 bool found_blob_info = false; |
541 for (size_t i = 0; i < values->size(); ++i) { | 536 for (size_t i = 0; i < values->size(); ++i) { |
542 IndexedDBMsg_ReturnValue& pvalue = params->values[i]; | 537 IndexedDBMsg_ReturnValue& pvalue = params->values[i]; |
(...skipping 23 matching lines...) Expand all Loading... |
566 dispatcher_host_ = NULL; | 561 dispatcher_host_ = NULL; |
567 } | 562 } |
568 | 563 |
569 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& value) { | 564 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& value) { |
570 DCHECK(dispatcher_host_.get()); | 565 DCHECK(dispatcher_host_.get()); |
571 | 566 |
572 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 567 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
573 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 568 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
574 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 569 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
575 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 570 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
576 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); | 571 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_info_.status); |
577 | 572 |
578 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessIndexedDBKey( | 573 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessIndexedDBKey( |
579 ipc_thread_id_, ipc_callbacks_id_, value)); | 574 ipc_thread_id_, ipc_callbacks_id_, value)); |
580 dispatcher_host_ = NULL; | 575 dispatcher_host_ = NULL; |
581 } | 576 } |
582 | 577 |
583 void IndexedDBCallbacks::OnSuccess(int64_t value) { | 578 void IndexedDBCallbacks::OnSuccess(int64_t value) { |
584 DCHECK(dispatcher_host_.get()); | 579 DCHECK(dispatcher_host_.get()); |
585 | 580 |
586 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 581 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
587 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 582 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
588 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 583 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
589 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 584 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
590 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); | 585 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_info_.status); |
591 | 586 |
592 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessInteger( | 587 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessInteger( |
593 ipc_thread_id_, ipc_callbacks_id_, value)); | 588 ipc_thread_id_, ipc_callbacks_id_, value)); |
594 dispatcher_host_ = NULL; | 589 dispatcher_host_ = NULL; |
595 } | 590 } |
596 | 591 |
597 void IndexedDBCallbacks::OnSuccess() { | 592 void IndexedDBCallbacks::OnSuccess() { |
598 DCHECK(dispatcher_host_.get()); | 593 DCHECK(dispatcher_host_.get()); |
599 | 594 |
600 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 595 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
601 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 596 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
602 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 597 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
603 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 598 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
604 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); | 599 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_info_.status); |
605 | 600 |
606 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessUndefined( | 601 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessUndefined( |
607 ipc_thread_id_, ipc_callbacks_id_)); | 602 ipc_thread_id_, ipc_callbacks_id_)); |
608 dispatcher_host_ = NULL; | 603 dispatcher_host_ = NULL; |
609 } | 604 } |
610 | 605 |
611 void IndexedDBCallbacks::SetConnectionOpenStartTime( | 606 void IndexedDBCallbacks::SetConnectionOpenStartTime( |
612 const base::TimeTicks& start_time) { | 607 const base::TimeTicks& start_time) { |
613 connection_open_start_time_ = start_time; | 608 connection_open_start_time_ = start_time; |
614 } | 609 } |
615 | 610 |
616 } // namespace content | 611 } // namespace content |
OLD | NEW |