Chromium Code Reviews| Index: chrome/browser/sync/internal_api/sync_manager.cc |
| diff --git a/chrome/browser/sync/internal_api/sync_manager.cc b/chrome/browser/sync/internal_api/sync_manager.cc |
| index dab01337a988dfac82d7b50fb1b83e60afdf1348..501234d7783cc8272473b02d4c94f391f83a8dba 100644 |
| --- a/chrome/browser/sync/internal_api/sync_manager.cc |
| +++ b/chrome/browser/sync/internal_api/sync_manager.cc |
| @@ -114,6 +114,12 @@ GetUpdatesCallerInfo::GetUpdatesSource GetSourceFromReason( |
| namespace sync_api { |
| +const int SyncManager::kDefaultNudgeDelayMilliseconds = 200; |
| +const int SyncManager::kPreferencesNudgeDelayMilliseconds = 2000; |
| + |
| +// Nudge delay for datatypes that piggy back their change with other changes. |
| +const int SyncManager::kPiggybackNudgeDelay = 2 * 60 * 60 * 1000; |
|
tim (not reviewing)
2011/12/09 23:07:21
Perhaps this could be controlled via ClientCommand
|
| + |
| ////////////////////////////////////////////////////////////////////////// |
| // SyncManager's implementation: SyncManager::SyncInternal |
| class SyncManager::SyncInternal |
| @@ -124,8 +130,6 @@ class SyncManager::SyncInternal |
| public SyncEngineEventListener, |
| public ServerConnectionEventListener, |
| public syncable::DirectoryChangeDelegate { |
| - static const int kDefaultNudgeDelayMilliseconds; |
| - static const int kPreferencesNudgeDelayMilliseconds; |
| public: |
| explicit SyncInternal(const std::string& name) |
| : name_(name), |
| @@ -302,6 +306,8 @@ class SyncManager::SyncInternal |
| const tracked_objects::Location& nudge_location, |
| const ModelType& type); |
| + TimeDelta GetNudgeDelayTimeDelta(const ModelType& model_type); |
| + |
| // See SyncManager::Shutdown* for information. |
| void StopSyncingForShutdown(const base::Closure& callback); |
| void ShutdownOnSyncThread(); |
| @@ -467,6 +473,10 @@ class SyncManager::SyncInternal |
| JsArgList GetChildNodeIds(const JsArgList& args); |
| JsArgList FindNodesContainingString(const JsArgList& args); |
| + TimeDelta GetNudgeDelayTimeDeltaFromType( |
| + const NudgeDelayType& delay_type, const ModelType& model_type); |
| + |
| + |
| const std::string name_; |
| base::ThreadChecker thread_checker_; |
| @@ -549,8 +559,6 @@ class SyncManager::SyncInternal |
| MessageLoop* const created_on_loop_; |
| }; |
| -const int SyncManager::SyncInternal::kDefaultNudgeDelayMilliseconds = 200; |
| -const int SyncManager::SyncInternal::kPreferencesNudgeDelayMilliseconds = 2000; |
| SyncManager::ChangeDelegate::~ChangeDelegate() {} |
| @@ -1549,6 +1557,63 @@ void SyncManager::SyncInternal::RequestNudge( |
| ModelTypeBitSet(), location); |
| } |
| +namespace { |
| +NudgeDelayType GetNudgeDelayType(const ModelType& type) { |
| + switch (type) { |
| + case syncable::AUTOFILL: |
| + case syncable::AUTOFILL_PROFILE: |
| + return PIGGY_BACK_WITH_ANOTHER_CHANGE; |
| + case syncable::PREFERENCES: |
| + case syncable::SESSIONS: |
| + return CUSTOM; |
| + default: |
| + return IMMEDIATE; |
| + } |
| +} |
| +} // namespace |
| + |
| +TimeDelta SyncManager::SyncInternal::GetNudgeDelayTimeDeltaFromType( |
| + const NudgeDelayType& delay_type, const ModelType& model_type) { |
| + |
| + TimeDelta delay = TimeDelta::FromMilliseconds( |
| + SyncManager::kDefaultNudgeDelayMilliseconds); |
| + switch (delay_type) { |
| + case IMMEDIATE: |
| + delay = TimeDelta::FromMilliseconds( |
| + SyncManager::kDefaultNudgeDelayMilliseconds); |
| + break; |
| + case PIGGY_BACK_WITH_ANOTHER_CHANGE: |
| + delay = TimeDelta::FromMilliseconds( |
| + SyncManager::kPiggybackNudgeDelay); |
| + break; |
| + case CUSTOM: |
| + switch (model_type) { |
| + case syncable::PREFERENCES: |
| + delay = TimeDelta::FromMilliseconds( |
| + SyncManager::kPreferencesNudgeDelayMilliseconds); |
| + break; |
| + case syncable::SESSIONS: |
| + delay = scheduler()->sessions_commit_delay(); |
| + break; |
| + default: |
| + NOTREACHED(); |
| + } |
| + break; |
| + default: |
| + NOTREACHED(); |
| + } |
| + |
| + return delay; |
| +} |
| + |
| +TimeDelta SyncManager::SyncInternal::GetNudgeDelayTimeDelta( |
| + const ModelType& model_type) { |
| + NudgeDelayType delay_type = GetNudgeDelayType(model_type); |
| + return GetNudgeDelayTimeDeltaFromType(delay_type, |
| + model_type); |
| +} |
| + |
| + |
| void SyncManager::SyncInternal::RequestNudgeForDataType( |
| const tracked_objects::Location& nudge_location, |
| const ModelType& type) { |
| @@ -1556,20 +1621,7 @@ void SyncManager::SyncInternal::RequestNudgeForDataType( |
| NOTREACHED(); |
| return; |
| } |
| - base::TimeDelta nudge_delay; |
| - switch (type) { |
| - case syncable::PREFERENCES: |
| - nudge_delay = |
| - TimeDelta::FromMilliseconds(kPreferencesNudgeDelayMilliseconds); |
| - break; |
| - case syncable::SESSIONS: |
| - nudge_delay = scheduler()->sessions_commit_delay(); |
| - break; |
| - default: |
| - nudge_delay = |
| - TimeDelta::FromMilliseconds(kDefaultNudgeDelayMilliseconds); |
| - break; |
| - } |
| + base::TimeDelta nudge_delay = GetNudgeDelayTimeDelta(type); |
| syncable::ModelTypeBitSet types; |
| types.set(type); |
| scheduler()->ScheduleNudge(nudge_delay, |
| @@ -1992,6 +2044,11 @@ void SyncManager::RefreshEncryption() { |
| data_->RefreshEncryption(); |
| } |
| +TimeDelta SyncManager::GetNudgeDelayTimeDelta( |
| + const ModelType& model_type) { |
| + return data_->GetNudgeDelayTimeDelta(model_type); |
| +} |
| + |
| syncable::ModelTypeSet SyncManager::GetEncryptedDataTypesForTest() const { |
| ReadTransaction trans(FROM_HERE, GetUserShare()); |
| return GetEncryptedTypes(&trans); |