diff options
author | skym <skym@chromium.org> | 2016-02-23 14:11:27 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-02-23 22:12:52 +0000 |
commit | 24820c067cb649a4eee2387eda8761e776a18d63 (patch) | |
tree | 9d1218f9bae0a7e998c7ec045f4d904f7f4f3d54 | |
parent | 9e0e03af41092d8647e4c4125a0b75a78a99cf8b (diff) | |
download | chromium_src-24820c067cb649a4eee2387eda8761e776a18d63.zip chromium_src-24820c067cb649a4eee2387eda8761e776a18d63.tar.gz chromium_src-24820c067cb649a4eee2387eda8761e776a18d63.tar.bz2 |
[Sync] Now also check get updates request types before performing sessions garbage collection.
BUG=129654
Review URL: https://codereview.chromium.org/1717383002
Cr-Commit-Position: refs/heads/master@{#377103}
-rw-r--r-- | components/browser_sync/browser/profile_sync_service.cc | 8 | ||||
-rw-r--r-- | sync/engine/get_updates_processor.cc | 1 | ||||
-rw-r--r-- | sync/engine/get_updates_processor_unittest.cc | 6 | ||||
-rw-r--r-- | sync/internal_api/public/sessions/model_neutral_state.h | 5 | ||||
-rw-r--r-- | sync/sessions/status_controller.cc | 16 | ||||
-rw-r--r-- | sync/sessions/status_controller.h | 12 |
6 files changed, 39 insertions, 9 deletions
diff --git a/components/browser_sync/browser/profile_sync_service.cc b/components/browser_sync/browser/profile_sync_service.cc index 34bf304..1fa9242 100644 --- a/components/browser_sync/browser/profile_sync_service.cc +++ b/components/browser_sync/browser/profile_sync_service.cc @@ -72,6 +72,7 @@ #include "sync/internal_api/public/configure_reason.h" #include "sync/internal_api/public/http_bridge_network_resources.h" #include "sync/internal_api/public/network_resources.h" +#include "sync/internal_api/public/sessions/model_neutral_state.h" #include "sync/internal_api/public/sessions/type_debug_info_observer.h" #include "sync/internal_api/public/shutdown_reason.h" #include "sync/internal_api/public/sync_encryption_handler.h" @@ -1136,7 +1137,12 @@ void ProfileSyncService::OnBackendInitialized( void ProfileSyncService::OnSyncCycleCompleted() { UpdateLastSyncedTime(); - if (IsDataTypeControllerRunning(syncer::SESSIONS)) { + const syncer::sessions::SyncSessionSnapshot snapshot = + GetLastSessionSnapshot(); + if (IsDataTypeControllerRunning(syncer::SESSIONS) && + snapshot.model_neutral_state().get_updates_request_types.Has( + syncer::SESSIONS) && + !syncer::sessions::HasSyncerError(snapshot.model_neutral_state())) { // Trigger garbage collection of old sessions now that we've downloaded // any new session data. base::ThreadTaskRunnerHandle::Get()->PostTask( diff --git a/sync/engine/get_updates_processor.cc b/sync/engine/get_updates_processor.cc index 8bc701f..82c590f 100644 --- a/sync/engine/get_updates_processor.cc +++ b/sync/engine/get_updates_processor.cc @@ -370,6 +370,7 @@ syncer::SyncerError GetUpdatesProcessor::ProcessGetUpdatesResponse( void GetUpdatesProcessor::ApplyUpdates( ModelTypeSet gu_types, sessions::StatusController* status_controller) { + status_controller->set_get_updates_request_types(gu_types); delegate_.ApplyUpdates(gu_types, status_controller, update_handler_map_); } diff --git a/sync/engine/get_updates_processor_unittest.cc b/sync/engine/get_updates_processor_unittest.cc index d6456a5..db3ea8c 100644 --- a/sync/engine/get_updates_processor_unittest.cc +++ b/sync/engine/get_updates_processor_unittest.cc @@ -434,6 +434,8 @@ TEST_F(GetUpdatesProcessorApplyUpdatesTest, Normal) { EXPECT_EQ(0, GetNonAppliedHandler()->GetPassiveApplyUpdatesCount()); EXPECT_EQ(0, GetAppliedHandler()->GetPassiveApplyUpdatesCount()); + + EXPECT_TRUE(status.get_updates_request_types().Equals(GetGuTypes())); } // Verify that a configure cycle applies updates passively to the specified @@ -455,6 +457,8 @@ TEST_F(GetUpdatesProcessorApplyUpdatesTest, Configure) { EXPECT_EQ(0, GetNonAppliedHandler()->GetApplyUpdatesCount()); EXPECT_EQ(0, GetAppliedHandler()->GetApplyUpdatesCount()); + + EXPECT_TRUE(status.get_updates_request_types().Equals(GetGuTypes())); } // Verify that a poll cycle applies updates non-passively to the specified @@ -475,6 +479,8 @@ TEST_F(GetUpdatesProcessorApplyUpdatesTest, Poll) { EXPECT_EQ(0, GetNonAppliedHandler()->GetPassiveApplyUpdatesCount()); EXPECT_EQ(0, GetAppliedHandler()->GetPassiveApplyUpdatesCount()); + + EXPECT_TRUE(status.get_updates_request_types().Equals(GetGuTypes())); } class DownloadUpdatesDebugInfoTest : public ::testing::Test { diff --git a/sync/internal_api/public/sessions/model_neutral_state.h b/sync/internal_api/public/sessions/model_neutral_state.h index a80a10d..91bce88 100644 --- a/sync/internal_api/public/sessions/model_neutral_state.h +++ b/sync/internal_api/public/sessions/model_neutral_state.h @@ -21,6 +21,9 @@ struct SYNC_EXPORT ModelNeutralState { ModelNeutralState(); ~ModelNeutralState(); + // The set of types for which updates were requested from the server. + ModelTypeSet get_updates_request_types; + // The set of types for which commits were sent to the server. ModelTypeSet commit_request_types; @@ -54,7 +57,7 @@ struct SYNC_EXPORT ModelNeutralState { bool items_committed; }; -bool HasSyncerError(const ModelNeutralState& state); +SYNC_EXPORT bool HasSyncerError(const ModelNeutralState& state); } // namespace sessions } // namespace syncer diff --git a/sync/sessions/status_controller.cc b/sync/sessions/status_controller.cc index 01b9781..4f9e141 100644 --- a/sync/sessions/status_controller.cc +++ b/sync/sessions/status_controller.cc @@ -17,6 +17,22 @@ StatusController::StatusController() { StatusController::~StatusController() {} +const ModelTypeSet StatusController::get_updates_request_types() const { + return model_neutral_.get_updates_request_types; +} + +void StatusController::set_get_updates_request_types(ModelTypeSet value) { + model_neutral_.get_updates_request_types = value; +} + +const ModelTypeSet StatusController::commit_request_types() const { + return model_neutral_.commit_request_types; +} + +void StatusController::set_commit_request_types(ModelTypeSet value) { + model_neutral_.commit_request_types = value; +} + void StatusController::increment_num_updates_downloaded_by(int value) { model_neutral_.num_updates_downloaded_total += value; } diff --git a/sync/sessions/status_controller.h b/sync/sessions/status_controller.h index 9cf63d8..4551dfd 100644 --- a/sync/sessions/status_controller.h +++ b/sync/sessions/status_controller.h @@ -36,13 +36,11 @@ class SYNC_EXPORT StatusController { StatusController(); ~StatusController(); - // ClientToServer messages. - const ModelTypeSet commit_request_types() const { - return model_neutral_.commit_request_types; - } - void set_commit_request_types(ModelTypeSet value) { - model_neutral_.commit_request_types = value; - } + // The types included in the get updates and commit client to server requests. + const ModelTypeSet get_updates_request_types() const; + void set_get_updates_request_types(ModelTypeSet value); + const ModelTypeSet commit_request_types() const; + void set_commit_request_types(ModelTypeSet value); // Various conflict counters. int num_encryption_conflicts() const; |