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..16c7c4f9afe1c80955846a2dd6e9274222582bf2 100644 |
--- a/chrome/browser/sync/engine/model_changing_syncer_command.h |
+++ b/chrome/browser/sync/engine/model_changing_syncer_command.h |
@@ -6,7 +6,10 @@ |
#define CHROME_BROWSER_SYNC_ENGINE_MODEL_CHANGING_SYNCER_COMMAND_H_ |
#pragma once |
+#include <set> |
+ |
#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 +44,22 @@ class ModelChangingSyncerCommand : public SyncerCommand { |
return UnrecoverableErrorInfo(); |
} |
+ std::set<ModelSafeGroup> GetGroupsToChangeForTest( |
+ const sessions::SyncSession& session) const { |
+ return GetGroupsToChange(session); |
+ } |
+ |
+ protected: |
+ // This should return the set of groups in |session| that need to be |
+ // changed. The returned set should be a subset of |
+ // GetActiveGroups(). Subclasses can guarantee this either by |
+ // calling GetActiveGroups() or GetActiveGroupsWithConflicts() 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, |
@@ -55,6 +74,16 @@ class ModelChangingSyncerCommand : public SyncerCommand { |
// running on an unsafe thread are siloed away. |
virtual void ModelChangingExecuteImpl(sessions::SyncSession* session) = 0; |
+ // Returns the set of groups that have active (i.e., enabled) types. |
tim (not reviewing)
2011/11/22 18:40:05
Can we avoid introducing a new adjective if we can
akalin
2011/11/23 03:25:18
Done.
|
+ // Useful for implementing GetGroupsToChange(). |
+ static std::set<ModelSafeGroup> GetActiveGroups( |
+ const sessions::SyncSession& session); |
+ |
+ // Returns the set of active groups that have conflicts. Useful for |
+ // implementing GetGroupsToChange(). |
+ static std::set<ModelSafeGroup> GetActiveGroupsWithConflicts( |
+ const sessions::SyncSession& session); |
+ |
private: |
// ExecuteImpl is expected to be run by SyncerCommand to set work_session. |
// StartChangingModel is called to start this command running. |