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

Unified Diff: chrome/browser/sync/internal_api/sync_manager.cc

Issue 8787006: Delay autofill commits to reduce client to server traffic. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: For review. Created 9 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 side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698