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

Side by Side Diff: chrome/browser/sync/profile_sync_service.cc

Issue 81923003: sync: add garbage collection to SessionsSyncManager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: undo last upload Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | 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/profile_sync_service.h" 5 #include "chrome/browser/sync/profile_sync_service.h"
6 6
7 #include <cstddef> 7 #include <cstddef>
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <utility> 10 #include <utility>
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 358
359 void ProfileSyncService::RegisterDataTypeController( 359 void ProfileSyncService::RegisterDataTypeController(
360 DataTypeController* data_type_controller) { 360 DataTypeController* data_type_controller) {
361 DCHECK_EQ(data_type_controllers_.count(data_type_controller->type()), 0U); 361 DCHECK_EQ(data_type_controllers_.count(data_type_controller->type()), 0U);
362 data_type_controllers_[data_type_controller->type()] = 362 data_type_controllers_[data_type_controller->type()] =
363 data_type_controller; 363 data_type_controller;
364 } 364 }
365 365
366 browser_sync::SessionModelAssociator* 366 browser_sync::SessionModelAssociator*
367 ProfileSyncService::GetSessionModelAssociatorDeprecated() { 367 ProfileSyncService::GetSessionModelAssociatorDeprecated() {
368 if (data_type_controllers_.find(syncer::SESSIONS) == 368 if (!IsSessionsDataTypeControllerRunning())
369 data_type_controllers_.end() ||
370 data_type_controllers_.find(syncer::SESSIONS)->second->state() !=
371 DataTypeController::RUNNING) {
372 return NULL; 369 return NULL;
373 }
374 370
375 // If we're using sessions V2, there's no model associator. 371 // If we're using sessions V2, there's no model associator.
376 if (sessions_sync_manager_.get()) 372 if (sessions_sync_manager_.get())
377 return NULL; 373 return NULL;
378 374
379 return static_cast<browser_sync::SessionDataTypeController*>( 375 return static_cast<browser_sync::SessionDataTypeController*>(
380 data_type_controllers_.find( 376 data_type_controllers_.find(
381 syncer::SESSIONS)->second.get())->GetModelAssociator(); 377 syncer::SESSIONS)->second.get())->GetModelAssociator();
382 } 378 }
383 379
380 bool ProfileSyncService::IsSessionsDataTypeControllerRunning() const {
381 return data_type_controllers_.find(syncer::SESSIONS) !=
382 data_type_controllers_.end() &&
383 data_type_controllers_.find(syncer::SESSIONS)->second->state() ==
384 DataTypeController::RUNNING;
385 }
386
384 browser_sync::OpenTabsUIDelegate* ProfileSyncService::GetOpenTabsUIDelegate() { 387 browser_sync::OpenTabsUIDelegate* ProfileSyncService::GetOpenTabsUIDelegate() {
385 if (data_type_controllers_.find(syncer::SESSIONS) == 388 if (!IsSessionsDataTypeControllerRunning())
386 data_type_controllers_.end() ||
387 data_type_controllers_.find(syncer::SESSIONS)->second->state() !=
388 DataTypeController::RUNNING) {
389 return NULL; 389 return NULL;
390 }
391 390
392 if (CommandLine::ForCurrentProcess()->HasSwitch( 391 if (CommandLine::ForCurrentProcess()->HasSwitch(
393 switches::kEnableSyncSessionsV2)) { 392 switches::kEnableSyncSessionsV2)) {
394 return sessions_sync_manager_.get(); 393 return sessions_sync_manager_.get();
395 } else { 394 } else {
396 return GetSessionModelAssociatorDeprecated(); 395 return GetSessionModelAssociatorDeprecated();
397 } 396 }
398 } 397 }
399 398
400 browser_sync::FaviconCache* ProfileSyncService::GetFaviconCache() { 399 browser_sync::FaviconCache* ProfileSyncService::GetFaviconCache() {
(...skipping 661 matching lines...) Expand 10 before | Expand all | Expand 10 after
1062 ConfigureDataTypeManager(); 1061 ConfigureDataTypeManager();
1063 } else { 1062 } else {
1064 DCHECK(FirstSetupInProgress()); 1063 DCHECK(FirstSetupInProgress());
1065 } 1064 }
1066 1065
1067 NotifyObservers(); 1066 NotifyObservers();
1068 } 1067 }
1069 1068
1070 void ProfileSyncService::OnSyncCycleCompleted() { 1069 void ProfileSyncService::OnSyncCycleCompleted() {
1071 UpdateLastSyncedTime(); 1070 UpdateLastSyncedTime();
1072 if (GetSessionModelAssociatorDeprecated()) { 1071 if (IsSessionsDataTypeControllerRunning()) {
1073 // Trigger garbage collection of old sessions now that we've downloaded 1072 // Trigger garbage collection of old sessions now that we've downloaded
1074 // any new session data. TODO(zea): Have this be a notification the session 1073 // any new session data.
1075 // model associator listens too. Also consider somehow plumbing the current 1074 if (sessions_sync_manager_) {
1076 // server time as last reported by CheckServerReachable, so we don't have to 1075 // Sessions V2.
1077 // rely on the local clock, which may be off significantly. 1076 base::MessageLoop::current()->PostTask(FROM_HERE, base::Bind(
1078 base::MessageLoop::current()->PostTask(FROM_HERE, 1077 &browser_sync::SessionsSyncManager::DoGarbageCollection,
1079 base::Bind(&browser_sync::SessionModelAssociator::DeleteStaleSessions, 1078 base::AsWeakPtr(sessions_sync_manager_.get())));
1080 GetSessionModelAssociatorDeprecated()->AsWeakPtr())); 1079 } else {
1080 base::MessageLoop::current()->PostTask(FROM_HERE, base::Bind(
1081 &browser_sync::SessionModelAssociator::DeleteStaleSessions,
1082 GetSessionModelAssociatorDeprecated()->AsWeakPtr()));
1083 }
1081 } 1084 }
1082 DVLOG(2) << "Notifying observers sync cycle completed"; 1085 DVLOG(2) << "Notifying observers sync cycle completed";
1083 NotifySyncCycleCompleted(); 1086 NotifySyncCycleCompleted();
1084 } 1087 }
1085 1088
1086 void ProfileSyncService::OnExperimentsChanged( 1089 void ProfileSyncService::OnExperimentsChanged(
1087 const syncer::Experiments& experiments) { 1090 const syncer::Experiments& experiments) {
1088 if (current_experiments_.Matches(experiments)) 1091 if (current_experiments_.Matches(experiments))
1089 return; 1092 return;
1090 1093
(...skipping 1169 matching lines...) Expand 10 before | Expand all | Expand 10 after
2260 SyncTokenStatus status; 2263 SyncTokenStatus status;
2261 status.connection_status_update_time = connection_status_update_time_; 2264 status.connection_status_update_time = connection_status_update_time_;
2262 status.connection_status = connection_status_; 2265 status.connection_status = connection_status_;
2263 status.token_request_time = token_request_time_; 2266 status.token_request_time = token_request_time_;
2264 status.token_receive_time = token_receive_time_; 2267 status.token_receive_time = token_receive_time_;
2265 status.last_get_token_error = last_get_token_error_; 2268 status.last_get_token_error = last_get_token_error_;
2266 if (request_access_token_retry_timer_.IsRunning()) 2269 if (request_access_token_retry_timer_.IsRunning())
2267 status.next_token_request_time = next_token_request_time_; 2270 status.next_token_request_time = next_token_request_time_;
2268 return status; 2271 return status;
2269 } 2272 }
OLDNEW
« no previous file with comments | « chrome/browser/sync/profile_sync_service.h ('k') | chrome/browser/sync/sessions2/sessions_sync_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698