| Index: chrome/browser/sync/glue/generic_change_processor.h
|
| diff --git a/chrome/browser/sync/glue/generic_change_processor.h b/chrome/browser/sync/glue/generic_change_processor.h
|
| index a5547c24546f29c4f9c2cfa312384cd0405dac8f..1094d12a99505248a02ce3d65a8e5bb4d2eaf4b7 100644
|
| --- a/chrome/browser/sync/glue/generic_change_processor.h
|
| +++ b/chrome/browser/sync/glue/generic_change_processor.h
|
| @@ -6,34 +6,77 @@
|
| #define CHROME_BROWSER_SYNC_GLUE_GENERIC_CHANGE_PROCESSOR_H_
|
| #pragma once
|
|
|
| +#include <vector>
|
| +
|
| +#include "base/compiler_specific.h"
|
| +#include "chrome/browser/sync/api/sync_change_processor.h"
|
| #include "chrome/browser/sync/glue/change_processor.h"
|
|
|
| +class SyncData;
|
| class SyncableService;
|
|
|
| +typedef std::vector<SyncData> SyncDataList;
|
| +
|
| namespace browser_sync {
|
|
|
| -// TODO(sync): Have this become a SyncableService implementation and deprecate
|
| -// ChangeProcessor.
|
| -// For now, it acts as a dummy change processor that just passes all
|
| -// ApplySyncChanges commands onto the local SyncableService..
|
| -class GenericChangeProcessor : public ChangeProcessor {
|
| +// TODO(sync): deprecate all change processors and have them replaced by
|
| +// instances of this.
|
| +// Datatype agnostic change processor. One instance of GenericChangeProcessor
|
| +// is created for each datatype and lives on the datatype's thread. It then
|
| +// handles all interaction with the sync api, both translating pushes from the
|
| +// local service into transactions and receiving changes from the sync model,
|
| +// which then get converted into SyncChange's and sent to the local service.
|
| +class GenericChangeProcessor : public ChangeProcessor,
|
| + public SyncChangeProcessor {
|
| public:
|
| GenericChangeProcessor(SyncableService* local_service,
|
| - UnrecoverableErrorHandler* error_handler);
|
| + UnrecoverableErrorHandler* error_handler,
|
| + sync_api::UserShare* user_share);
|
| ~GenericChangeProcessor();
|
|
|
| // ChangeProcessor interface.
|
| - // Just passes all arguments onto the |local_service_|
|
| + // Build and store a list of all changes into |syncer_changes_|.
|
| virtual void ApplyChangesFromSyncModel(
|
| const sync_api::BaseTransaction* trans,
|
| const sync_api::SyncManager::ChangeRecord* changes,
|
| - int change_count);
|
| + int change_count) OVERRIDE;
|
| + // Passes |syncer_changes_|, built in ApplyChangesFromSyncModel, onto
|
| + // |local_service_| by way of it's ProcessSyncChanges method.
|
| + virtual void CommitChangesFromSyncModel() OVERRIDE;
|
| +
|
| + // SyncChangeProcessor implementation.
|
| + virtual void ProcessSyncChanges(const SyncChangeList& change_list) OVERRIDE;
|
| +
|
| + // Fills |current_sync_data| with all the syncer data for the specified type.
|
| + virtual bool GetSyncDataForType(syncable::ModelType type,
|
| + SyncDataList* current_sync_data);
|
| +
|
| + // Generic versions of AssociatorInterface methods. Called by
|
| + // SyncableServiceAdapter.
|
| + bool SyncModelHasUserCreatedNodes(syncable::ModelType type,
|
| + bool* has_nodes);
|
| + bool CryptoReadyIfNecessary(syncable::ModelType type);
|
| protected:
|
| // ChangeProcessor interface.
|
| - virtual void StartImpl(Profile* profile); // Not implemented.
|
| - virtual void StopImpl(); // Not implemented.
|
| + virtual void StartImpl(Profile* profile) OVERRIDE; // Not implemented.
|
| + virtual void StopImpl() OVERRIDE; // Not implemented.
|
| + virtual sync_api::UserShare* share_handle() OVERRIDE;
|
| private:
|
| + // The SyncableService this change processor will forward changes on to.
|
| SyncableService* local_service_;
|
| +
|
| + // The current list of changes received from the syncer. We buffer because
|
| + // we must ensure no syncapi transaction is held when we pass it on to
|
| + // |local_service_|.
|
| + // Set in ApplyChangesFromSyncModel, consumed in CommitChangesFromSyncModel.
|
| + SyncChangeList syncer_changes_;
|
| +
|
| + // Our handle to the sync model. Unlike normal ChangeProcessors, we need to
|
| + // be able to access the sync model before the change processor begins
|
| + // listening to changes (the local_service_ will be interacting with us
|
| + // when it starts up). As such we can't wait until Start(_) has been called,
|
| + // and have to keep a local pointer to the user_share.
|
| + sync_api::UserShare* user_share_;
|
| };
|
|
|
| } // namespace browser_sync
|
|
|