Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(259)

Side by Side Diff: content/browser/indexed_db/indexed_db_callbacks.cc

Issue 2472213003: [IndexedDB] Refactoring to remove ref ptrs and host transaction ids. (Closed)
Patch Set: comments Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #include <utility>
11 11
12 #include "base/metrics/histogram_macros.h" 12 #include "base/metrics/histogram_macros.h"
13 #include "base/strings/utf_string_conversions.h" 13 #include "base/strings/utf_string_conversions.h"
14 #include "base/time/time.h" 14 #include "base/time/time.h"
15 #include "content/browser/child_process_security_policy_impl.h" 15 #include "content/browser/child_process_security_policy_impl.h"
16 #include "content/browser/fileapi/fileapi_message_filter.h" 16 #include "content/browser/fileapi/fileapi_message_filter.h"
17 #include "content/browser/indexed_db/cursor_impl.h" 17 #include "content/browser/indexed_db/cursor_impl.h"
18 #include "content/browser/indexed_db/database_impl.h" 18 #include "content/browser/indexed_db/database_impl.h"
19 #include "content/browser/indexed_db/indexed_db_blob_info.h" 19 #include "content/browser/indexed_db/indexed_db_blob_info.h"
20 #include "content/browser/indexed_db/indexed_db_connection.h" 20 #include "content/browser/indexed_db/indexed_db_connection.h"
21 #include "content/browser/indexed_db/indexed_db_context_impl.h" 21 #include "content/browser/indexed_db/indexed_db_context_impl.h"
22 #include "content/browser/indexed_db/indexed_db_cursor.h" 22 #include "content/browser/indexed_db/indexed_db_cursor.h"
23 #include "content/browser/indexed_db/indexed_db_database_error.h" 23 #include "content/browser/indexed_db/indexed_db_database_error.h"
24 #include "content/browser/indexed_db/indexed_db_return_value.h" 24 #include "content/browser/indexed_db/indexed_db_return_value.h"
25 #include "content/browser/indexed_db/indexed_db_tracing.h" 25 #include "content/browser/indexed_db/indexed_db_tracing.h"
26 #include "content/browser/indexed_db/indexed_db_transaction.h"
26 #include "content/browser/indexed_db/indexed_db_value.h" 27 #include "content/browser/indexed_db/indexed_db_value.h"
27 #include "content/common/indexed_db/indexed_db_constants.h" 28 #include "content/common/indexed_db/indexed_db_constants.h"
28 #include "content/common/indexed_db/indexed_db_metadata.h" 29 #include "content/common/indexed_db/indexed_db_metadata.h"
29 #include "mojo/public/cpp/bindings/strong_associated_binding.h" 30 #include "mojo/public/cpp/bindings/strong_associated_binding.h"
30 #include "storage/browser/blob/blob_storage_context.h" 31 #include "storage/browser/blob/blob_storage_context.h"
31 #include "storage/browser/blob/shareable_file_reference.h" 32 #include "storage/browser/blob/shareable_file_reference.h"
32 #include "storage/browser/quota/quota_manager.h" 33 #include "storage/browser/quota/quota_manager.h"
33 34
34 using indexed_db::mojom::CallbacksAssociatedPtrInfo; 35 using indexed_db::mojom::CallbacksAssociatedPtrInfo;
35 using std::swap; 36 using std::swap;
36 using storage::ShareableFileReference; 37 using storage::ShareableFileReference;
37 38
38 namespace content { 39 namespace content {
39 40
40 namespace { 41 namespace {
41 const int64_t kNoTransaction = -1;
42 42
43 void ConvertBlobInfo( 43 void ConvertBlobInfo(
44 const std::vector<IndexedDBBlobInfo>& blob_info, 44 const std::vector<IndexedDBBlobInfo>& blob_info,
45 std::vector<::indexed_db::mojom::BlobInfoPtr>* blob_or_file_info) { 45 std::vector<::indexed_db::mojom::BlobInfoPtr>* blob_or_file_info) {
46 blob_or_file_info->reserve(blob_info.size()); 46 blob_or_file_info->reserve(blob_info.size());
47 for (const auto& iter : blob_info) { 47 for (const auto& iter : blob_info) {
48 if (!iter.mark_used_callback().is_null()) 48 if (!iter.mark_used_callback().is_null())
49 iter.mark_used_callback().Run(); 49 iter.mark_used_callback().Run();
50 50
51 auto info = ::indexed_db::mojom::BlobInfo::New(); 51 auto info = ::indexed_db::mojom::BlobInfo::New();
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 ::indexed_db::mojom::CallbacksAssociatedPtr callbacks_; 137 ::indexed_db::mojom::CallbacksAssociatedPtr callbacks_;
138 138
139 DISALLOW_COPY_AND_ASSIGN(IOThreadHelper); 139 DISALLOW_COPY_AND_ASSIGN(IOThreadHelper);
140 }; 140 };
141 141
142 IndexedDBCallbacks::IndexedDBCallbacks( 142 IndexedDBCallbacks::IndexedDBCallbacks(
143 scoped_refptr<IndexedDBDispatcherHost> dispatcher_host, 143 scoped_refptr<IndexedDBDispatcherHost> dispatcher_host,
144 const url::Origin& origin, 144 const url::Origin& origin,
145 ::indexed_db::mojom::CallbacksAssociatedPtrInfo callbacks_info) 145 ::indexed_db::mojom::CallbacksAssociatedPtrInfo callbacks_info)
146 : dispatcher_host_(std::move(dispatcher_host)), 146 : dispatcher_host_(std::move(dispatcher_host)),
147 host_transaction_id_(kNoTransaction),
148 origin_(origin), 147 origin_(origin),
149 data_loss_(blink::WebIDBDataLossNone), 148 data_loss_(blink::WebIDBDataLossNone),
150 sent_blocked_(false), 149 sent_blocked_(false),
151 io_helper_( 150 io_helper_(
152 new IOThreadHelper(std::move(callbacks_info), dispatcher_host_)) { 151 new IOThreadHelper(std::move(callbacks_info), dispatcher_host_)) {
153 DCHECK_CURRENTLY_ON(BrowserThread::IO); 152 DCHECK_CURRENTLY_ON(BrowserThread::IO);
154 thread_checker_.DetachFromThread(); 153 thread_checker_.DetachFromThread();
155 } 154 }
156 155
157 IndexedDBCallbacks::~IndexedDBCallbacks() { 156 IndexedDBCallbacks::~IndexedDBCallbacks() {
(...skipping 15 matching lines...) Expand all
173 "WebCore.IndexedDB.OpenTime.Error", 172 "WebCore.IndexedDB.OpenTime.Error",
174 base::TimeTicks::Now() - connection_open_start_time_); 173 base::TimeTicks::Now() - connection_open_start_time_);
175 connection_open_start_time_ = base::TimeTicks(); 174 connection_open_start_time_ = base::TimeTicks();
176 } 175 }
177 } 176 }
178 177
179 void IndexedDBCallbacks::OnSuccess(const std::vector<base::string16>& value) { 178 void IndexedDBCallbacks::OnSuccess(const std::vector<base::string16>& value) {
180 DCHECK(thread_checker_.CalledOnValidThread()); 179 DCHECK(thread_checker_.CalledOnValidThread());
181 DCHECK(dispatcher_host_); 180 DCHECK(dispatcher_host_);
182 DCHECK(io_helper_); 181 DCHECK(io_helper_);
183 DCHECK_EQ(kNoTransaction, host_transaction_id_);
184 182
185 BrowserThread::PostTask( 183 BrowserThread::PostTask(
186 BrowserThread::IO, FROM_HERE, 184 BrowserThread::IO, FROM_HERE,
187 base::Bind(&IOThreadHelper::SendSuccessStringList, 185 base::Bind(&IOThreadHelper::SendSuccessStringList,
188 base::Unretained(io_helper_.get()), value)); 186 base::Unretained(io_helper_.get()), value));
189 dispatcher_host_ = nullptr; 187 dispatcher_host_ = nullptr;
190 } 188 }
191 189
192 void IndexedDBCallbacks::OnBlocked(int64_t existing_version) { 190 void IndexedDBCallbacks::OnBlocked(int64_t existing_version) {
193 DCHECK(thread_checker_.CalledOnValidThread()); 191 DCHECK(thread_checker_.CalledOnValidThread());
(...skipping 20 matching lines...) Expand all
214 212
215 void IndexedDBCallbacks::OnUpgradeNeeded( 213 void IndexedDBCallbacks::OnUpgradeNeeded(
216 int64_t old_version, 214 int64_t old_version,
217 std::unique_ptr<IndexedDBConnection> connection, 215 std::unique_ptr<IndexedDBConnection> connection,
218 const IndexedDBDatabaseMetadata& metadata, 216 const IndexedDBDatabaseMetadata& metadata,
219 const IndexedDBDataLossInfo& data_loss_info) { 217 const IndexedDBDataLossInfo& data_loss_info) {
220 DCHECK(thread_checker_.CalledOnValidThread()); 218 DCHECK(thread_checker_.CalledOnValidThread());
221 DCHECK(dispatcher_host_); 219 DCHECK(dispatcher_host_);
222 DCHECK(io_helper_); 220 DCHECK(io_helper_);
223 221
224 DCHECK_NE(kNoTransaction, host_transaction_id_);
225 DCHECK(!database_sent_); 222 DCHECK(!database_sent_);
226 223
227 data_loss_ = data_loss_info.status; 224 data_loss_ = data_loss_info.status;
228 dispatcher_host_->RegisterTransactionId(host_transaction_id_, origin_);
229 database_sent_ = true; 225 database_sent_ = true;
230 auto database = base::MakeUnique<DatabaseImpl>(std::move(connection), origin_, 226 auto database = base::MakeUnique<DatabaseImpl>(std::move(connection), origin_,
231 dispatcher_host_); 227 dispatcher_host_);
232 228
233 BrowserThread::PostTask( 229 BrowserThread::PostTask(
234 BrowserThread::IO, FROM_HERE, 230 BrowserThread::IO, FROM_HERE,
235 base::Bind(&IOThreadHelper::SendUpgradeNeeded, 231 base::Bind(&IOThreadHelper::SendUpgradeNeeded,
236 base::Unretained(io_helper_.get()), base::Passed(&database), 232 base::Unretained(io_helper_.get()), base::Passed(&database),
237 old_version, data_loss_info.status, data_loss_info.message, 233 old_version, data_loss_info.status, data_loss_info.message,
238 metadata)); 234 metadata));
239 235
240 if (!connection_open_start_time_.is_null()) { 236 if (!connection_open_start_time_.is_null()) {
241 UMA_HISTOGRAM_MEDIUM_TIMES( 237 UMA_HISTOGRAM_MEDIUM_TIMES(
242 "WebCore.IndexedDB.OpenTime.UpgradeNeeded", 238 "WebCore.IndexedDB.OpenTime.UpgradeNeeded",
243 base::TimeTicks::Now() - connection_open_start_time_); 239 base::TimeTicks::Now() - connection_open_start_time_);
244 connection_open_start_time_ = base::TimeTicks(); 240 connection_open_start_time_ = base::TimeTicks();
245 } 241 }
246 } 242 }
247 243
248 void IndexedDBCallbacks::OnSuccess( 244 void IndexedDBCallbacks::OnSuccess(
249 std::unique_ptr<IndexedDBConnection> connection, 245 std::unique_ptr<IndexedDBConnection> connection,
250 const IndexedDBDatabaseMetadata& metadata) { 246 const IndexedDBDatabaseMetadata& metadata) {
251 DCHECK(thread_checker_.CalledOnValidThread()); 247 DCHECK(thread_checker_.CalledOnValidThread());
252 DCHECK(dispatcher_host_); 248 DCHECK(dispatcher_host_);
253 DCHECK(io_helper_); 249 DCHECK(io_helper_);
254 250
255 DCHECK_NE(kNoTransaction, host_transaction_id_);
256 DCHECK_EQ(database_sent_, !connection); 251 DCHECK_EQ(database_sent_, !connection);
257 252
258 scoped_refptr<IndexedDBCallbacks> self(this); 253 scoped_refptr<IndexedDBCallbacks> self(this);
259 254
260 // Only send a new Database if the connection was not previously sent in 255 // Only send a new Database if the connection was not previously sent in
261 // OnUpgradeNeeded. 256 // OnUpgradeNeeded.
262 std::unique_ptr<DatabaseImpl> database; 257 std::unique_ptr<DatabaseImpl> database;
263 if (!database_sent_) 258 if (!database_sent_)
264 database.reset( 259 database.reset(
265 new DatabaseImpl(std::move(connection), origin_, dispatcher_host_)); 260 new DatabaseImpl(std::move(connection), origin_, dispatcher_host_));
266 261
267 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, 262 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
268 base::Bind(&IOThreadHelper::SendSuccessDatabase, 263 base::Bind(&IOThreadHelper::SendSuccessDatabase,
269 base::Unretained(io_helper_.get()), 264 base::Unretained(io_helper_.get()),
270 base::Passed(&database), metadata)); 265 base::Passed(&database), metadata));
271 dispatcher_host_ = nullptr; 266 dispatcher_host_ = nullptr;
272 267
273 if (!connection_open_start_time_.is_null()) { 268 if (!connection_open_start_time_.is_null()) {
274 UMA_HISTOGRAM_MEDIUM_TIMES( 269 UMA_HISTOGRAM_MEDIUM_TIMES(
275 "WebCore.IndexedDB.OpenTime.Success", 270 "WebCore.IndexedDB.OpenTime.Success",
276 base::TimeTicks::Now() - connection_open_start_time_); 271 base::TimeTicks::Now() - connection_open_start_time_);
277 connection_open_start_time_ = base::TimeTicks(); 272 connection_open_start_time_ = base::TimeTicks();
278 } 273 }
279 } 274 }
280 275
281 void IndexedDBCallbacks::OnSuccess(scoped_refptr<IndexedDBCursor> cursor, 276 void IndexedDBCallbacks::OnSuccess(std::unique_ptr<IndexedDBCursor> cursor,
282 const IndexedDBKey& key, 277 const IndexedDBKey& key,
283 const IndexedDBKey& primary_key, 278 const IndexedDBKey& primary_key,
284 IndexedDBValue* value) { 279 IndexedDBValue* value) {
285 DCHECK(thread_checker_.CalledOnValidThread()); 280 DCHECK(thread_checker_.CalledOnValidThread());
286 DCHECK(dispatcher_host_); 281 DCHECK(dispatcher_host_);
287 DCHECK(io_helper_); 282 DCHECK(io_helper_);
288 283
289 DCHECK_EQ(kNoTransaction, host_transaction_id_);
290 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); 284 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_);
291 285
292 auto cursor_impl = 286 auto cursor_impl = base::MakeUnique<CursorImpl>(std::move(cursor), origin_,
293 base::MakeUnique<CursorImpl>(cursor, origin_, dispatcher_host_); 287 dispatcher_host_);
294 288
295 ::indexed_db::mojom::ValuePtr mojo_value; 289 ::indexed_db::mojom::ValuePtr mojo_value;
296 std::vector<IndexedDBBlobInfo> blob_info; 290 std::vector<IndexedDBBlobInfo> blob_info;
297 if (value) { 291 if (value) {
298 mojo_value = ConvertValue(value); 292 mojo_value = ConvertValue(value);
299 blob_info.swap(value->blob_info); 293 blob_info.swap(value->blob_info);
300 } 294 }
301 295
302 BrowserThread::PostTask( 296 BrowserThread::PostTask(
303 BrowserThread::IO, FROM_HERE, 297 BrowserThread::IO, FROM_HERE,
304 base::Bind(&IOThreadHelper::SendSuccessCursor, 298 base::Bind(&IOThreadHelper::SendSuccessCursor,
305 base::Unretained(io_helper_.get()), base::Passed(&cursor_impl), 299 base::Unretained(io_helper_.get()), base::Passed(&cursor_impl),
306 key, primary_key, base::Passed(&mojo_value), 300 key, primary_key, base::Passed(&mojo_value),
307 base::Passed(&blob_info))); 301 base::Passed(&blob_info)));
308 dispatcher_host_ = nullptr; 302 dispatcher_host_ = nullptr;
309 } 303 }
310 304
311 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& key, 305 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& key,
312 const IndexedDBKey& primary_key, 306 const IndexedDBKey& primary_key,
313 IndexedDBValue* value) { 307 IndexedDBValue* value) {
314 DCHECK(thread_checker_.CalledOnValidThread()); 308 DCHECK(thread_checker_.CalledOnValidThread());
315 DCHECK(dispatcher_host_); 309 DCHECK(dispatcher_host_);
316 DCHECK(io_helper_); 310 DCHECK(io_helper_);
317 311
318 DCHECK_EQ(kNoTransaction, host_transaction_id_);
319 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); 312 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_);
320 313
321 ::indexed_db::mojom::ValuePtr mojo_value; 314 ::indexed_db::mojom::ValuePtr mojo_value;
322 std::vector<IndexedDBBlobInfo> blob_info; 315 std::vector<IndexedDBBlobInfo> blob_info;
323 if (value) { 316 if (value) {
324 mojo_value = ConvertValue(value); 317 mojo_value = ConvertValue(value);
325 blob_info.swap(value->blob_info); 318 blob_info.swap(value->blob_info);
326 } 319 }
327 320
328 BrowserThread::PostTask( 321 BrowserThread::PostTask(
329 BrowserThread::IO, FROM_HERE, 322 BrowserThread::IO, FROM_HERE,
330 base::Bind(&IOThreadHelper::SendSuccessCursorContinue, 323 base::Bind(&IOThreadHelper::SendSuccessCursorContinue,
331 base::Unretained(io_helper_.get()), key, primary_key, 324 base::Unretained(io_helper_.get()), key, primary_key,
332 base::Passed(&mojo_value), base::Passed(&blob_info))); 325 base::Passed(&mojo_value), base::Passed(&blob_info)));
333 dispatcher_host_ = nullptr; 326 dispatcher_host_ = nullptr;
334 } 327 }
335 328
336 void IndexedDBCallbacks::OnSuccessWithPrefetch( 329 void IndexedDBCallbacks::OnSuccessWithPrefetch(
337 const std::vector<IndexedDBKey>& keys, 330 const std::vector<IndexedDBKey>& keys,
338 const std::vector<IndexedDBKey>& primary_keys, 331 const std::vector<IndexedDBKey>& primary_keys,
339 std::vector<IndexedDBValue>* values) { 332 std::vector<IndexedDBValue>* values) {
340 DCHECK(thread_checker_.CalledOnValidThread()); 333 DCHECK(thread_checker_.CalledOnValidThread());
341 DCHECK(dispatcher_host_); 334 DCHECK(dispatcher_host_);
342 DCHECK(io_helper_); 335 DCHECK(io_helper_);
343 DCHECK_EQ(keys.size(), primary_keys.size()); 336 DCHECK_EQ(keys.size(), primary_keys.size());
344 DCHECK_EQ(keys.size(), values->size()); 337 DCHECK_EQ(keys.size(), values->size());
345 338
346 DCHECK_EQ(kNoTransaction, host_transaction_id_);
347 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); 339 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_);
348 340
349 std::vector<::indexed_db::mojom::ValuePtr> mojo_values; 341 std::vector<::indexed_db::mojom::ValuePtr> mojo_values;
350 mojo_values.reserve(values->size()); 342 mojo_values.reserve(values->size());
351 for (size_t i = 0; i < values->size(); ++i) 343 for (size_t i = 0; i < values->size(); ++i)
352 mojo_values.push_back(ConvertValue(&(*values)[i])); 344 mojo_values.push_back(ConvertValue(&(*values)[i]));
353 345
354 BrowserThread::PostTask( 346 BrowserThread::PostTask(
355 BrowserThread::IO, FROM_HERE, 347 BrowserThread::IO, FROM_HERE,
356 base::Bind(&IOThreadHelper::SendSuccessCursorPrefetch, 348 base::Bind(&IOThreadHelper::SendSuccessCursorPrefetch,
357 base::Unretained(io_helper_.get()), keys, primary_keys, 349 base::Unretained(io_helper_.get()), keys, primary_keys,
358 base::Passed(&mojo_values), *values)); 350 base::Passed(&mojo_values), *values));
359 dispatcher_host_ = nullptr; 351 dispatcher_host_ = nullptr;
360 } 352 }
361 353
362 void IndexedDBCallbacks::OnSuccess(IndexedDBReturnValue* value) { 354 void IndexedDBCallbacks::OnSuccess(IndexedDBReturnValue* value) {
363 DCHECK(thread_checker_.CalledOnValidThread()); 355 DCHECK(thread_checker_.CalledOnValidThread());
364 DCHECK(dispatcher_host_); 356 DCHECK(dispatcher_host_);
365 357
366 DCHECK_EQ(kNoTransaction, host_transaction_id_);
367 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); 358 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_);
368 359
369 ::indexed_db::mojom::ReturnValuePtr mojo_value; 360 ::indexed_db::mojom::ReturnValuePtr mojo_value;
370 std::vector<IndexedDBBlobInfo> blob_info; 361 std::vector<IndexedDBBlobInfo> blob_info;
371 if (value) { 362 if (value) {
372 mojo_value = ConvertReturnValue(value); 363 mojo_value = ConvertReturnValue(value);
373 blob_info = value->blob_info; 364 blob_info = value->blob_info;
374 } 365 }
375 366
376 BrowserThread::PostTask( 367 BrowserThread::PostTask(
377 BrowserThread::IO, FROM_HERE, 368 BrowserThread::IO, FROM_HERE,
378 base::Bind(&IOThreadHelper::SendSuccessValue, 369 base::Bind(&IOThreadHelper::SendSuccessValue,
379 base::Unretained(io_helper_.get()), base::Passed(&mojo_value), 370 base::Unretained(io_helper_.get()), base::Passed(&mojo_value),
380 base::Passed(&blob_info))); 371 base::Passed(&blob_info)));
381 dispatcher_host_ = nullptr; 372 dispatcher_host_ = nullptr;
382 } 373 }
383 374
384 void IndexedDBCallbacks::OnSuccessArray( 375 void IndexedDBCallbacks::OnSuccessArray(
385 std::vector<IndexedDBReturnValue>* values) { 376 std::vector<IndexedDBReturnValue>* values) {
386 DCHECK(thread_checker_.CalledOnValidThread()); 377 DCHECK(thread_checker_.CalledOnValidThread());
387 DCHECK(dispatcher_host_); 378 DCHECK(dispatcher_host_);
388 DCHECK(io_helper_); 379 DCHECK(io_helper_);
389 380
390 DCHECK_EQ(kNoTransaction, host_transaction_id_);
391 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); 381 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_);
392 382
393 std::vector<::indexed_db::mojom::ReturnValuePtr> mojo_values; 383 std::vector<::indexed_db::mojom::ReturnValuePtr> mojo_values;
394 mojo_values.reserve(values->size()); 384 mojo_values.reserve(values->size());
395 for (size_t i = 0; i < values->size(); ++i) 385 for (size_t i = 0; i < values->size(); ++i)
396 mojo_values.push_back(ConvertReturnValue(&(*values)[i])); 386 mojo_values.push_back(ConvertReturnValue(&(*values)[i]));
397 387
398 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, 388 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
399 base::Bind(&IOThreadHelper::SendSuccessArray, 389 base::Bind(&IOThreadHelper::SendSuccessArray,
400 base::Unretained(io_helper_.get()), 390 base::Unretained(io_helper_.get()),
401 base::Passed(&mojo_values), *values)); 391 base::Passed(&mojo_values), *values));
402 dispatcher_host_ = nullptr; 392 dispatcher_host_ = nullptr;
403 } 393 }
404 394
405 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& value) { 395 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& value) {
406 DCHECK(thread_checker_.CalledOnValidThread()); 396 DCHECK(thread_checker_.CalledOnValidThread());
407 DCHECK(dispatcher_host_); 397 DCHECK(dispatcher_host_);
408 DCHECK(io_helper_); 398 DCHECK(io_helper_);
409 399
410 DCHECK_EQ(kNoTransaction, host_transaction_id_);
411 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); 400 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_);
412 401
413 BrowserThread::PostTask( 402 BrowserThread::PostTask(
414 BrowserThread::IO, FROM_HERE, 403 BrowserThread::IO, FROM_HERE,
415 base::Bind(&IOThreadHelper::SendSuccessKey, 404 base::Bind(&IOThreadHelper::SendSuccessKey,
416 base::Unretained(io_helper_.get()), value)); 405 base::Unretained(io_helper_.get()), value));
417 dispatcher_host_ = nullptr; 406 dispatcher_host_ = nullptr;
418 } 407 }
419 408
420 void IndexedDBCallbacks::OnSuccess(int64_t value) { 409 void IndexedDBCallbacks::OnSuccess(int64_t value) {
421 DCHECK(thread_checker_.CalledOnValidThread()); 410 DCHECK(thread_checker_.CalledOnValidThread());
422 DCHECK(dispatcher_host_); 411 DCHECK(dispatcher_host_);
423 412
424 BrowserThread::PostTask( 413 BrowserThread::PostTask(
425 BrowserThread::IO, FROM_HERE, 414 BrowserThread::IO, FROM_HERE,
426 base::Bind(&IOThreadHelper::SendSuccessInteger, 415 base::Bind(&IOThreadHelper::SendSuccessInteger,
427 base::Unretained(io_helper_.get()), value)); 416 base::Unretained(io_helper_.get()), value));
428 dispatcher_host_ = nullptr; 417 dispatcher_host_ = nullptr;
429 } 418 }
430 419
431 void IndexedDBCallbacks::OnSuccess() { 420 void IndexedDBCallbacks::OnSuccess() {
432 DCHECK(thread_checker_.CalledOnValidThread()); 421 DCHECK(thread_checker_.CalledOnValidThread());
433 DCHECK(dispatcher_host_); 422 DCHECK(dispatcher_host_);
434 DCHECK(io_helper_); 423 DCHECK(io_helper_);
435 424
436 DCHECK_EQ(kNoTransaction, host_transaction_id_);
437 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); 425 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_);
438 426
439 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, 427 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
440 base::Bind(&IOThreadHelper::SendSuccess, 428 base::Bind(&IOThreadHelper::SendSuccess,
441 base::Unretained(io_helper_.get()))); 429 base::Unretained(io_helper_.get())));
442 dispatcher_host_ = nullptr; 430 dispatcher_host_ = nullptr;
443 } 431 }
444 432
445 bool IndexedDBCallbacks::IsValid() const { 433 bool IndexedDBCallbacks::IsValid() const {
446 DCHECK(dispatcher_host_.get()); 434 DCHECK(dispatcher_host_.get());
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
607 IDB_TRACE("IndexedDBCallbacks::CreateAllBlobs"); 595 IDB_TRACE("IndexedDBCallbacks::CreateAllBlobs");
608 DCHECK_EQ(blob_info.size(), blob_or_file_info->size()); 596 DCHECK_EQ(blob_info.size(), blob_or_file_info->size());
609 if (!dispatcher_host_->blob_storage_context()) 597 if (!dispatcher_host_->blob_storage_context())
610 return false; 598 return false;
611 for (size_t i = 0; i < blob_info.size(); ++i) 599 for (size_t i = 0; i < blob_info.size(); ++i)
612 (*blob_or_file_info)[i]->uuid = CreateBlobData(blob_info[i]); 600 (*blob_or_file_info)[i]->uuid = CreateBlobData(blob_info[i]);
613 return true; 601 return true;
614 } 602 }
615 603
616 } // namespace content 604 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698