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

Side by Side Diff: sync/internal_api/sync_manager_impl.cc

Issue 17552014: [Sync] Have SBH tell SyncManager which types to purge (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix dchecks Created 7 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 | Annotate | Revision Log
« no previous file with comments | « sync/internal_api/sync_manager_impl.h ('k') | sync/internal_api/sync_manager_impl_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "sync/internal_api/sync_manager_impl.h" 5 #include "sync/internal_api/sync_manager_impl.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 292
293 if (marker.token().empty()) 293 if (marker.token().empty())
294 result.Put(i.Get()); 294 result.Put(i.Get());
295 } 295 }
296 return result; 296 return result;
297 } 297 }
298 298
299 void SyncManagerImpl::ConfigureSyncer( 299 void SyncManagerImpl::ConfigureSyncer(
300 ConfigureReason reason, 300 ConfigureReason reason,
301 ModelTypeSet to_download, 301 ModelTypeSet to_download,
302 ModelTypeSet to_purge,
302 ModelTypeSet to_journal, 303 ModelTypeSet to_journal,
303 ModelTypeSet to_unapply, 304 ModelTypeSet to_unapply,
304 ModelTypeSet to_ignore,
305 const ModelSafeRoutingInfo& new_routing_info, 305 const ModelSafeRoutingInfo& new_routing_info,
306 const base::Closure& ready_task, 306 const base::Closure& ready_task,
307 const base::Closure& retry_task) { 307 const base::Closure& retry_task) {
308 DCHECK(thread_checker_.CalledOnValidThread()); 308 DCHECK(thread_checker_.CalledOnValidThread());
309 DCHECK(!ready_task.is_null()); 309 DCHECK(!ready_task.is_null());
310 DCHECK(!retry_task.is_null()); 310 DCHECK(!retry_task.is_null());
311 311
312 // Cleanup any types that might have just been disabled.
313 ModelTypeSet previous_types = ModelTypeSet::All();
314 if (!session_context_->routing_info().empty())
315 previous_types = GetRoutingInfoTypes(session_context_->routing_info());
316
317 // By removing the |to_ignore| types from the previous types, they won't be
318 // treated as disabled, and therefore won't be purged.
319 previous_types.RemoveAll(to_ignore);
320
321 DVLOG(1) << "Configuring -" 312 DVLOG(1) << "Configuring -"
313 << "\n\t" << "current types: "
314 << ModelTypeSetToString(GetRoutingInfoTypes(new_routing_info))
322 << "\n\t" << "types to download: " 315 << "\n\t" << "types to download: "
323 << ModelTypeSetToString(to_download) 316 << ModelTypeSetToString(to_download)
324 << "\n\t" << "current types: " 317 << "\n\t" << "types to purge: "
325 << ModelTypeSetToString(GetRoutingInfoTypes(new_routing_info)) 318 << ModelTypeSetToString(to_purge)
326 << "\n\t" << "previous types: " 319 << "\n\t" << "types to journal: "
327 << ModelTypeSetToString(previous_types)
328 << "\n\t" << "to_journal: "
329 << ModelTypeSetToString(to_journal) 320 << ModelTypeSetToString(to_journal)
330 << "\n\t" << "to_unapply: " 321 << "\n\t" << "types to unapply: "
331 << ModelTypeSetToString(to_unapply) 322 << ModelTypeSetToString(to_unapply);
332 << "\n\t" << "to_ignore: " 323 if (!PurgeDisabledTypes(to_purge,
333 << ModelTypeSetToString(to_ignore);
334 if (!PurgeDisabledTypes(previous_types,
335 GetRoutingInfoTypes(new_routing_info),
336 to_journal, 324 to_journal,
337 to_unapply)) { 325 to_unapply)) {
338 // We failed to cleanup the types. Invoke the ready task without actually 326 // We failed to cleanup the types. Invoke the ready task without actually
339 // configuring any types. The caller should detect this as a configuration 327 // configuring any types. The caller should detect this as a configuration
340 // failure and act appropriately. 328 // failure and act appropriately.
341 ready_task.Run(); 329 ready_task.Run();
342 return; 330 return;
343 } 331 }
344 332
345 ConfigurationParams params(GetSourceFromReason(reason), 333 ConfigurationParams params(GetSourceFromReason(reason),
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
594 UMA_HISTOGRAM_COUNTS("Sync.PartiallySyncedTypes", 582 UMA_HISTOGRAM_COUNTS("Sync.PartiallySyncedTypes",
595 partially_synced_types.Size()); 583 partially_synced_types.Size());
596 if (partially_synced_types.Empty()) 584 if (partially_synced_types.Empty())
597 return true; 585 return true;
598 return directory()->PurgeEntriesWithTypeIn(partially_synced_types, 586 return directory()->PurgeEntriesWithTypeIn(partially_synced_types,
599 ModelTypeSet(), 587 ModelTypeSet(),
600 ModelTypeSet()); 588 ModelTypeSet());
601 } 589 }
602 590
603 bool SyncManagerImpl::PurgeDisabledTypes( 591 bool SyncManagerImpl::PurgeDisabledTypes(
604 ModelTypeSet previously_enabled_types, 592 ModelTypeSet to_purge,
605 ModelTypeSet currently_enabled_types,
606 ModelTypeSet to_journal, 593 ModelTypeSet to_journal,
607 ModelTypeSet to_unapply) { 594 ModelTypeSet to_unapply) {
608 ModelTypeSet disabled_types = Difference(previously_enabled_types, 595 if (to_purge.Empty())
609 currently_enabled_types);
610 if (disabled_types.Empty())
611 return true; 596 return true;
612 DVLOG(1) << "Purging disabled types " 597 DVLOG(1) << "Purging disabled types " << ModelTypeSetToString(to_purge);
613 << ModelTypeSetToString(disabled_types); 598 DCHECK(to_purge.HasAll(to_journal));
614 DCHECK(disabled_types.HasAll(to_journal)); 599 DCHECK(to_purge.HasAll(to_unapply));
615 DCHECK(disabled_types.HasAll(to_unapply)); 600 return directory()->PurgeEntriesWithTypeIn(to_purge, to_journal, to_unapply);
616 return directory()->PurgeEntriesWithTypeIn(disabled_types,
617 to_journal,
618 to_unapply);
619 } 601 }
620 602
621 void SyncManagerImpl::UpdateCredentials(const SyncCredentials& credentials) { 603 void SyncManagerImpl::UpdateCredentials(const SyncCredentials& credentials) {
622 DCHECK(thread_checker_.CalledOnValidThread()); 604 DCHECK(thread_checker_.CalledOnValidThread());
623 DCHECK(initialized_); 605 DCHECK(initialized_);
624 DCHECK(!credentials.email.empty()); 606 DCHECK(!credentials.email.empty());
625 DCHECK(!credentials.sync_token.empty()); 607 DCHECK(!credentials.sync_token.empty());
626 608
627 observing_network_connectivity_changes_ = true; 609 observing_network_connectivity_changes_ = true;
628 if (!connection_manager_->SetAuthToken(credentials.sync_token, 610 if (!connection_manager_->SetAuthToken(credentials.sync_token,
(...skipping 788 matching lines...) Expand 10 before | Expand all | Expand 10 after
1417 int SyncManagerImpl::GetDefaultNudgeDelay() { 1399 int SyncManagerImpl::GetDefaultNudgeDelay() {
1418 return kDefaultNudgeDelayMilliseconds; 1400 return kDefaultNudgeDelayMilliseconds;
1419 } 1401 }
1420 1402
1421 // static. 1403 // static.
1422 int SyncManagerImpl::GetPreferencesNudgeDelay() { 1404 int SyncManagerImpl::GetPreferencesNudgeDelay() {
1423 return kPreferencesNudgeDelayMilliseconds; 1405 return kPreferencesNudgeDelayMilliseconds;
1424 } 1406 }
1425 1407
1426 } // namespace syncer 1408 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/internal_api/sync_manager_impl.h ('k') | sync/internal_api/sync_manager_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698