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

Side by Side Diff: chrome/browser/sync_file_system/drive_metadata_store.cc

Issue 15410005: Deprecate DriveMetadataStore.batch_sync_origins (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase + extra test DriveMetadataStoreTest.DeprecateBatchSyncOrigins Created 7 years, 7 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 | Annotate | Revision Log
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 "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 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 103
104 found->second = resource_id; 104 found->second = resource_id;
105 return true; 105 return true;
106 } 106 }
107 107
108 } // namespace 108 } // namespace
109 109
110 class DriveMetadataDB { 110 class DriveMetadataDB {
111 public: 111 public:
112 enum OriginSyncType { 112 enum OriginSyncType {
113 BATCH_SYNC_ORIGIN,
114 INCREMENTAL_SYNC_ORIGIN, 113 INCREMENTAL_SYNC_ORIGIN,
115 DISABLED_ORIGIN 114 DISABLED_ORIGIN
116 }; 115 };
117 116
118 typedef DriveMetadataStore::MetadataMap MetadataMap; 117 typedef DriveMetadataStore::MetadataMap MetadataMap;
119 118
120 DriveMetadataDB(const base::FilePath& base_dir, 119 DriveMetadataDB(const base::FilePath& base_dir,
121 base::SequencedTaskRunner* task_runner); 120 base::SequencedTaskRunner* task_runner);
122 ~DriveMetadataDB(); 121 ~DriveMetadataDB();
123 122
(...skipping 20 matching lines...) Expand all
144 SyncStatusCode UpdateOriginAsBatchSync(const GURL& origin, 143 SyncStatusCode UpdateOriginAsBatchSync(const GURL& origin,
145 const std::string& resource_id); 144 const std::string& resource_id);
146 SyncStatusCode UpdateOriginAsIncrementalSync(const GURL& origin, 145 SyncStatusCode UpdateOriginAsIncrementalSync(const GURL& origin,
147 const std::string& resource_id); 146 const std::string& resource_id);
148 SyncStatusCode EnableOrigin(const GURL& origin, 147 SyncStatusCode EnableOrigin(const GURL& origin,
149 const std::string& resource_id); 148 const std::string& resource_id);
150 SyncStatusCode DisableOrigin(const GURL& origin, 149 SyncStatusCode DisableOrigin(const GURL& origin,
151 const std::string& resource_id); 150 const std::string& resource_id);
152 SyncStatusCode RemoveOrigin(const GURL& origin); 151 SyncStatusCode RemoveOrigin(const GURL& origin);
153 152
154 SyncStatusCode GetOrigins(ResourceIdByOrigin* batch_sync_origins, 153 SyncStatusCode GetOrigins(ResourceIdByOrigin* incremental_sync_origins,
155 ResourceIdByOrigin* incremental_sync_origins,
156 ResourceIdByOrigin* disabled_origins); 154 ResourceIdByOrigin* disabled_origins);
157 155
158 private: 156 private:
159 bool CalledOnValidThread() const { 157 bool CalledOnValidThread() const {
160 return task_runner_->RunsTasksOnCurrentThread(); 158 return task_runner_->RunsTasksOnCurrentThread();
161 } 159 }
162 160
163 scoped_refptr<base::SequencedTaskRunner> task_runner_; 161 scoped_refptr<base::SequencedTaskRunner> task_runner_;
164 162
165 std::string db_path_; 163 std::string db_path_;
166 scoped_ptr<leveldb::DB> db_; 164 scoped_ptr<leveldb::DB> db_;
167 165
168 DISALLOW_COPY_AND_ASSIGN(DriveMetadataDB); 166 DISALLOW_COPY_AND_ASSIGN(DriveMetadataDB);
169 }; 167 };
170 168
171 struct DriveMetadataDBContents { 169 struct DriveMetadataDBContents {
172 int64 largest_changestamp; 170 int64 largest_changestamp;
173 DriveMetadataStore::MetadataMap metadata_map; 171 DriveMetadataStore::MetadataMap metadata_map;
174 std::string sync_root_directory_resource_id; 172 std::string sync_root_directory_resource_id;
175 ResourceIdByOrigin batch_sync_origins;
176 ResourceIdByOrigin incremental_sync_origins; 173 ResourceIdByOrigin incremental_sync_origins;
177 ResourceIdByOrigin disabled_origins; 174 ResourceIdByOrigin disabled_origins;
178 }; 175 };
179 176
180 namespace { 177 namespace {
181 178
182 SyncStatusCode InitializeDBOnFileThread(DriveMetadataDB* db, 179 SyncStatusCode InitializeDBOnFileThread(DriveMetadataDB* db,
183 DriveMetadataDBContents* contents) { 180 DriveMetadataDBContents* contents) {
184 DCHECK(db); 181 DCHECK(db);
185 DCHECK(contents); 182 DCHECK(contents);
186 183
187 contents->largest_changestamp = 0; 184 contents->largest_changestamp = 0;
188 contents->metadata_map.clear(); 185 contents->metadata_map.clear();
189 contents->batch_sync_origins.clear();
190 contents->incremental_sync_origins.clear(); 186 contents->incremental_sync_origins.clear();
191 contents->disabled_origins.clear(); 187 contents->disabled_origins.clear();
192 188
193 bool created = false; 189 bool created = false;
194 SyncStatusCode status = db->Initialize(&created); 190 SyncStatusCode status = db->Initialize(&created);
195 if (status != SYNC_STATUS_OK) 191 if (status != SYNC_STATUS_OK)
196 return status; 192 return status;
197 193
198 if (!created) { 194 if (!created) {
199 status = db->MigrateDatabaseIfNeeded(); 195 status = db->MigrateDatabaseIfNeeded();
200 if (status != SYNC_STATUS_OK) { 196 if (status != SYNC_STATUS_OK) {
201 LOG(WARNING) << "Failed to migrate DriveMetadataStore to latest version."; 197 LOG(WARNING) << "Failed to migrate DriveMetadataStore to latest version.";
202 return status; 198 return status;
203 } 199 }
204 } 200 }
205 201
206 return db->ReadContents(contents); 202 return db->ReadContents(contents);
207 } 203 }
208 204
209 // Returns a key string for the given origin. 205 // Returns a key string for the given origin.
210 // For example, when |origin| is "http://www.example.com" and |sync_type| is 206 // For example, when |origin| is "http://www.example.com" and |sync_type| is
211 // BATCH_SYNC_ORIGIN, returns "BSYNC_ORIGIN: http://www.example.com". 207 // BATCH_SYNC_ORIGIN, returns "BSYNC_ORIGIN: http://www.example.com".
212 std::string CreateKeyForOriginRoot(const GURL& origin, 208 std::string CreateKeyForOriginRoot(const GURL& origin,
213 DriveMetadataDB::OriginSyncType sync_type) { 209 DriveMetadataDB::OriginSyncType sync_type) {
214 DCHECK(origin.is_valid()); 210 DCHECK(origin.is_valid());
215 switch (sync_type) { 211 switch (sync_type) {
216 case DriveMetadataDB::BATCH_SYNC_ORIGIN:
217 return kDriveBatchSyncOriginKeyPrefix + origin.spec();
218 case DriveMetadataDB::INCREMENTAL_SYNC_ORIGIN: 212 case DriveMetadataDB::INCREMENTAL_SYNC_ORIGIN:
219 return kDriveIncrementalSyncOriginKeyPrefix + origin.spec(); 213 return kDriveIncrementalSyncOriginKeyPrefix + origin.spec();
220 case DriveMetadataDB::DISABLED_ORIGIN: 214 case DriveMetadataDB::DISABLED_ORIGIN:
221 return kDriveDisabledOriginKeyPrefix + origin.spec(); 215 return kDriveDisabledOriginKeyPrefix + origin.spec();
222 } 216 }
223 NOTREACHED(); 217 NOTREACHED();
224 return std::string(); 218 return std::string();
225 } 219 }
226 220
227 void AddOriginsToVector(std::vector<GURL>* all_origins, 221 void AddOriginsToVector(std::vector<GURL>* all_origins,
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 281
288 db_status_ = status; 282 db_status_ = status;
289 if (status != SYNC_STATUS_OK) { 283 if (status != SYNC_STATUS_OK) {
290 callback.Run(status, false); 284 callback.Run(status, false);
291 return; 285 return;
292 } 286 }
293 287
294 largest_changestamp_ = contents->largest_changestamp; 288 largest_changestamp_ = contents->largest_changestamp;
295 metadata_map_.swap(contents->metadata_map); 289 metadata_map_.swap(contents->metadata_map);
296 sync_root_directory_resource_id_ = contents->sync_root_directory_resource_id; 290 sync_root_directory_resource_id_ = contents->sync_root_directory_resource_id;
297 batch_sync_origins_.swap(contents->batch_sync_origins);
298 incremental_sync_origins_.swap(contents->incremental_sync_origins); 291 incremental_sync_origins_.swap(contents->incremental_sync_origins);
299 disabled_origins_.swap(contents->disabled_origins); 292 disabled_origins_.swap(contents->disabled_origins);
300 // |largest_changestamp_| is set to 0 for a fresh empty database. 293 // |largest_changestamp_| is set to 0 for a fresh empty database.
301 294
302 origin_by_resource_id_.clear(); 295 origin_by_resource_id_.clear();
303 InsertReverseMap(batch_sync_origins_, &origin_by_resource_id_);
304 InsertReverseMap(incremental_sync_origins_, &origin_by_resource_id_); 296 InsertReverseMap(incremental_sync_origins_, &origin_by_resource_id_);
305 InsertReverseMap(disabled_origins_, &origin_by_resource_id_); 297 InsertReverseMap(disabled_origins_, &origin_by_resource_id_);
306 298
307 callback.Run(status, largest_changestamp_ <= 0); 299 callback.Run(status, largest_changestamp_ <= 0);
308 } 300 }
309 301
310 void DriveMetadataStore::RestoreSyncRootDirectory( 302 void DriveMetadataStore::RestoreSyncRootDirectory(
311 const SyncStatusCallback& callback) { 303 const SyncStatusCallback& callback) {
312 DCHECK(CalledOnValidThread()); 304 DCHECK(CalledOnValidThread());
313 std::string* sync_root_directory_resource_id = new std::string; 305 std::string* sync_root_directory_resource_id = new std::string;
(...skipping 20 matching lines...) Expand all
334 return; 326 return;
335 } 327 }
336 328
337 sync_root_directory_resource_id_.swap(*sync_root_directory_resource_id); 329 sync_root_directory_resource_id_.swap(*sync_root_directory_resource_id);
338 callback.Run(status); 330 callback.Run(status);
339 } 331 }
340 332
341 void DriveMetadataStore::RestoreOrigins( 333 void DriveMetadataStore::RestoreOrigins(
342 const SyncStatusCallback& callback) { 334 const SyncStatusCallback& callback) {
343 DCHECK(CalledOnValidThread()); 335 DCHECK(CalledOnValidThread());
344 ResourceIdByOrigin* batch_sync_origins = new ResourceIdByOrigin;
345 ResourceIdByOrigin* incremental_sync_origins = new ResourceIdByOrigin; 336 ResourceIdByOrigin* incremental_sync_origins = new ResourceIdByOrigin;
346 ResourceIdByOrigin* disabled_origins = new ResourceIdByOrigin; 337 ResourceIdByOrigin* disabled_origins = new ResourceIdByOrigin;
347 base::PostTaskAndReplyWithResult( 338 base::PostTaskAndReplyWithResult(
348 file_task_runner_, FROM_HERE, 339 file_task_runner_, FROM_HERE,
349 base::Bind(&DriveMetadataDB::GetOrigins, 340 base::Bind(&DriveMetadataDB::GetOrigins,
350 base::Unretained(db_.get()), 341 base::Unretained(db_.get()),
351 batch_sync_origins,
352 incremental_sync_origins, 342 incremental_sync_origins,
353 disabled_origins), 343 disabled_origins),
354 base::Bind(&DriveMetadataStore::DidRestoreOrigins, 344 base::Bind(&DriveMetadataStore::DidRestoreOrigins,
355 AsWeakPtr(), callback, 345 AsWeakPtr(), callback,
356 base::Owned(batch_sync_origins),
357 base::Owned(incremental_sync_origins), 346 base::Owned(incremental_sync_origins),
358 base::Owned(disabled_origins))); 347 base::Owned(disabled_origins)));
359 } 348 }
360 349
361 void DriveMetadataStore::DidRestoreOrigins( 350 void DriveMetadataStore::DidRestoreOrigins(
362 const SyncStatusCallback& callback, 351 const SyncStatusCallback& callback,
363 ResourceIdByOrigin* batch_sync_origins,
364 ResourceIdByOrigin* incremental_sync_origins, 352 ResourceIdByOrigin* incremental_sync_origins,
365 ResourceIdByOrigin* disabled_origins, 353 ResourceIdByOrigin* disabled_origins,
366 SyncStatusCode status) { 354 SyncStatusCode status) {
367 DCHECK(CalledOnValidThread()); 355 DCHECK(CalledOnValidThread());
368 DCHECK(batch_sync_origins);
369 DCHECK(incremental_sync_origins); 356 DCHECK(incremental_sync_origins);
370 DCHECK(disabled_origins); 357 DCHECK(disabled_origins);
371 358
372 db_status_ = status; 359 db_status_ = status;
373 if (status != SYNC_STATUS_OK) { 360 if (status != SYNC_STATUS_OK) {
374 callback.Run(status); 361 callback.Run(status);
375 return; 362 return;
376 } 363 }
377 364
378 batch_sync_origins_.swap(*batch_sync_origins);
379 incremental_sync_origins_.swap(*incremental_sync_origins); 365 incremental_sync_origins_.swap(*incremental_sync_origins);
380 disabled_origins_.swap(*disabled_origins); 366 disabled_origins_.swap(*disabled_origins);
381 367
382 origin_by_resource_id_.clear(); 368 origin_by_resource_id_.clear();
383 InsertReverseMap(batch_sync_origins_, &origin_by_resource_id_);
384 InsertReverseMap(incremental_sync_origins_, &origin_by_resource_id_); 369 InsertReverseMap(incremental_sync_origins_, &origin_by_resource_id_);
385 InsertReverseMap(disabled_origins_, &origin_by_resource_id_); 370 InsertReverseMap(disabled_origins_, &origin_by_resource_id_);
386 371
387 callback.Run(status); 372 callback.Run(status);
388 } 373 }
389 374
390 void DriveMetadataStore::SetLargestChangeStamp( 375 void DriveMetadataStore::SetLargestChangeStamp(
391 int64 largest_changestamp, 376 int64 largest_changestamp,
392 const SyncStatusCallback& callback) { 377 const SyncStatusCallback& callback) {
393 DCHECK(CalledOnValidThread()); 378 DCHECK(CalledOnValidThread());
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
467 if (found == found_origin->second.end()) 452 if (found == found_origin->second.end())
468 return SYNC_DATABASE_ERROR_NOT_FOUND; 453 return SYNC_DATABASE_ERROR_NOT_FOUND;
469 454
470 *metadata = found->second; 455 *metadata = found->second;
471 return SYNC_STATUS_OK; 456 return SYNC_STATUS_OK;
472 } 457 }
473 458
474 void DriveMetadataStore::AddIncrementalSyncOrigin( 459 void DriveMetadataStore::AddIncrementalSyncOrigin(
475 const GURL& origin, 460 const GURL& origin,
476 const std::string& resource_id) { 461 const std::string& resource_id) {
477 AddBatchSyncOrigin(origin, resource_id); 462 DCHECK(CalledOnValidThread());
478 MoveBatchSyncOriginToIncremental(origin); 463 DCHECK(!IsIncrementalSyncOrigin(origin));
464 DCHECK(!IsOriginDisabled(origin));
465 DCHECK_EQ(SYNC_STATUS_OK, db_status_);
466
467 incremental_sync_origins_.insert(std::make_pair(origin, resource_id));
468 origin_by_resource_id_.insert(std::make_pair(resource_id, origin));
469
470 // Store a pair of |origin| and |resource_id| in the DB.
471 base::PostTaskAndReplyWithResult(
472 file_task_runner_, FROM_HERE,
473 base::Bind(&DriveMetadataDB::UpdateOriginAsIncrementalSync,
474 base::Unretained(db_.get()), origin, resource_id),
475 base::Bind(&DriveMetadataStore::UpdateDBStatus, AsWeakPtr()));
479 } 476 }
480 477
481 void DriveMetadataStore::SetSyncRootDirectory(const std::string& resource_id) { 478 void DriveMetadataStore::SetSyncRootDirectory(const std::string& resource_id) {
482 DCHECK(CalledOnValidThread()); 479 DCHECK(CalledOnValidThread());
483 480
484 sync_root_directory_resource_id_ = resource_id; 481 sync_root_directory_resource_id_ = resource_id;
485 482
486 // Set the resource ID for the sync root directory in the DB. 483 // Set the resource ID for the sync root directory in the DB.
487 base::PostTaskAndReplyWithResult( 484 base::PostTaskAndReplyWithResult(
488 file_task_runner_, FROM_HERE, 485 file_task_runner_, FROM_HERE,
489 base::Bind(&DriveMetadataDB::SetSyncRootDirectory, 486 base::Bind(&DriveMetadataDB::SetSyncRootDirectory,
490 base::Unretained(db_.get()), resource_id), 487 base::Unretained(db_.get()), resource_id),
491 base::Bind(&DriveMetadataStore::UpdateDBStatus, AsWeakPtr())); 488 base::Bind(&DriveMetadataStore::UpdateDBStatus, AsWeakPtr()));
492 } 489 }
493 490
494 void DriveMetadataStore::SetOriginRootDirectory( 491 void DriveMetadataStore::SetOriginRootDirectory(
495 const GURL& origin, 492 const GURL& origin,
496 const std::string& resource_id) { 493 const std::string& resource_id) {
497 DCHECK(CalledOnValidThread()); 494 DCHECK(CalledOnValidThread());
498 DCHECK(IsKnownOrigin(origin)); 495 DCHECK(IsKnownOrigin(origin));
499 496
500 DriveMetadataDB::OriginSyncType sync_type; 497 DriveMetadataDB::OriginSyncType sync_type;
501 if (UpdateResourceIdMap(&batch_sync_origins_, &origin_by_resource_id_, 498 if (UpdateResourceIdMap(
502 origin, resource_id)) {
503 sync_type = DriveMetadataDB::BATCH_SYNC_ORIGIN;
504 } else if (UpdateResourceIdMap(
505 &incremental_sync_origins_, &origin_by_resource_id_, 499 &incremental_sync_origins_, &origin_by_resource_id_,
506 origin, resource_id)) { 500 origin, resource_id)) {
507 sync_type = DriveMetadataDB::INCREMENTAL_SYNC_ORIGIN; 501 sync_type = DriveMetadataDB::INCREMENTAL_SYNC_ORIGIN;
508 } else if (UpdateResourceIdMap(&disabled_origins_, &origin_by_resource_id_, 502 } else if (UpdateResourceIdMap(&disabled_origins_, &origin_by_resource_id_,
509 origin, resource_id)) { 503 origin, resource_id)) {
510 sync_type = DriveMetadataDB::DISABLED_ORIGIN; 504 sync_type = DriveMetadataDB::DISABLED_ORIGIN;
511 } else { 505 } else {
512 return; 506 return;
513 } 507 }
514 base::PostTaskAndReplyWithResult( 508 base::PostTaskAndReplyWithResult(
515 file_task_runner_, FROM_HERE, 509 file_task_runner_, FROM_HERE,
516 base::Bind(&DriveMetadataDB::SetOriginRootDirectory, 510 base::Bind(&DriveMetadataDB::SetOriginRootDirectory,
517 base::Unretained(db_.get()), origin, sync_type, resource_id), 511 base::Unretained(db_.get()), origin, sync_type, resource_id),
518 base::Bind(&DriveMetadataStore::UpdateDBStatus, AsWeakPtr())); 512 base::Bind(&DriveMetadataStore::UpdateDBStatus, AsWeakPtr()));
519 } 513 }
520 514
521 bool DriveMetadataStore::IsKnownOrigin(const GURL& origin) const { 515 bool DriveMetadataStore::IsKnownOrigin(const GURL& origin) const {
522 DCHECK(CalledOnValidThread()); 516 DCHECK(CalledOnValidThread());
523 return IsBatchSyncOrigin(origin) || 517 return IsIncrementalSyncOrigin(origin) || IsOriginDisabled(origin);
524 IsIncrementalSyncOrigin(origin) ||
525 IsOriginDisabled(origin);
526 }
527
528 bool DriveMetadataStore::IsBatchSyncOrigin(const GURL& origin) const {
529 DCHECK(CalledOnValidThread());
530 return ContainsKey(batch_sync_origins_, origin);
531 } 518 }
532 519
533 bool DriveMetadataStore::IsIncrementalSyncOrigin(const GURL& origin) const { 520 bool DriveMetadataStore::IsIncrementalSyncOrigin(const GURL& origin) const {
534 DCHECK(CalledOnValidThread()); 521 DCHECK(CalledOnValidThread());
535 return ContainsKey(incremental_sync_origins_, origin); 522 return ContainsKey(incremental_sync_origins_, origin);
536 } 523 }
537 524
538 bool DriveMetadataStore::IsOriginDisabled(const GURL& origin) const { 525 bool DriveMetadataStore::IsOriginDisabled(const GURL& origin) const {
539 DCHECK(CalledOnValidThread()); 526 DCHECK(CalledOnValidThread());
540 return ContainsKey(disabled_origins_, origin); 527 return ContainsKey(disabled_origins_, origin);
(...skipping 26 matching lines...) Expand all
567 base::Bind(&DriveMetadataStore::DidUpdateOrigin, AsWeakPtr(), callback)); 554 base::Bind(&DriveMetadataStore::DidUpdateOrigin, AsWeakPtr(), callback));
568 } 555 }
569 556
570 void DriveMetadataStore::DisableOrigin( 557 void DriveMetadataStore::DisableOrigin(
571 const GURL& origin, 558 const GURL& origin,
572 const SyncStatusCallback& callback) { 559 const SyncStatusCallback& callback) {
573 DCHECK(CalledOnValidThread()); 560 DCHECK(CalledOnValidThread());
574 561
575 std::string resource_id; 562 std::string resource_id;
576 std::map<GURL, std::string>::iterator found = 563 std::map<GURL, std::string>::iterator found =
577 batch_sync_origins_.find(origin); 564 incremental_sync_origins_.find(origin);
578 if (found != batch_sync_origins_.end()) {
579 resource_id = found->second;
580 batch_sync_origins_.erase(found);
581 }
582
583 found = incremental_sync_origins_.find(origin);
584 if (found != incremental_sync_origins_.end()) { 565 if (found != incremental_sync_origins_.end()) {
585 resource_id = found->second; 566 resource_id = found->second;
586 incremental_sync_origins_.erase(found); 567 incremental_sync_origins_.erase(found);
587 } 568 }
588 569
589 if (resource_id.empty()) { 570 if (resource_id.empty()) {
590 // |origin| has not been registered yet. 571 // |origin| has not been registered yet.
591 return; 572 return;
592 } 573 }
593 574
594 disabled_origins_.insert(std::make_pair(origin, resource_id)); 575 disabled_origins_.insert(std::make_pair(origin, resource_id));
595 576
596 // Store a pair of |origin| and |resource_id| in the DB. 577 // Store a pair of |origin| and |resource_id| in the DB.
597 base::PostTaskAndReplyWithResult( 578 base::PostTaskAndReplyWithResult(
598 file_task_runner_, FROM_HERE, 579 file_task_runner_, FROM_HERE,
599 base::Bind(&DriveMetadataDB::DisableOrigin, 580 base::Bind(&DriveMetadataDB::DisableOrigin,
600 base::Unretained(db_.get()), origin, resource_id), 581 base::Unretained(db_.get()), origin, resource_id),
601 base::Bind(&DriveMetadataStore::DidUpdateOrigin, AsWeakPtr(), callback)); 582 base::Bind(&DriveMetadataStore::DidUpdateOrigin, AsWeakPtr(), callback));
602 } 583 }
603 584
604 void DriveMetadataStore::RemoveOrigin( 585 void DriveMetadataStore::RemoveOrigin(
605 const GURL& origin, 586 const GURL& origin,
606 const SyncStatusCallback& callback) { 587 const SyncStatusCallback& callback) {
607 DCHECK(CalledOnValidThread()); 588 DCHECK(CalledOnValidThread());
608 589
609 metadata_map_.erase(origin); 590 metadata_map_.erase(origin);
610 591
611 std::string resource_id; 592 std::string resource_id;
612 if (EraseIfExists(&batch_sync_origins_, origin, &resource_id) || 593 if (EraseIfExists(&incremental_sync_origins_, origin, &resource_id) ||
613 EraseIfExists(&incremental_sync_origins_, origin, &resource_id) ||
614 EraseIfExists(&disabled_origins_, origin, &resource_id)) { 594 EraseIfExists(&disabled_origins_, origin, &resource_id)) {
615 origin_by_resource_id_.erase(resource_id); 595 origin_by_resource_id_.erase(resource_id);
616 } 596 }
617 597
618 base::PostTaskAndReplyWithResult( 598 base::PostTaskAndReplyWithResult(
619 file_task_runner_, FROM_HERE, 599 file_task_runner_, FROM_HERE,
620 base::Bind(&DriveMetadataDB::RemoveOrigin, 600 base::Bind(&DriveMetadataDB::RemoveOrigin,
621 base::Unretained(db_.get()), origin), 601 base::Unretained(db_.get()), origin),
622 base::Bind(&DriveMetadataStore::DidUpdateOrigin, AsWeakPtr(), callback)); 602 base::Bind(&DriveMetadataStore::DidUpdateOrigin, AsWeakPtr(), callback));
623 } 603 }
624 604
625 void DriveMetadataStore::DidUpdateOrigin( 605 void DriveMetadataStore::DidUpdateOrigin(
626 const SyncStatusCallback& callback, 606 const SyncStatusCallback& callback,
627 SyncStatusCode status) { 607 SyncStatusCode status) {
628 UpdateDBStatus(status); 608 UpdateDBStatus(status);
629 callback.Run(status); 609 callback.Run(status);
630 } 610 }
631 611
632 void DriveMetadataStore::AddBatchSyncOrigin(const GURL& origin,
633 const std::string& resource_id) {
634 DCHECK(CalledOnValidThread());
635 DCHECK(!IsIncrementalSyncOrigin(origin));
636 DCHECK(!IsOriginDisabled(origin));
637 DCHECK_EQ(SYNC_STATUS_OK, db_status_);
638
639 if (IsBatchSyncOrigin(origin))
640 return;
641
642 batch_sync_origins_.insert(std::make_pair(origin, resource_id));
643 origin_by_resource_id_.insert(std::make_pair(resource_id, origin));
644
645 // Store a pair of |origin| and |resource_id| in the DB.
646 base::PostTaskAndReplyWithResult(
647 file_task_runner_, FROM_HERE,
648 base::Bind(&DriveMetadataDB::UpdateOriginAsBatchSync,
649 base::Unretained(db_.get()), origin, resource_id),
650 base::Bind(&DriveMetadataStore::UpdateDBStatus, AsWeakPtr()));
651 }
652
653 void DriveMetadataStore::MoveBatchSyncOriginToIncremental(const GURL& origin) {
654 DCHECK(CalledOnValidThread());
655 DCHECK(IsBatchSyncOrigin(origin));
656 DCHECK(!IsIncrementalSyncOrigin(origin));
657 DCHECK(!IsOriginDisabled(origin));
658 DCHECK_EQ(SYNC_STATUS_OK, db_status_);
659
660 std::map<GURL, std::string>::iterator found =
661 batch_sync_origins_.find(origin);
662 incremental_sync_origins_.insert(std::make_pair(origin, found->second));
663
664 // Store a pair of |origin| and |resource_id| in the DB.
665 base::PostTaskAndReplyWithResult(
666 file_task_runner_, FROM_HERE,
667 base::Bind(&DriveMetadataDB::UpdateOriginAsIncrementalSync,
668 base::Unretained(db_.get()), origin, found->second),
669 base::Bind(&DriveMetadataStore::UpdateDBStatus, AsWeakPtr()));
670
671 batch_sync_origins_.erase(found);
672 }
673
674 void DriveMetadataStore::UpdateDBStatus(SyncStatusCode status) { 612 void DriveMetadataStore::UpdateDBStatus(SyncStatusCode status) {
675 DCHECK(CalledOnValidThread()); 613 DCHECK(CalledOnValidThread());
676 if (db_status_ != SYNC_STATUS_OK && 614 if (db_status_ != SYNC_STATUS_OK &&
677 db_status_ != SYNC_DATABASE_ERROR_NOT_FOUND) { 615 db_status_ != SYNC_DATABASE_ERROR_NOT_FOUND) {
678 // TODO(tzik): Handle database corruption. http://crbug.com/153709 616 // TODO(tzik): Handle database corruption. http://crbug.com/153709
679 db_status_ = status; 617 db_status_ = status;
680 LOG(WARNING) << "DriveMetadataStore turned to wrong state: " << status; 618 LOG(WARNING) << "DriveMetadataStore turned to wrong state: " << status;
681 return; 619 return;
682 } 620 }
683 db_status_ = SYNC_STATUS_OK; 621 db_status_ = SYNC_STATUS_OK;
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
741 // initialized) just return empty string, as the origin directories 679 // initialized) just return empty string, as the origin directories
742 // in the root directory must have become invalid now too. 680 // in the root directory must have become invalid now too.
743 if (sync_root_directory().empty()) 681 if (sync_root_directory().empty())
744 return std::string(); 682 return std::string();
745 683
746 ResourceIdByOrigin::const_iterator found = 684 ResourceIdByOrigin::const_iterator found =
747 incremental_sync_origins_.find(origin); 685 incremental_sync_origins_.find(origin);
748 if (found != incremental_sync_origins_.end()) 686 if (found != incremental_sync_origins_.end())
749 return found->second; 687 return found->second;
750 688
751 found = batch_sync_origins_.find(origin);
752 if (found != batch_sync_origins_.end())
753 return found->second;
754
755 found = disabled_origins_.find(origin); 689 found = disabled_origins_.find(origin);
756 if (found != disabled_origins_.end()) 690 if (found != disabled_origins_.end())
757 return found->second; 691 return found->second;
758 692
759 return std::string(); 693 return std::string();
760 } 694 }
761 695
762 void DriveMetadataStore::GetAllOrigins(std::vector<GURL>* origins) { 696 void DriveMetadataStore::GetAllOrigins(std::vector<GURL>* origins) {
763 DCHECK(CalledOnValidThread()); 697 DCHECK(CalledOnValidThread());
764 DCHECK(origins); 698 DCHECK(origins);
765 origins->clear(); 699 origins->clear();
766 origins->reserve(batch_sync_origins_.size() + 700 origins->reserve(incremental_sync_origins_.size() +
767 incremental_sync_origins_.size() +
768 disabled_origins_.size()); 701 disabled_origins_.size());
769 AddOriginsToVector(origins, batch_sync_origins_);
770 AddOriginsToVector(origins, incremental_sync_origins_); 702 AddOriginsToVector(origins, incremental_sync_origins_);
771 AddOriginsToVector(origins, disabled_origins_); 703 AddOriginsToVector(origins, disabled_origins_);
772 } 704 }
773 705
774 bool DriveMetadataStore::GetOriginByOriginRootDirectoryId( 706 bool DriveMetadataStore::GetOriginByOriginRootDirectoryId(
775 const std::string& resource_id, 707 const std::string& resource_id,
776 GURL* origin) { 708 GURL* origin) {
777 DCHECK(CalledOnValidThread()); 709 DCHECK(CalledOnValidThread());
778 DCHECK(origin); 710 DCHECK(origin);
779 711
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
820 status = db->Put(leveldb::WriteOptions(), 752 status = db->Put(leveldb::WriteOptions(),
821 kDatabaseVersionKey, 753 kDatabaseVersionKey,
822 base::Int64ToString(kCurrentDatabaseVersion)); 754 base::Int64ToString(kCurrentDatabaseVersion));
823 if (!status.ok()) { 755 if (!status.ok()) {
824 delete db; 756 delete db;
825 return LevelDBStatusToSyncStatusCode(status); 757 return LevelDBStatusToSyncStatusCode(status);
826 } 758 }
827 } 759 }
828 760
829 db_.reset(db); 761 db_.reset(db);
830 return SYNC_STATUS_OK; 762
763
764 // Remove legacy batch sync origin entries that are no longer needed.
765 leveldb::WriteBatch batch;
766 scoped_ptr<leveldb::Iterator> batch_origin_itr(
767 db_->NewIterator(leveldb::ReadOptions()));
768 for (batch_origin_itr->SeekToFirst();
769 batch_origin_itr->Valid();
770 batch_origin_itr->Next()) {
771 std::string key = batch_origin_itr->key().ToString();
772 if (key.find(kDriveBatchSyncOriginKeyPrefix) == std::string::npos)
773 continue;
774
775 batch.Delete(key);
776 }
777 status = db_->Write(leveldb::WriteOptions(), &batch);
778 return LevelDBStatusToSyncStatusCode(status);
831 } 779 }
832 780
833 SyncStatusCode DriveMetadataDB::ReadContents( 781 SyncStatusCode DriveMetadataDB::ReadContents(
834 DriveMetadataDBContents* contents) { 782 DriveMetadataDBContents* contents) {
835 DCHECK(CalledOnValidThread()); 783 DCHECK(CalledOnValidThread());
836 DCHECK(db_.get()); 784 DCHECK(db_.get());
837 DCHECK(contents); 785 DCHECK(contents);
838 786
839 contents->largest_changestamp = 0; 787 contents->largest_changestamp = 0;
840 contents->metadata_map.clear(); 788 contents->metadata_map.clear();
841 contents->batch_sync_origins.clear();
842 contents->incremental_sync_origins.clear(); 789 contents->incremental_sync_origins.clear();
843 790
844 scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions())); 791 scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions()));
845 for (itr->SeekToFirst(); itr->Valid(); itr->Next()) { 792 for (itr->SeekToFirst(); itr->Valid(); itr->Next()) {
846 std::string key = itr->key().ToString(); 793 std::string key = itr->key().ToString();
847 if (key == kChangeStampKey) { 794 if (key == kChangeStampKey) {
848 bool success = base::StringToInt64(itr->value().ToString(), 795 bool success = base::StringToInt64(itr->value().ToString(),
849 &contents->largest_changestamp); 796 &contents->largest_changestamp);
850 DCHECK(success); 797 DCHECK(success);
851 } else if (StartsWithASCII(key, kDriveMetadataKeyPrefix, true)) { 798 } else if (StartsWithASCII(key, kDriveMetadataKeyPrefix, true)) {
852 GURL origin; 799 GURL origin;
853 base::FilePath path; 800 base::FilePath path;
854 MetadataKeyToOriginAndPath(key, &origin, &path); 801 MetadataKeyToOriginAndPath(key, &origin, &path);
855 802
856 DriveMetadata metadata; 803 DriveMetadata metadata;
857 bool success = metadata.ParseFromString(itr->value().ToString()); 804 bool success = metadata.ParseFromString(itr->value().ToString());
858 DCHECK(success); 805 DCHECK(success);
859 806
860 success = contents->metadata_map[origin].insert( 807 success = contents->metadata_map[origin].insert(
861 std::make_pair(path, metadata)).second; 808 std::make_pair(path, metadata)).second;
862 DCHECK(success); 809 DCHECK(success);
863 } 810 }
864 } 811 }
865 812
866 SyncStatusCode status = GetOrigins(&contents->batch_sync_origins, 813 SyncStatusCode status = GetOrigins(&contents->incremental_sync_origins,
867 &contents->incremental_sync_origins,
868 &contents->disabled_origins); 814 &contents->disabled_origins);
869 if (status != SYNC_STATUS_OK && 815 if (status != SYNC_STATUS_OK &&
870 status != SYNC_DATABASE_ERROR_NOT_FOUND) 816 status != SYNC_DATABASE_ERROR_NOT_FOUND)
871 return status; 817 return status;
872 818
873 status = GetSyncRootDirectory(&contents->sync_root_directory_resource_id); 819 status = GetSyncRootDirectory(&contents->sync_root_directory_resource_id);
874 if (status != SYNC_STATUS_OK && 820 if (status != SYNC_STATUS_OK &&
875 status != SYNC_DATABASE_ERROR_NOT_FOUND) 821 status != SYNC_DATABASE_ERROR_NOT_FOUND)
876 return status; 822 return status;
877 823
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
1031 SyncStatusCode DriveMetadataDB::DeleteEntry(const FileSystemURL& url) { 977 SyncStatusCode DriveMetadataDB::DeleteEntry(const FileSystemURL& url) {
1032 DCHECK(CalledOnValidThread()); 978 DCHECK(CalledOnValidThread());
1033 DCHECK(db_.get()); 979 DCHECK(db_.get());
1034 980
1035 std::string metadata_key = FileSystemURLToMetadataKey(url); 981 std::string metadata_key = FileSystemURLToMetadataKey(url);
1036 leveldb::Status status = db_->Delete( 982 leveldb::Status status = db_->Delete(
1037 leveldb::WriteOptions(), metadata_key); 983 leveldb::WriteOptions(), metadata_key);
1038 return LevelDBStatusToSyncStatusCode(status); 984 return LevelDBStatusToSyncStatusCode(status);
1039 } 985 }
1040 986
1041 SyncStatusCode DriveMetadataDB::UpdateOriginAsBatchSync(
1042 const GURL& origin, const std::string& resource_id) {
1043 DCHECK(CalledOnValidThread());
1044 DCHECK(db_.get());
1045
1046 leveldb::Status status = db_->Put(
1047 leveldb::WriteOptions(),
1048 CreateKeyForOriginRoot(origin, BATCH_SYNC_ORIGIN),
1049 resource_id);
1050 return LevelDBStatusToSyncStatusCode(status);
1051 }
1052
1053 SyncStatusCode DriveMetadataDB::UpdateOriginAsIncrementalSync( 987 SyncStatusCode DriveMetadataDB::UpdateOriginAsIncrementalSync(
1054 const GURL& origin, const std::string& resource_id) { 988 const GURL& origin, const std::string& resource_id) {
1055 DCHECK(CalledOnValidThread()); 989 DCHECK(CalledOnValidThread());
1056 DCHECK(db_.get()); 990 DCHECK(db_.get());
1057 991
1058 leveldb::WriteBatch batch; 992 leveldb::WriteBatch batch;
1059 batch.Delete(CreateKeyForOriginRoot(origin, BATCH_SYNC_ORIGIN));
1060 batch.Delete(CreateKeyForOriginRoot(origin, DISABLED_ORIGIN)); 993 batch.Delete(CreateKeyForOriginRoot(origin, DISABLED_ORIGIN));
1061 batch.Put(CreateKeyForOriginRoot(origin, INCREMENTAL_SYNC_ORIGIN), 994 batch.Put(CreateKeyForOriginRoot(origin, INCREMENTAL_SYNC_ORIGIN),
1062 resource_id); 995 resource_id);
1063 leveldb::Status status = db_->Write(leveldb::WriteOptions(), &batch); 996 leveldb::Status status = db_->Write(leveldb::WriteOptions(), &batch);
1064 997
1065 return LevelDBStatusToSyncStatusCode(status); 998 return LevelDBStatusToSyncStatusCode(status);
1066 } 999 }
1067 1000
1068 SyncStatusCode DriveMetadataDB::EnableOrigin( 1001 SyncStatusCode DriveMetadataDB::EnableOrigin(
1069 const GURL& origin, const std::string& resource_id) { 1002 const GURL& origin, const std::string& resource_id) {
1070 DCHECK(CalledOnValidThread()); 1003 DCHECK(CalledOnValidThread());
1071 DCHECK(db_.get()); 1004 DCHECK(db_.get());
1072 1005
1006 // No DB entry as enabled origins go back to
1007 // DriveFileSyncService.pending_batch_sync_origins only.
1073 leveldb::WriteBatch batch; 1008 leveldb::WriteBatch batch;
1074 batch.Delete(CreateKeyForOriginRoot(origin, INCREMENTAL_SYNC_ORIGIN)); 1009 batch.Delete(CreateKeyForOriginRoot(origin, INCREMENTAL_SYNC_ORIGIN));
1075 batch.Delete(CreateKeyForOriginRoot(origin, DISABLED_ORIGIN)); 1010 batch.Delete(CreateKeyForOriginRoot(origin, DISABLED_ORIGIN));
1076 batch.Put(CreateKeyForOriginRoot(origin, BATCH_SYNC_ORIGIN), resource_id);
1077 leveldb::Status status = db_->Write(leveldb::WriteOptions(), &batch); 1011 leveldb::Status status = db_->Write(leveldb::WriteOptions(), &batch);
1078 1012
1079 return LevelDBStatusToSyncStatusCode(status); 1013 return LevelDBStatusToSyncStatusCode(status);
1080 } 1014 }
1081 1015
1082 SyncStatusCode DriveMetadataDB::DisableOrigin( 1016 SyncStatusCode DriveMetadataDB::DisableOrigin(
1083 const GURL& origin_to_disable, const std::string& resource_id) { 1017 const GURL& origin_to_disable, const std::string& resource_id) {
1084 DCHECK(CalledOnValidThread()); 1018 DCHECK(CalledOnValidThread());
1085 DCHECK(db_.get()); 1019 DCHECK(db_.get());
1086 1020
1087 leveldb::WriteBatch batch; 1021 leveldb::WriteBatch batch;
1088 batch.Delete(CreateKeyForOriginRoot(origin_to_disable, BATCH_SYNC_ORIGIN));
1089 batch.Delete(CreateKeyForOriginRoot(origin_to_disable, 1022 batch.Delete(CreateKeyForOriginRoot(origin_to_disable,
1090 INCREMENTAL_SYNC_ORIGIN)); 1023 INCREMENTAL_SYNC_ORIGIN));
1091 batch.Put(CreateKeyForOriginRoot(origin_to_disable, DISABLED_ORIGIN), 1024 batch.Put(CreateKeyForOriginRoot(origin_to_disable, DISABLED_ORIGIN),
1092 resource_id); 1025 resource_id);
1093 1026
1094 // Remove entries specified by |origin_to_disable|. 1027 // Remove entries specified by |origin_to_disable|.
1095 scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions())); 1028 scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions()));
1096 std::string metadata_key = kDriveMetadataKeyPrefix + origin_to_disable.spec(); 1029 std::string metadata_key = kDriveMetadataKeyPrefix + origin_to_disable.spec();
1097 for (itr->Seek(metadata_key); itr->Valid(); itr->Next()) { 1030 for (itr->Seek(metadata_key); itr->Valid(); itr->Next()) {
1098 std::string key = itr->key().ToString(); 1031 std::string key = itr->key().ToString();
1099 if (!StartsWithASCII(key, kDriveMetadataKeyPrefix, true)) 1032 if (!StartsWithASCII(key, kDriveMetadataKeyPrefix, true))
1100 break; 1033 break;
1101 GURL origin; 1034 GURL origin;
1102 base::FilePath path; 1035 base::FilePath path;
1103 MetadataKeyToOriginAndPath(key, &origin, &path); 1036 MetadataKeyToOriginAndPath(key, &origin, &path);
1104 if (origin != origin_to_disable) 1037 if (origin != origin_to_disable)
1105 break; 1038 break;
1106 batch.Delete(key); 1039 batch.Delete(key);
1107 } 1040 }
1108 leveldb::Status status = db_->Write(leveldb::WriteOptions(), &batch); 1041 leveldb::Status status = db_->Write(leveldb::WriteOptions(), &batch);
1109 1042
1110 return LevelDBStatusToSyncStatusCode(status); 1043 return LevelDBStatusToSyncStatusCode(status);
1111 } 1044 }
1112 1045
1113 SyncStatusCode DriveMetadataDB::RemoveOrigin(const GURL& origin_to_remove) { 1046 SyncStatusCode DriveMetadataDB::RemoveOrigin(const GURL& origin_to_remove) {
1114 DCHECK(CalledOnValidThread()); 1047 DCHECK(CalledOnValidThread());
1115 1048
1116 leveldb::WriteBatch batch; 1049 leveldb::WriteBatch batch;
1117 batch.Delete(CreateKeyForOriginRoot(origin_to_remove, BATCH_SYNC_ORIGIN));
1118 batch.Delete(CreateKeyForOriginRoot(origin_to_remove, 1050 batch.Delete(CreateKeyForOriginRoot(origin_to_remove,
1119 INCREMENTAL_SYNC_ORIGIN)); 1051 INCREMENTAL_SYNC_ORIGIN));
1120 batch.Delete(CreateKeyForOriginRoot(origin_to_remove, DISABLED_ORIGIN)); 1052 batch.Delete(CreateKeyForOriginRoot(origin_to_remove, DISABLED_ORIGIN));
1121 1053
1122 scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions())); 1054 scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions()));
1123 std::string metadata_key = kDriveMetadataKeyPrefix + origin_to_remove.spec(); 1055 std::string metadata_key = kDriveMetadataKeyPrefix + origin_to_remove.spec();
1124 for (itr->Seek(metadata_key); itr->Valid(); itr->Next()) { 1056 for (itr->Seek(metadata_key); itr->Valid(); itr->Next()) {
1125 std::string key = itr->key().ToString(); 1057 std::string key = itr->key().ToString();
1126 if (!StartsWithASCII(key, kDriveMetadataKeyPrefix, true)) 1058 if (!StartsWithASCII(key, kDriveMetadataKeyPrefix, true))
1127 break; 1059 break;
1128 GURL origin; 1060 GURL origin;
1129 base::FilePath path; 1061 base::FilePath path;
1130 MetadataKeyToOriginAndPath(key, &origin, &path); 1062 MetadataKeyToOriginAndPath(key, &origin, &path);
1131 if (origin != origin_to_remove) 1063 if (origin != origin_to_remove)
1132 break; 1064 break;
1133 batch.Delete(key); 1065 batch.Delete(key);
1134 } 1066 }
1135 1067
1136 leveldb::Status status = db_->Write(leveldb::WriteOptions(), &batch); 1068 leveldb::Status status = db_->Write(leveldb::WriteOptions(), &batch);
1137 return LevelDBStatusToSyncStatusCode(status); 1069 return LevelDBStatusToSyncStatusCode(status);
1138 } 1070 }
1139 1071
1140 SyncStatusCode DriveMetadataDB::GetOrigins( 1072 SyncStatusCode DriveMetadataDB::GetOrigins(
1141 ResourceIdByOrigin* batch_sync_origins,
1142 ResourceIdByOrigin* incremental_sync_origins, 1073 ResourceIdByOrigin* incremental_sync_origins,
1143 ResourceIdByOrigin* disabled_origins) { 1074 ResourceIdByOrigin* disabled_origins) {
1144 DCHECK(CalledOnValidThread()); 1075 DCHECK(CalledOnValidThread());
1145 DCHECK(db_.get()); 1076 DCHECK(db_.get());
1146 1077
1147 scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions())); 1078 scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions()));
1148 1079
1149 // Get batch sync origins from the DB.
1150 for (itr->Seek(kDriveBatchSyncOriginKeyPrefix);
1151 itr->Valid(); itr->Next()) {
1152 std::string key = itr->key().ToString();
1153 if (!StartsWithASCII(key, kDriveBatchSyncOriginKeyPrefix, true))
1154 break;
1155 GURL origin(std::string(
1156 key.begin() + arraysize(kDriveBatchSyncOriginKeyPrefix) - 1,
1157 key.end()));
1158 DCHECK(origin.is_valid());
1159 bool result = batch_sync_origins->insert(
1160 std::make_pair(origin, itr->value().ToString())).second;
1161 DCHECK(result);
1162 }
1163
1164 // Get incremental sync origins from the DB. 1080 // Get incremental sync origins from the DB.
1165 for (itr->Seek(kDriveIncrementalSyncOriginKeyPrefix); 1081 for (itr->Seek(kDriveIncrementalSyncOriginKeyPrefix);
1166 itr->Valid(); itr->Next()) { 1082 itr->Valid(); itr->Next()) {
1167 std::string key = itr->key().ToString(); 1083 std::string key = itr->key().ToString();
1168 if (!StartsWithASCII(key, kDriveIncrementalSyncOriginKeyPrefix, true)) 1084 if (!StartsWithASCII(key, kDriveIncrementalSyncOriginKeyPrefix, true))
1169 break; 1085 break;
1170 GURL origin(std::string( 1086 GURL origin(std::string(
1171 key.begin() + arraysize(kDriveIncrementalSyncOriginKeyPrefix) - 1, 1087 key.begin() + arraysize(kDriveIncrementalSyncOriginKeyPrefix) - 1,
1172 key.end())); 1088 key.end()));
1173 DCHECK(origin.is_valid()); 1089 DCHECK(origin.is_valid());
(...skipping 14 matching lines...) Expand all
1188 DCHECK(origin.is_valid()); 1104 DCHECK(origin.is_valid());
1189 bool result = disabled_origins->insert( 1105 bool result = disabled_origins->insert(
1190 std::make_pair(origin, itr->value().ToString())).second; 1106 std::make_pair(origin, itr->value().ToString())).second;
1191 DCHECK(result); 1107 DCHECK(result);
1192 } 1108 }
1193 1109
1194 return SYNC_STATUS_OK; 1110 return SYNC_STATUS_OK;
1195 } 1111 }
1196 1112
1197 } // namespace sync_file_system 1113 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698