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

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

Issue 2941353002: Indexed DB: Use BindOnce / OnceCallback / OnceClosure where applicable (Closed)
Patch Set: Created 3 years, 6 months 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 <memory> 10 #include <memory>
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 46
47 // The following two objects protect the given objects from being destructed on 47 // The following two objects protect the given objects from being destructed on
48 // the IO thread if we have a shutdown or an error. 48 // the IO thread if we have a shutdown or an error.
49 struct SafeIOThreadConnectionWrapper { 49 struct SafeIOThreadConnectionWrapper {
50 SafeIOThreadConnectionWrapper(std::unique_ptr<IndexedDBConnection> connection) 50 SafeIOThreadConnectionWrapper(std::unique_ptr<IndexedDBConnection> connection)
51 : connection(std::move(connection)), 51 : connection(std::move(connection)),
52 idb_runner(base::SequencedTaskRunnerHandle::Get()) {} 52 idb_runner(base::SequencedTaskRunnerHandle::Get()) {}
53 ~SafeIOThreadConnectionWrapper() { 53 ~SafeIOThreadConnectionWrapper() {
54 if (connection) { 54 if (connection) {
55 idb_runner->PostTask( 55 idb_runner->PostTask(
56 FROM_HERE, base::Bind( 56 FROM_HERE, base::BindOnce(
57 [](std::unique_ptr<IndexedDBConnection> connection) { 57 [](std::unique_ptr<IndexedDBConnection> connection) {
58 connection->ForceClose(); 58 connection->ForceClose();
59 }, 59 },
60 base::Passed(&connection))); 60 base::Passed(&connection)));
61 } 61 }
62 } 62 }
63 SafeIOThreadConnectionWrapper(SafeIOThreadConnectionWrapper&& other) = 63 SafeIOThreadConnectionWrapper(SafeIOThreadConnectionWrapper&& other) =
64 default; 64 default;
65 65
66 std::unique_ptr<IndexedDBConnection> connection; 66 std::unique_ptr<IndexedDBConnection> connection;
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 IndexedDBCallbacks::~IndexedDBCallbacks() { 210 IndexedDBCallbacks::~IndexedDBCallbacks() {
211 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); 211 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
212 } 212 }
213 213
214 void IndexedDBCallbacks::OnError(const IndexedDBDatabaseError& error) { 214 void IndexedDBCallbacks::OnError(const IndexedDBDatabaseError& error) {
215 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); 215 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
216 DCHECK(!complete_); 216 DCHECK(!complete_);
217 217
218 BrowserThread::PostTask( 218 BrowserThread::PostTask(
219 BrowserThread::IO, FROM_HERE, 219 BrowserThread::IO, FROM_HERE,
220 base::Bind(&IOThreadHelper::SendError, base::Unretained(io_helper_.get()), 220 base::BindOnce(&IOThreadHelper::SendError,
221 error)); 221 base::Unretained(io_helper_.get()), error));
222 complete_ = true; 222 complete_ = true;
223 223
224 if (!connection_open_start_time_.is_null()) { 224 if (!connection_open_start_time_.is_null()) {
225 UMA_HISTOGRAM_MEDIUM_TIMES( 225 UMA_HISTOGRAM_MEDIUM_TIMES(
226 "WebCore.IndexedDB.OpenTime.Error", 226 "WebCore.IndexedDB.OpenTime.Error",
227 base::TimeTicks::Now() - connection_open_start_time_); 227 base::TimeTicks::Now() - connection_open_start_time_);
228 connection_open_start_time_ = base::TimeTicks(); 228 connection_open_start_time_ = base::TimeTicks();
229 } 229 }
230 } 230 }
231 231
232 void IndexedDBCallbacks::OnSuccess(const std::vector<base::string16>& value) { 232 void IndexedDBCallbacks::OnSuccess(const std::vector<base::string16>& value) {
233 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); 233 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
234 DCHECK(!complete_); 234 DCHECK(!complete_);
235 DCHECK(io_helper_); 235 DCHECK(io_helper_);
236 236
237 BrowserThread::PostTask( 237 BrowserThread::PostTask(
238 BrowserThread::IO, FROM_HERE, 238 BrowserThread::IO, FROM_HERE,
239 base::Bind(&IOThreadHelper::SendSuccessStringList, 239 base::BindOnce(&IOThreadHelper::SendSuccessStringList,
240 base::Unretained(io_helper_.get()), value)); 240 base::Unretained(io_helper_.get()), value));
241 complete_ = true; 241 complete_ = true;
242 } 242 }
243 243
244 void IndexedDBCallbacks::OnBlocked(int64_t existing_version) { 244 void IndexedDBCallbacks::OnBlocked(int64_t existing_version) {
245 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); 245 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
246 DCHECK(!complete_); 246 DCHECK(!complete_);
247 DCHECK(io_helper_); 247 DCHECK(io_helper_);
248 248
249 if (sent_blocked_) 249 if (sent_blocked_)
250 return; 250 return;
251 251
252 sent_blocked_ = true; 252 sent_blocked_ = true;
253 253
254 BrowserThread::PostTask( 254 BrowserThread::PostTask(
255 BrowserThread::IO, FROM_HERE, 255 BrowserThread::IO, FROM_HERE,
256 base::Bind(&IOThreadHelper::SendBlocked, 256 base::BindOnce(&IOThreadHelper::SendBlocked,
257 base::Unretained(io_helper_.get()), existing_version)); 257 base::Unretained(io_helper_.get()), existing_version));
258 258
259 if (!connection_open_start_time_.is_null()) { 259 if (!connection_open_start_time_.is_null()) {
260 UMA_HISTOGRAM_MEDIUM_TIMES( 260 UMA_HISTOGRAM_MEDIUM_TIMES(
261 "WebCore.IndexedDB.OpenTime.Blocked", 261 "WebCore.IndexedDB.OpenTime.Blocked",
262 base::TimeTicks::Now() - connection_open_start_time_); 262 base::TimeTicks::Now() - connection_open_start_time_);
263 connection_open_start_time_ = base::TimeTicks(); 263 connection_open_start_time_ = base::TimeTicks();
264 } 264 }
265 } 265 }
266 266
267 void IndexedDBCallbacks::OnUpgradeNeeded( 267 void IndexedDBCallbacks::OnUpgradeNeeded(
268 int64_t old_version, 268 int64_t old_version,
269 std::unique_ptr<IndexedDBConnection> connection, 269 std::unique_ptr<IndexedDBConnection> connection,
270 const IndexedDBDatabaseMetadata& metadata, 270 const IndexedDBDatabaseMetadata& metadata,
271 const IndexedDBDataLossInfo& data_loss_info) { 271 const IndexedDBDataLossInfo& data_loss_info) {
272 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); 272 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
273 DCHECK(!complete_); 273 DCHECK(!complete_);
274 DCHECK(io_helper_); 274 DCHECK(io_helper_);
275 275
276 DCHECK(!connection_created_); 276 DCHECK(!connection_created_);
277 277
278 data_loss_ = data_loss_info.status; 278 data_loss_ = data_loss_info.status;
279 connection_created_ = true; 279 connection_created_ = true;
280 280
281 SafeIOThreadConnectionWrapper wrapper(std::move(connection)); 281 SafeIOThreadConnectionWrapper wrapper(std::move(connection));
282 BrowserThread::PostTask( 282 BrowserThread::PostTask(
283 BrowserThread::IO, FROM_HERE, 283 BrowserThread::IO, FROM_HERE,
284 base::Bind(&IOThreadHelper::SendUpgradeNeeded, 284 base::BindOnce(&IOThreadHelper::SendUpgradeNeeded,
285 base::Unretained(io_helper_.get()), base::Passed(&wrapper), 285 base::Unretained(io_helper_.get()), base::Passed(&wrapper),
286 old_version, data_loss_info.status, data_loss_info.message, 286 old_version, data_loss_info.status, data_loss_info.message,
287 metadata)); 287 metadata));
288 288
289 if (!connection_open_start_time_.is_null()) { 289 if (!connection_open_start_time_.is_null()) {
290 UMA_HISTOGRAM_MEDIUM_TIMES( 290 UMA_HISTOGRAM_MEDIUM_TIMES(
291 "WebCore.IndexedDB.OpenTime.UpgradeNeeded", 291 "WebCore.IndexedDB.OpenTime.UpgradeNeeded",
292 base::TimeTicks::Now() - connection_open_start_time_); 292 base::TimeTicks::Now() - connection_open_start_time_);
293 connection_open_start_time_ = base::TimeTicks(); 293 connection_open_start_time_ = base::TimeTicks();
294 } 294 }
295 } 295 }
296 296
297 void IndexedDBCallbacks::OnSuccess( 297 void IndexedDBCallbacks::OnSuccess(
298 std::unique_ptr<IndexedDBConnection> connection, 298 std::unique_ptr<IndexedDBConnection> connection,
299 const IndexedDBDatabaseMetadata& metadata) { 299 const IndexedDBDatabaseMetadata& metadata) {
300 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); 300 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
301 DCHECK(!complete_); 301 DCHECK(!complete_);
302 DCHECK(io_helper_); 302 DCHECK(io_helper_);
303 303
304 DCHECK_EQ(connection_created_, !connection); 304 DCHECK_EQ(connection_created_, !connection);
305 305
306 scoped_refptr<IndexedDBCallbacks> self(this); 306 scoped_refptr<IndexedDBCallbacks> self(this);
307 307
308 // Only create a new connection if one was not previously sent in 308 // Only create a new connection if one was not previously sent in
309 // OnUpgradeNeeded. 309 // OnUpgradeNeeded.
310 std::unique_ptr<IndexedDBConnection> database_connection; 310 std::unique_ptr<IndexedDBConnection> database_connection;
311 if (!connection_created_) 311 if (!connection_created_)
312 database_connection = std::move(connection); 312 database_connection = std::move(connection);
313 313
314 SafeIOThreadConnectionWrapper wrapper(std::move(database_connection)); 314 SafeIOThreadConnectionWrapper wrapper(std::move(database_connection));
315 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, 315 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
316 base::Bind(&IOThreadHelper::SendSuccessDatabase, 316 base::BindOnce(&IOThreadHelper::SendSuccessDatabase,
317 base::Unretained(io_helper_.get()), 317 base::Unretained(io_helper_.get()),
318 base::Passed(&wrapper), metadata)); 318 base::Passed(&wrapper), metadata));
319 complete_ = true; 319 complete_ = true;
320 320
321 if (!connection_open_start_time_.is_null()) { 321 if (!connection_open_start_time_.is_null()) {
322 UMA_HISTOGRAM_MEDIUM_TIMES( 322 UMA_HISTOGRAM_MEDIUM_TIMES(
323 "WebCore.IndexedDB.OpenTime.Success", 323 "WebCore.IndexedDB.OpenTime.Success",
324 base::TimeTicks::Now() - connection_open_start_time_); 324 base::TimeTicks::Now() - connection_open_start_time_);
325 connection_open_start_time_ = base::TimeTicks(); 325 connection_open_start_time_ = base::TimeTicks();
326 } 326 }
327 } 327 }
328 328
(...skipping 11 matching lines...) Expand all
340 std::vector<IndexedDBBlobInfo> blob_info; 340 std::vector<IndexedDBBlobInfo> blob_info;
341 if (value) { 341 if (value) {
342 mojo_value = ConvertAndEraseValue(value); 342 mojo_value = ConvertAndEraseValue(value);
343 blob_info.swap(value->blob_info); 343 blob_info.swap(value->blob_info);
344 } 344 }
345 345
346 SafeIOThreadCursorWrapper cursor_wrapper(std::move(cursor)); 346 SafeIOThreadCursorWrapper cursor_wrapper(std::move(cursor));
347 347
348 BrowserThread::PostTask( 348 BrowserThread::PostTask(
349 BrowserThread::IO, FROM_HERE, 349 BrowserThread::IO, FROM_HERE,
350 base::Bind(&IOThreadHelper::SendSuccessCursor, 350 base::BindOnce(&IOThreadHelper::SendSuccessCursor,
351 base::Unretained(io_helper_.get()), 351 base::Unretained(io_helper_.get()),
352 base::Passed(&cursor_wrapper), key, primary_key, 352 base::Passed(&cursor_wrapper), key, primary_key,
353 base::Passed(&mojo_value), base::Passed(&blob_info))); 353 base::Passed(&mojo_value), base::Passed(&blob_info)));
354 complete_ = true; 354 complete_ = true;
355 } 355 }
356 356
357 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& key, 357 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& key,
358 const IndexedDBKey& primary_key, 358 const IndexedDBKey& primary_key,
359 IndexedDBValue* value) { 359 IndexedDBValue* value) {
360 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); 360 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
361 DCHECK(!complete_); 361 DCHECK(!complete_);
362 DCHECK(io_helper_); 362 DCHECK(io_helper_);
363 363
364 DCHECK_EQ(blink::kWebIDBDataLossNone, data_loss_); 364 DCHECK_EQ(blink::kWebIDBDataLossNone, data_loss_);
365 365
366 ::indexed_db::mojom::ValuePtr mojo_value; 366 ::indexed_db::mojom::ValuePtr mojo_value;
367 std::vector<IndexedDBBlobInfo> blob_info; 367 std::vector<IndexedDBBlobInfo> blob_info;
368 if (value) { 368 if (value) {
369 mojo_value = ConvertAndEraseValue(value); 369 mojo_value = ConvertAndEraseValue(value);
370 blob_info.swap(value->blob_info); 370 blob_info.swap(value->blob_info);
371 } 371 }
372 372
373 BrowserThread::PostTask( 373 BrowserThread::PostTask(
374 BrowserThread::IO, FROM_HERE, 374 BrowserThread::IO, FROM_HERE,
375 base::Bind(&IOThreadHelper::SendSuccessCursorContinue, 375 base::BindOnce(&IOThreadHelper::SendSuccessCursorContinue,
376 base::Unretained(io_helper_.get()), key, primary_key, 376 base::Unretained(io_helper_.get()), key, primary_key,
377 base::Passed(&mojo_value), base::Passed(&blob_info))); 377 base::Passed(&mojo_value), base::Passed(&blob_info)));
378 complete_ = true; 378 complete_ = true;
379 } 379 }
380 380
381 void IndexedDBCallbacks::OnSuccessWithPrefetch( 381 void IndexedDBCallbacks::OnSuccessWithPrefetch(
382 const std::vector<IndexedDBKey>& keys, 382 const std::vector<IndexedDBKey>& keys,
383 const std::vector<IndexedDBKey>& primary_keys, 383 const std::vector<IndexedDBKey>& primary_keys,
384 std::vector<IndexedDBValue>* values) { 384 std::vector<IndexedDBValue>* values) {
385 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); 385 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
386 DCHECK(!complete_); 386 DCHECK(!complete_);
387 DCHECK(io_helper_); 387 DCHECK(io_helper_);
388 DCHECK_EQ(keys.size(), primary_keys.size()); 388 DCHECK_EQ(keys.size(), primary_keys.size());
389 DCHECK_EQ(keys.size(), values->size()); 389 DCHECK_EQ(keys.size(), values->size());
390 390
391 DCHECK_EQ(blink::kWebIDBDataLossNone, data_loss_); 391 DCHECK_EQ(blink::kWebIDBDataLossNone, data_loss_);
392 392
393 std::vector<::indexed_db::mojom::ValuePtr> mojo_values; 393 std::vector<::indexed_db::mojom::ValuePtr> mojo_values;
394 mojo_values.reserve(values->size()); 394 mojo_values.reserve(values->size());
395 for (size_t i = 0; i < values->size(); ++i) 395 for (size_t i = 0; i < values->size(); ++i)
396 mojo_values.push_back(ConvertAndEraseValue(&(*values)[i])); 396 mojo_values.push_back(ConvertAndEraseValue(&(*values)[i]));
397 397
398 BrowserThread::PostTask( 398 BrowserThread::PostTask(
399 BrowserThread::IO, FROM_HERE, 399 BrowserThread::IO, FROM_HERE,
400 base::Bind(&IOThreadHelper::SendSuccessCursorPrefetch, 400 base::BindOnce(&IOThreadHelper::SendSuccessCursorPrefetch,
401 base::Unretained(io_helper_.get()), keys, primary_keys, 401 base::Unretained(io_helper_.get()), keys, primary_keys,
402 base::Passed(&mojo_values), *values)); 402 base::Passed(&mojo_values), *values));
403 complete_ = true; 403 complete_ = true;
404 } 404 }
405 405
406 void IndexedDBCallbacks::OnSuccess(IndexedDBReturnValue* value) { 406 void IndexedDBCallbacks::OnSuccess(IndexedDBReturnValue* value) {
407 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); 407 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
408 DCHECK(!complete_); 408 DCHECK(!complete_);
409 409
410 DCHECK_EQ(blink::kWebIDBDataLossNone, data_loss_); 410 DCHECK_EQ(blink::kWebIDBDataLossNone, data_loss_);
411 411
412 ::indexed_db::mojom::ReturnValuePtr mojo_value; 412 ::indexed_db::mojom::ReturnValuePtr mojo_value;
413 std::vector<IndexedDBBlobInfo> blob_info; 413 std::vector<IndexedDBBlobInfo> blob_info;
414 if (value) { 414 if (value) {
415 mojo_value = ConvertReturnValue(value); 415 mojo_value = ConvertReturnValue(value);
416 blob_info = value->blob_info; 416 blob_info = value->blob_info;
417 } 417 }
418 418
419 BrowserThread::PostTask( 419 BrowserThread::PostTask(
420 BrowserThread::IO, FROM_HERE, 420 BrowserThread::IO, FROM_HERE,
421 base::Bind(&IOThreadHelper::SendSuccessValue, 421 base::BindOnce(&IOThreadHelper::SendSuccessValue,
422 base::Unretained(io_helper_.get()), base::Passed(&mojo_value), 422 base::Unretained(io_helper_.get()),
423 base::Passed(&blob_info))); 423 base::Passed(&mojo_value), base::Passed(&blob_info)));
424 complete_ = true; 424 complete_ = true;
425 } 425 }
426 426
427 void IndexedDBCallbacks::OnSuccessArray( 427 void IndexedDBCallbacks::OnSuccessArray(
428 std::vector<IndexedDBReturnValue>* values) { 428 std::vector<IndexedDBReturnValue>* values) {
429 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); 429 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
430 DCHECK(!complete_); 430 DCHECK(!complete_);
431 DCHECK(io_helper_); 431 DCHECK(io_helper_);
432 432
433 DCHECK_EQ(blink::kWebIDBDataLossNone, data_loss_); 433 DCHECK_EQ(blink::kWebIDBDataLossNone, data_loss_);
434 434
435 std::vector<::indexed_db::mojom::ReturnValuePtr> mojo_values; 435 std::vector<::indexed_db::mojom::ReturnValuePtr> mojo_values;
436 mojo_values.reserve(values->size()); 436 mojo_values.reserve(values->size());
437 for (size_t i = 0; i < values->size(); ++i) 437 for (size_t i = 0; i < values->size(); ++i)
438 mojo_values.push_back(ConvertReturnValue(&(*values)[i])); 438 mojo_values.push_back(ConvertReturnValue(&(*values)[i]));
439 439
440 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, 440 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
441 base::Bind(&IOThreadHelper::SendSuccessArray, 441 base::BindOnce(&IOThreadHelper::SendSuccessArray,
442 base::Unretained(io_helper_.get()), 442 base::Unretained(io_helper_.get()),
443 base::Passed(&mojo_values), *values)); 443 base::Passed(&mojo_values), *values));
444 complete_ = true; 444 complete_ = true;
445 } 445 }
446 446
447 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& value) { 447 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& value) {
448 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); 448 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
449 DCHECK(!complete_); 449 DCHECK(!complete_);
450 DCHECK(io_helper_); 450 DCHECK(io_helper_);
451 451
452 DCHECK_EQ(blink::kWebIDBDataLossNone, data_loss_); 452 DCHECK_EQ(blink::kWebIDBDataLossNone, data_loss_);
453 453
454 BrowserThread::PostTask( 454 BrowserThread::PostTask(
455 BrowserThread::IO, FROM_HERE, 455 BrowserThread::IO, FROM_HERE,
456 base::Bind(&IOThreadHelper::SendSuccessKey, 456 base::BindOnce(&IOThreadHelper::SendSuccessKey,
457 base::Unretained(io_helper_.get()), value)); 457 base::Unretained(io_helper_.get()), value));
458 complete_ = true; 458 complete_ = true;
459 } 459 }
460 460
461 void IndexedDBCallbacks::OnSuccess(int64_t value) { 461 void IndexedDBCallbacks::OnSuccess(int64_t value) {
462 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); 462 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
463 DCHECK(!complete_); 463 DCHECK(!complete_);
464 464
465 BrowserThread::PostTask( 465 BrowserThread::PostTask(
466 BrowserThread::IO, FROM_HERE, 466 BrowserThread::IO, FROM_HERE,
467 base::Bind(&IOThreadHelper::SendSuccessInteger, 467 base::BindOnce(&IOThreadHelper::SendSuccessInteger,
468 base::Unretained(io_helper_.get()), value)); 468 base::Unretained(io_helper_.get()), value));
469 complete_ = true; 469 complete_ = true;
470 } 470 }
471 471
472 void IndexedDBCallbacks::OnSuccess() { 472 void IndexedDBCallbacks::OnSuccess() {
473 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); 473 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
474 DCHECK(!complete_); 474 DCHECK(!complete_);
475 DCHECK(io_helper_); 475 DCHECK(io_helper_);
476 476
477 DCHECK_EQ(blink::kWebIDBDataLossNone, data_loss_); 477 DCHECK_EQ(blink::kWebIDBDataLossNone, data_loss_);
478 478
479 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, 479 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
480 base::Bind(&IOThreadHelper::SendSuccess, 480 base::BindOnce(&IOThreadHelper::SendSuccess,
481 base::Unretained(io_helper_.get()))); 481 base::Unretained(io_helper_.get())));
482 complete_ = true; 482 complete_ = true;
483 } 483 }
484 484
485 void IndexedDBCallbacks::SetConnectionOpenStartTime( 485 void IndexedDBCallbacks::SetConnectionOpenStartTime(
486 const base::TimeTicks& start_time) { 486 const base::TimeTicks& start_time) {
487 connection_open_start_time_ = start_time; 487 connection_open_start_time_ = start_time;
488 } 488 }
489 489
490 IndexedDBCallbacks::IOThreadHelper::IOThreadHelper( 490 IndexedDBCallbacks::IOThreadHelper::IOThreadHelper(
491 CallbacksAssociatedPtrInfo callbacks_info, 491 CallbacksAssociatedPtrInfo callbacks_info,
492 base::WeakPtr<IndexedDBDispatcherHost> dispatcher_host, 492 base::WeakPtr<IndexedDBDispatcherHost> dispatcher_host,
493 url::Origin origin, 493 url::Origin origin,
494 scoped_refptr<base::SequencedTaskRunner> idb_runner) 494 scoped_refptr<base::SequencedTaskRunner> idb_runner)
495 : dispatcher_host_(std::move(dispatcher_host)), 495 : dispatcher_host_(std::move(dispatcher_host)),
496 origin_(origin), 496 origin_(origin),
497 idb_runner_(idb_runner) { 497 idb_runner_(idb_runner) {
498 DCHECK_CURRENTLY_ON(BrowserThread::IO); 498 DCHECK_CURRENTLY_ON(BrowserThread::IO);
499 if (callbacks_info.is_valid()) { 499 if (callbacks_info.is_valid()) {
500 callbacks_.Bind(std::move(callbacks_info)); 500 callbacks_.Bind(std::move(callbacks_info));
501 callbacks_.set_connection_error_handler( 501 callbacks_.set_connection_error_handler(base::BindOnce(
502 base::Bind(&IOThreadHelper::OnConnectionError, base::Unretained(this))); 502 &IOThreadHelper::OnConnectionError, base::Unretained(this)));
503 } 503 }
504 } 504 }
505 505
506 IndexedDBCallbacks::IOThreadHelper::~IOThreadHelper() { 506 IndexedDBCallbacks::IOThreadHelper::~IOThreadHelper() {
507 DCHECK_CURRENTLY_ON(BrowserThread::IO); 507 DCHECK_CURRENTLY_ON(BrowserThread::IO);
508 } 508 }
509 509
510 void IndexedDBCallbacks::IOThreadHelper::SendError( 510 void IndexedDBCallbacks::IOThreadHelper::SendError(
511 const IndexedDBDatabaseError& error) { 511 const IndexedDBDatabaseError& error) {
512 DCHECK_CURRENTLY_ON(BrowserThread::IO); 512 DCHECK_CURRENTLY_ON(BrowserThread::IO);
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
766 return true; 766 return true;
767 } 767 }
768 768
769 void IndexedDBCallbacks::IOThreadHelper::OnConnectionError() { 769 void IndexedDBCallbacks::IOThreadHelper::OnConnectionError() {
770 DCHECK_CURRENTLY_ON(BrowserThread::IO); 770 DCHECK_CURRENTLY_ON(BrowserThread::IO);
771 callbacks_.reset(); 771 callbacks_.reset();
772 dispatcher_host_ = nullptr; 772 dispatcher_host_ = nullptr;
773 } 773 }
774 774
775 } // namespace content 775 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/indexed_db/indexed_db_browsertest.cc ('k') | content/browser/indexed_db/indexed_db_context_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698