Index: chrome/browser/sync/engine/model_changing_syncer_command.h |
diff --git a/chrome/browser/sync/engine/model_changing_syncer_command.h b/chrome/browser/sync/engine/model_changing_syncer_command.h |
index 9a2311e96d907365d7f61a6cd519aa431f962cc3..2c747530936160157efe18d566377ae5fd6b9cf5 100644 |
--- a/chrome/browser/sync/engine/model_changing_syncer_command.h |
+++ b/chrome/browser/sync/engine/model_changing_syncer_command.h |
@@ -7,6 +7,7 @@ |
#pragma once |
#include "base/compiler_specific.h" |
+#include "chrome/browser/sync/engine/model_safe_worker.h" |
#include "chrome/browser/sync/engine/syncer_command.h" |
#include "chrome/browser/sync/util/unrecoverable_error_info.h" |
@@ -41,6 +42,31 @@ class ModelChangingSyncerCommand : public SyncerCommand { |
return UnrecoverableErrorInfo(); |
} |
+ std::set<ModelSafeGroup> GetGroupsToChangeForTest( |
+ const sessions::SyncSession& session) const { |
+ return GetGroupsToChange(session); |
+ } |
+ |
+ protected: |
+ // Hack to track down which subclass triggers the perf regression. |
+ // (See comments in http://codereview.chromium.org/8637006/ for |
+ // details.) If this returns false (the default), |
+ // GetGroupsToChange() is not used and session.GetEnabledGroups() |
+ // is used instead. |
+ // |
+ // TODO(akalin): Remove this when we track down the perf regression. |
+ virtual bool HasCustomGroupsToChange() const = 0; |
+ |
+ // This should return the set of groups in |session| that need to be |
+ // changed. The returned set should be a subset of |
+ // session.GetEnabledGroups(). Subclasses can guarantee this either |
+ // by calling one of the session.GetEnabledGroups*() functions and |
+ // filtering that, or using GetGroupForModelType() (which handles |
+ // top-level/unspecified nodes) to project from model types to |
+ // groups. |
+ virtual std::set<ModelSafeGroup> GetGroupsToChange( |
+ const sessions::SyncSession& session) const = 0; |
+ |
// Sometimes, a command has work to do that needs to touch global state |
// belonging to multiple ModelSafeGroups, but in a way that is known to be |
// safe. This will be called once, prior to ModelChangingExecuteImpl, |