| 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 "chrome/browser/sync_file_system/drive_metadata_store.h" | 5 #include "chrome/browser/sync_file_system/drive_metadata_store.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 DriveMetadataStore::~DriveMetadataStore() { | 243 DriveMetadataStore::~DriveMetadataStore() { |
| 244 DCHECK(CalledOnValidThread()); | 244 DCHECK(CalledOnValidThread()); |
| 245 file_task_runner_->DeleteSoon(FROM_HERE, db_.release()); | 245 file_task_runner_->DeleteSoon(FROM_HERE, db_.release()); |
| 246 } | 246 } |
| 247 | 247 |
| 248 void DriveMetadataStore::Initialize(const InitializationCallback& callback) { | 248 void DriveMetadataStore::Initialize(const InitializationCallback& callback) { |
| 249 DCHECK(CalledOnValidThread()); | 249 DCHECK(CalledOnValidThread()); |
| 250 DriveMetadataDBContents* contents = new DriveMetadataDBContents; | 250 DriveMetadataDBContents* contents = new DriveMetadataDBContents; |
| 251 | 251 |
| 252 base::PostTaskAndReplyWithResult( | 252 base::PostTaskAndReplyWithResult( |
| 253 file_task_runner_, FROM_HERE, | 253 file_task_runner_.get(), |
| 254 FROM_HERE, |
| 254 base::Bind(InitializeDBOnFileThread, db_.get(), contents), | 255 base::Bind(InitializeDBOnFileThread, db_.get(), contents), |
| 255 base::Bind(&DriveMetadataStore::DidInitialize, AsWeakPtr(), | 256 base::Bind(&DriveMetadataStore::DidInitialize, |
| 256 callback, base::Owned(contents))); | 257 AsWeakPtr(), |
| 258 callback, |
| 259 base::Owned(contents))); |
| 257 } | 260 } |
| 258 | 261 |
| 259 void DriveMetadataStore::DidInitialize(const InitializationCallback& callback, | 262 void DriveMetadataStore::DidInitialize(const InitializationCallback& callback, |
| 260 DriveMetadataDBContents* contents, | 263 DriveMetadataDBContents* contents, |
| 261 SyncStatusCode status) { | 264 SyncStatusCode status) { |
| 262 DCHECK(CalledOnValidThread()); | 265 DCHECK(CalledOnValidThread()); |
| 263 DCHECK(contents); | 266 DCHECK(contents); |
| 264 | 267 |
| 265 db_status_ = status; | 268 db_status_ = status; |
| 266 if (status != SYNC_STATUS_OK) { | 269 if (status != SYNC_STATUS_OK) { |
| (...skipping 13 matching lines...) Expand all Loading... |
| 280 InsertReverseMap(disabled_origins_, &origin_by_resource_id_); | 283 InsertReverseMap(disabled_origins_, &origin_by_resource_id_); |
| 281 | 284 |
| 282 callback.Run(status, largest_changestamp_ <= 0); | 285 callback.Run(status, largest_changestamp_ <= 0); |
| 283 } | 286 } |
| 284 | 287 |
| 285 void DriveMetadataStore::RestoreSyncRootDirectory( | 288 void DriveMetadataStore::RestoreSyncRootDirectory( |
| 286 const SyncStatusCallback& callback) { | 289 const SyncStatusCallback& callback) { |
| 287 DCHECK(CalledOnValidThread()); | 290 DCHECK(CalledOnValidThread()); |
| 288 std::string* sync_root_directory_resource_id = new std::string; | 291 std::string* sync_root_directory_resource_id = new std::string; |
| 289 base::PostTaskAndReplyWithResult( | 292 base::PostTaskAndReplyWithResult( |
| 290 file_task_runner_, FROM_HERE, | 293 file_task_runner_.get(), |
| 294 FROM_HERE, |
| 291 base::Bind(&DriveMetadataDB::GetSyncRootDirectory, | 295 base::Bind(&DriveMetadataDB::GetSyncRootDirectory, |
| 292 base::Unretained(db_.get()), | 296 base::Unretained(db_.get()), |
| 293 sync_root_directory_resource_id), | 297 sync_root_directory_resource_id), |
| 294 base::Bind(&DriveMetadataStore::DidRestoreSyncRootDirectory, | 298 base::Bind(&DriveMetadataStore::DidRestoreSyncRootDirectory, |
| 295 AsWeakPtr(), callback, | 299 AsWeakPtr(), |
| 300 callback, |
| 296 base::Owned(sync_root_directory_resource_id))); | 301 base::Owned(sync_root_directory_resource_id))); |
| 297 } | 302 } |
| 298 | 303 |
| 299 void DriveMetadataStore::DidRestoreSyncRootDirectory( | 304 void DriveMetadataStore::DidRestoreSyncRootDirectory( |
| 300 const SyncStatusCallback& callback, | 305 const SyncStatusCallback& callback, |
| 301 std::string* sync_root_directory_resource_id, | 306 std::string* sync_root_directory_resource_id, |
| 302 SyncStatusCode status) { | 307 SyncStatusCode status) { |
| 303 DCHECK(CalledOnValidThread()); | 308 DCHECK(CalledOnValidThread()); |
| 304 DCHECK(sync_root_directory_resource_id); | 309 DCHECK(sync_root_directory_resource_id); |
| 305 | 310 |
| 306 db_status_ = status; | 311 db_status_ = status; |
| 307 if (status != SYNC_STATUS_OK) { | 312 if (status != SYNC_STATUS_OK) { |
| 308 callback.Run(status); | 313 callback.Run(status); |
| 309 return; | 314 return; |
| 310 } | 315 } |
| 311 | 316 |
| 312 sync_root_directory_resource_id_.swap(*sync_root_directory_resource_id); | 317 sync_root_directory_resource_id_.swap(*sync_root_directory_resource_id); |
| 313 callback.Run(status); | 318 callback.Run(status); |
| 314 } | 319 } |
| 315 | 320 |
| 316 void DriveMetadataStore::RestoreOrigins( | 321 void DriveMetadataStore::RestoreOrigins( |
| 317 const SyncStatusCallback& callback) { | 322 const SyncStatusCallback& callback) { |
| 318 DCHECK(CalledOnValidThread()); | 323 DCHECK(CalledOnValidThread()); |
| 319 ResourceIdByOrigin* incremental_sync_origins = new ResourceIdByOrigin; | 324 ResourceIdByOrigin* incremental_sync_origins = new ResourceIdByOrigin; |
| 320 ResourceIdByOrigin* disabled_origins = new ResourceIdByOrigin; | 325 ResourceIdByOrigin* disabled_origins = new ResourceIdByOrigin; |
| 321 base::PostTaskAndReplyWithResult( | 326 base::PostTaskAndReplyWithResult( |
| 322 file_task_runner_, FROM_HERE, | 327 file_task_runner_.get(), |
| 328 FROM_HERE, |
| 323 base::Bind(&DriveMetadataDB::GetOrigins, | 329 base::Bind(&DriveMetadataDB::GetOrigins, |
| 324 base::Unretained(db_.get()), | 330 base::Unretained(db_.get()), |
| 325 incremental_sync_origins, | 331 incremental_sync_origins, |
| 326 disabled_origins), | 332 disabled_origins), |
| 327 base::Bind(&DriveMetadataStore::DidRestoreOrigins, | 333 base::Bind(&DriveMetadataStore::DidRestoreOrigins, |
| 328 AsWeakPtr(), callback, | 334 AsWeakPtr(), |
| 335 callback, |
| 329 base::Owned(incremental_sync_origins), | 336 base::Owned(incremental_sync_origins), |
| 330 base::Owned(disabled_origins))); | 337 base::Owned(disabled_origins))); |
| 331 } | 338 } |
| 332 | 339 |
| 333 void DriveMetadataStore::DidRestoreOrigins( | 340 void DriveMetadataStore::DidRestoreOrigins( |
| 334 const SyncStatusCallback& callback, | 341 const SyncStatusCallback& callback, |
| 335 ResourceIdByOrigin* incremental_sync_origins, | 342 ResourceIdByOrigin* incremental_sync_origins, |
| 336 ResourceIdByOrigin* disabled_origins, | 343 ResourceIdByOrigin* disabled_origins, |
| 337 SyncStatusCode status) { | 344 SyncStatusCode status) { |
| 338 DCHECK(CalledOnValidThread()); | 345 DCHECK(CalledOnValidThread()); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 359 return db_->db_.get(); | 366 return db_->db_.get(); |
| 360 } | 367 } |
| 361 | 368 |
| 362 void DriveMetadataStore::SetLargestChangeStamp( | 369 void DriveMetadataStore::SetLargestChangeStamp( |
| 363 int64 largest_changestamp, | 370 int64 largest_changestamp, |
| 364 const SyncStatusCallback& callback) { | 371 const SyncStatusCallback& callback) { |
| 365 DCHECK(CalledOnValidThread()); | 372 DCHECK(CalledOnValidThread()); |
| 366 DCHECK_EQ(SYNC_STATUS_OK, db_status_); | 373 DCHECK_EQ(SYNC_STATUS_OK, db_status_); |
| 367 largest_changestamp_ = largest_changestamp; | 374 largest_changestamp_ = largest_changestamp; |
| 368 base::PostTaskAndReplyWithResult( | 375 base::PostTaskAndReplyWithResult( |
| 369 file_task_runner_, FROM_HERE, | 376 file_task_runner_.get(), |
| 377 FROM_HERE, |
| 370 base::Bind(&DriveMetadataDB::SetLargestChangestamp, | 378 base::Bind(&DriveMetadataDB::SetLargestChangestamp, |
| 371 base::Unretained(db_.get()), largest_changestamp), | 379 base::Unretained(db_.get()), |
| 380 largest_changestamp), |
| 372 base::Bind(&DriveMetadataStore::UpdateDBStatusAndInvokeCallback, | 381 base::Bind(&DriveMetadataStore::UpdateDBStatusAndInvokeCallback, |
| 373 AsWeakPtr(), callback)); | 382 AsWeakPtr(), |
| 383 callback)); |
| 374 } | 384 } |
| 375 | 385 |
| 376 int64 DriveMetadataStore::GetLargestChangeStamp() const { | 386 int64 DriveMetadataStore::GetLargestChangeStamp() const { |
| 377 DCHECK(CalledOnValidThread()); | 387 DCHECK(CalledOnValidThread()); |
| 378 DCHECK_EQ(SYNC_STATUS_OK, db_status_); | 388 DCHECK_EQ(SYNC_STATUS_OK, db_status_); |
| 379 return largest_changestamp_; | 389 return largest_changestamp_; |
| 380 } | 390 } |
| 381 | 391 |
| 382 void DriveMetadataStore::UpdateEntry( | 392 void DriveMetadataStore::UpdateEntry( |
| 383 const FileSystemURL& url, | 393 const FileSystemURL& url, |
| 384 const DriveMetadata& metadata, | 394 const DriveMetadata& metadata, |
| 385 const SyncStatusCallback& callback) { | 395 const SyncStatusCallback& callback) { |
| 386 DCHECK(CalledOnValidThread()); | 396 DCHECK(CalledOnValidThread()); |
| 387 DCHECK_EQ(SYNC_STATUS_OK, db_status_); | 397 DCHECK_EQ(SYNC_STATUS_OK, db_status_); |
| 388 DCHECK(!metadata.conflicted() || !metadata.to_be_fetched()); | 398 DCHECK(!metadata.conflicted() || !metadata.to_be_fetched()); |
| 389 | 399 |
| 390 std::pair<PathToMetadata::iterator, bool> result = | 400 std::pair<PathToMetadata::iterator, bool> result = |
| 391 metadata_map_[url.origin()].insert(std::make_pair(url.path(), metadata)); | 401 metadata_map_[url.origin()].insert(std::make_pair(url.path(), metadata)); |
| 392 if (!result.second) | 402 if (!result.second) |
| 393 result.first->second = metadata; | 403 result.first->second = metadata; |
| 394 | 404 |
| 395 base::PostTaskAndReplyWithResult( | 405 base::PostTaskAndReplyWithResult( |
| 396 file_task_runner_, FROM_HERE, | 406 file_task_runner_.get(), |
| 397 base::Bind(&DriveMetadataDB::UpdateEntry, base::Unretained(db_.get()), | 407 FROM_HERE, |
| 398 url, metadata), | 408 base::Bind(&DriveMetadataDB::UpdateEntry, |
| 409 base::Unretained(db_.get()), |
| 410 url, |
| 411 metadata), |
| 399 base::Bind(&DriveMetadataStore::UpdateDBStatusAndInvokeCallback, | 412 base::Bind(&DriveMetadataStore::UpdateDBStatusAndInvokeCallback, |
| 400 AsWeakPtr(), callback)); | 413 AsWeakPtr(), |
| 414 callback)); |
| 401 } | 415 } |
| 402 | 416 |
| 403 void DriveMetadataStore::DeleteEntry( | 417 void DriveMetadataStore::DeleteEntry( |
| 404 const FileSystemURL& url, | 418 const FileSystemURL& url, |
| 405 const SyncStatusCallback& callback) { | 419 const SyncStatusCallback& callback) { |
| 406 DCHECK(CalledOnValidThread()); | 420 DCHECK(CalledOnValidThread()); |
| 407 MetadataMap::iterator found = metadata_map_.find(url.origin()); | 421 MetadataMap::iterator found = metadata_map_.find(url.origin()); |
| 408 if (found == metadata_map_.end()) { | 422 if (found == metadata_map_.end()) { |
| 409 base::MessageLoopProxy::current()->PostTask( | 423 base::MessageLoopProxy::current()->PostTask( |
| 410 FROM_HERE, | 424 FROM_HERE, |
| 411 base::Bind(callback, SYNC_DATABASE_ERROR_NOT_FOUND)); | 425 base::Bind(callback, SYNC_DATABASE_ERROR_NOT_FOUND)); |
| 412 return; | 426 return; |
| 413 } | 427 } |
| 414 | 428 |
| 415 if (found->second.erase(url.path()) == 1) { | 429 if (found->second.erase(url.path()) == 1) { |
| 416 base::PostTaskAndReplyWithResult( | 430 base::PostTaskAndReplyWithResult( |
| 417 file_task_runner_, FROM_HERE, | 431 file_task_runner_.get(), |
| 418 base::Bind(&DriveMetadataDB::DeleteEntry, | 432 FROM_HERE, |
| 419 base::Unretained(db_.get()), url), | 433 base::Bind( |
| 434 &DriveMetadataDB::DeleteEntry, base::Unretained(db_.get()), url), |
| 420 base::Bind(&DriveMetadataStore::UpdateDBStatusAndInvokeCallback, | 435 base::Bind(&DriveMetadataStore::UpdateDBStatusAndInvokeCallback, |
| 421 AsWeakPtr(), callback)); | 436 AsWeakPtr(), |
| 437 callback)); |
| 422 return; | 438 return; |
| 423 } | 439 } |
| 424 | 440 |
| 425 base::MessageLoopProxy::current()->PostTask( | 441 base::MessageLoopProxy::current()->PostTask( |
| 426 FROM_HERE, | 442 FROM_HERE, |
| 427 base::Bind(callback, SYNC_DATABASE_ERROR_NOT_FOUND)); | 443 base::Bind(callback, SYNC_DATABASE_ERROR_NOT_FOUND)); |
| 428 } | 444 } |
| 429 | 445 |
| 430 SyncStatusCode DriveMetadataStore::ReadEntry(const FileSystemURL& url, | 446 SyncStatusCode DriveMetadataStore::ReadEntry(const FileSystemURL& url, |
| 431 DriveMetadata* metadata) const { | 447 DriveMetadata* metadata) const { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 450 DCHECK(CalledOnValidThread()); | 466 DCHECK(CalledOnValidThread()); |
| 451 DCHECK(!IsIncrementalSyncOrigin(origin)); | 467 DCHECK(!IsIncrementalSyncOrigin(origin)); |
| 452 DCHECK(!IsOriginDisabled(origin)); | 468 DCHECK(!IsOriginDisabled(origin)); |
| 453 DCHECK_EQ(SYNC_STATUS_OK, db_status_); | 469 DCHECK_EQ(SYNC_STATUS_OK, db_status_); |
| 454 | 470 |
| 455 incremental_sync_origins_.insert(std::make_pair(origin, resource_id)); | 471 incremental_sync_origins_.insert(std::make_pair(origin, resource_id)); |
| 456 origin_by_resource_id_.insert(std::make_pair(resource_id, origin)); | 472 origin_by_resource_id_.insert(std::make_pair(resource_id, origin)); |
| 457 | 473 |
| 458 // Store a pair of |origin| and |resource_id| in the DB. | 474 // Store a pair of |origin| and |resource_id| in the DB. |
| 459 base::PostTaskAndReplyWithResult( | 475 base::PostTaskAndReplyWithResult( |
| 460 file_task_runner_, FROM_HERE, | 476 file_task_runner_.get(), |
| 477 FROM_HERE, |
| 461 base::Bind(&DriveMetadataDB::UpdateOriginAsIncrementalSync, | 478 base::Bind(&DriveMetadataDB::UpdateOriginAsIncrementalSync, |
| 462 base::Unretained(db_.get()), origin, resource_id), | 479 base::Unretained(db_.get()), |
| 480 origin, |
| 481 resource_id), |
| 463 base::Bind(&DriveMetadataStore::UpdateDBStatus, AsWeakPtr())); | 482 base::Bind(&DriveMetadataStore::UpdateDBStatus, AsWeakPtr())); |
| 464 } | 483 } |
| 465 | 484 |
| 466 void DriveMetadataStore::SetSyncRootDirectory(const std::string& resource_id) { | 485 void DriveMetadataStore::SetSyncRootDirectory(const std::string& resource_id) { |
| 467 DCHECK(CalledOnValidThread()); | 486 DCHECK(CalledOnValidThread()); |
| 468 | 487 |
| 469 sync_root_directory_resource_id_ = resource_id; | 488 sync_root_directory_resource_id_ = resource_id; |
| 470 | 489 |
| 471 // Set the resource ID for the sync root directory in the DB. | 490 // Set the resource ID for the sync root directory in the DB. |
| 472 base::PostTaskAndReplyWithResult( | 491 base::PostTaskAndReplyWithResult( |
| 473 file_task_runner_, FROM_HERE, | 492 file_task_runner_.get(), |
| 493 FROM_HERE, |
| 474 base::Bind(&DriveMetadataDB::SetSyncRootDirectory, | 494 base::Bind(&DriveMetadataDB::SetSyncRootDirectory, |
| 475 base::Unretained(db_.get()), resource_id), | 495 base::Unretained(db_.get()), |
| 496 resource_id), |
| 476 base::Bind(&DriveMetadataStore::UpdateDBStatus, AsWeakPtr())); | 497 base::Bind(&DriveMetadataStore::UpdateDBStatus, AsWeakPtr())); |
| 477 } | 498 } |
| 478 | 499 |
| 479 void DriveMetadataStore::SetOriginRootDirectory( | 500 void DriveMetadataStore::SetOriginRootDirectory( |
| 480 const GURL& origin, | 501 const GURL& origin, |
| 481 const std::string& resource_id) { | 502 const std::string& resource_id) { |
| 482 DCHECK(CalledOnValidThread()); | 503 DCHECK(CalledOnValidThread()); |
| 483 DCHECK(IsKnownOrigin(origin)); | 504 DCHECK(IsKnownOrigin(origin)); |
| 484 | 505 |
| 485 DriveMetadataDB::OriginSyncType sync_type; | 506 DriveMetadataDB::OriginSyncType sync_type; |
| 486 if (UpdateResourceIdMap( | 507 if (UpdateResourceIdMap( |
| 487 &incremental_sync_origins_, &origin_by_resource_id_, | 508 &incremental_sync_origins_, &origin_by_resource_id_, |
| 488 origin, resource_id)) { | 509 origin, resource_id)) { |
| 489 sync_type = DriveMetadataDB::INCREMENTAL_SYNC_ORIGIN; | 510 sync_type = DriveMetadataDB::INCREMENTAL_SYNC_ORIGIN; |
| 490 } else if (UpdateResourceIdMap(&disabled_origins_, &origin_by_resource_id_, | 511 } else if (UpdateResourceIdMap(&disabled_origins_, &origin_by_resource_id_, |
| 491 origin, resource_id)) { | 512 origin, resource_id)) { |
| 492 sync_type = DriveMetadataDB::DISABLED_ORIGIN; | 513 sync_type = DriveMetadataDB::DISABLED_ORIGIN; |
| 493 } else { | 514 } else { |
| 494 return; | 515 return; |
| 495 } | 516 } |
| 496 base::PostTaskAndReplyWithResult( | 517 base::PostTaskAndReplyWithResult( |
| 497 file_task_runner_, FROM_HERE, | 518 file_task_runner_.get(), |
| 519 FROM_HERE, |
| 498 base::Bind(&DriveMetadataDB::SetOriginRootDirectory, | 520 base::Bind(&DriveMetadataDB::SetOriginRootDirectory, |
| 499 base::Unretained(db_.get()), origin, sync_type, resource_id), | 521 base::Unretained(db_.get()), |
| 522 origin, |
| 523 sync_type, |
| 524 resource_id), |
| 500 base::Bind(&DriveMetadataStore::UpdateDBStatus, AsWeakPtr())); | 525 base::Bind(&DriveMetadataStore::UpdateDBStatus, AsWeakPtr())); |
| 501 } | 526 } |
| 502 | 527 |
| 503 bool DriveMetadataStore::IsKnownOrigin(const GURL& origin) const { | 528 bool DriveMetadataStore::IsKnownOrigin(const GURL& origin) const { |
| 504 DCHECK(CalledOnValidThread()); | 529 DCHECK(CalledOnValidThread()); |
| 505 return IsIncrementalSyncOrigin(origin) || IsOriginDisabled(origin); | 530 return IsIncrementalSyncOrigin(origin) || IsOriginDisabled(origin); |
| 506 } | 531 } |
| 507 | 532 |
| 508 bool DriveMetadataStore::IsIncrementalSyncOrigin(const GURL& origin) const { | 533 bool DriveMetadataStore::IsIncrementalSyncOrigin(const GURL& origin) const { |
| 509 DCHECK(CalledOnValidThread()); | 534 DCHECK(CalledOnValidThread()); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 529 disabled_origins_.erase(found); | 554 disabled_origins_.erase(found); |
| 530 | 555 |
| 531 // |Origin| goes back to DriveFileSyncService.pending_batch_sync_origins_ | 556 // |Origin| goes back to DriveFileSyncService.pending_batch_sync_origins_ |
| 532 // only and is not stored in drive_metadata_store. | 557 // only and is not stored in drive_metadata_store. |
| 533 found = incremental_sync_origins_.find(origin); | 558 found = incremental_sync_origins_.find(origin); |
| 534 if (found != incremental_sync_origins_.end()) | 559 if (found != incremental_sync_origins_.end()) |
| 535 incremental_sync_origins_.erase(found); | 560 incremental_sync_origins_.erase(found); |
| 536 | 561 |
| 537 // Store a pair of |origin| and |resource_id| in the DB. | 562 // Store a pair of |origin| and |resource_id| in the DB. |
| 538 base::PostTaskAndReplyWithResult( | 563 base::PostTaskAndReplyWithResult( |
| 539 file_task_runner_, FROM_HERE, | 564 file_task_runner_.get(), |
| 565 FROM_HERE, |
| 540 base::Bind(&DriveMetadataDB::EnableOrigin, | 566 base::Bind(&DriveMetadataDB::EnableOrigin, |
| 541 base::Unretained(db_.get()), origin, resource_id), | 567 base::Unretained(db_.get()), |
| 568 origin, |
| 569 resource_id), |
| 542 base::Bind(&DriveMetadataStore::DidUpdateOrigin, AsWeakPtr(), callback)); | 570 base::Bind(&DriveMetadataStore::DidUpdateOrigin, AsWeakPtr(), callback)); |
| 543 } | 571 } |
| 544 | 572 |
| 545 void DriveMetadataStore::DisableOrigin( | 573 void DriveMetadataStore::DisableOrigin( |
| 546 const GURL& origin, | 574 const GURL& origin, |
| 547 const SyncStatusCallback& callback) { | 575 const SyncStatusCallback& callback) { |
| 548 DCHECK(CalledOnValidThread()); | 576 DCHECK(CalledOnValidThread()); |
| 549 | 577 |
| 550 std::string resource_id; | 578 std::string resource_id; |
| 551 std::map<GURL, std::string>::iterator found = | 579 std::map<GURL, std::string>::iterator found = |
| 552 incremental_sync_origins_.find(origin); | 580 incremental_sync_origins_.find(origin); |
| 553 if (found != incremental_sync_origins_.end()) { | 581 if (found != incremental_sync_origins_.end()) { |
| 554 resource_id = found->second; | 582 resource_id = found->second; |
| 555 incremental_sync_origins_.erase(found); | 583 incremental_sync_origins_.erase(found); |
| 556 } | 584 } |
| 557 | 585 |
| 558 if (resource_id.empty()) { | 586 if (resource_id.empty()) { |
| 559 // |origin| has not been registered yet. | 587 // |origin| has not been registered yet. |
| 560 return; | 588 return; |
| 561 } | 589 } |
| 562 | 590 |
| 563 disabled_origins_.insert(std::make_pair(origin, resource_id)); | 591 disabled_origins_.insert(std::make_pair(origin, resource_id)); |
| 564 | 592 |
| 565 // Store a pair of |origin| and |resource_id| in the DB. | 593 // Store a pair of |origin| and |resource_id| in the DB. |
| 566 base::PostTaskAndReplyWithResult( | 594 base::PostTaskAndReplyWithResult( |
| 567 file_task_runner_, FROM_HERE, | 595 file_task_runner_.get(), |
| 596 FROM_HERE, |
| 568 base::Bind(&DriveMetadataDB::DisableOrigin, | 597 base::Bind(&DriveMetadataDB::DisableOrigin, |
| 569 base::Unretained(db_.get()), origin, resource_id), | 598 base::Unretained(db_.get()), |
| 599 origin, |
| 600 resource_id), |
| 570 base::Bind(&DriveMetadataStore::DidUpdateOrigin, AsWeakPtr(), callback)); | 601 base::Bind(&DriveMetadataStore::DidUpdateOrigin, AsWeakPtr(), callback)); |
| 571 } | 602 } |
| 572 | 603 |
| 573 void DriveMetadataStore::RemoveOrigin( | 604 void DriveMetadataStore::RemoveOrigin( |
| 574 const GURL& origin, | 605 const GURL& origin, |
| 575 const SyncStatusCallback& callback) { | 606 const SyncStatusCallback& callback) { |
| 576 DCHECK(CalledOnValidThread()); | 607 DCHECK(CalledOnValidThread()); |
| 577 | 608 |
| 578 metadata_map_.erase(origin); | 609 metadata_map_.erase(origin); |
| 579 | 610 |
| 580 std::string resource_id; | 611 std::string resource_id; |
| 581 if (EraseIfExists(&incremental_sync_origins_, origin, &resource_id) || | 612 if (EraseIfExists(&incremental_sync_origins_, origin, &resource_id) || |
| 582 EraseIfExists(&disabled_origins_, origin, &resource_id)) { | 613 EraseIfExists(&disabled_origins_, origin, &resource_id)) { |
| 583 origin_by_resource_id_.erase(resource_id); | 614 origin_by_resource_id_.erase(resource_id); |
| 584 } | 615 } |
| 585 | 616 |
| 586 base::PostTaskAndReplyWithResult( | 617 base::PostTaskAndReplyWithResult( |
| 587 file_task_runner_, FROM_HERE, | 618 file_task_runner_.get(), |
| 588 base::Bind(&DriveMetadataDB::RemoveOrigin, | 619 FROM_HERE, |
| 589 base::Unretained(db_.get()), origin), | 620 base::Bind( |
| 621 &DriveMetadataDB::RemoveOrigin, base::Unretained(db_.get()), origin), |
| 590 base::Bind(&DriveMetadataStore::DidUpdateOrigin, AsWeakPtr(), callback)); | 622 base::Bind(&DriveMetadataStore::DidUpdateOrigin, AsWeakPtr(), callback)); |
| 591 } | 623 } |
| 592 | 624 |
| 593 void DriveMetadataStore::DidUpdateOrigin( | 625 void DriveMetadataStore::DidUpdateOrigin( |
| 594 const SyncStatusCallback& callback, | 626 const SyncStatusCallback& callback, |
| 595 SyncStatusCode status) { | 627 SyncStatusCode status) { |
| 596 UpdateDBStatus(status); | 628 UpdateDBStatus(status); |
| 597 callback.Run(status); | 629 callback.Run(status); |
| 598 } | 630 } |
| 599 | 631 |
| (...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1038 | 1070 |
| 1039 bool result = disabled_origins->insert( | 1071 bool result = disabled_origins->insert( |
| 1040 std::make_pair(origin, origin_resource_id)).second; | 1072 std::make_pair(origin, origin_resource_id)).second; |
| 1041 DCHECK(result); | 1073 DCHECK(result); |
| 1042 } | 1074 } |
| 1043 | 1075 |
| 1044 return SYNC_STATUS_OK; | 1076 return SYNC_STATUS_OK; |
| 1045 } | 1077 } |
| 1046 | 1078 |
| 1047 } // namespace sync_file_system | 1079 } // namespace sync_file_system |
| OLD | NEW |