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); |