| Index: components/sync_driver/data_type_controller.h
|
| diff --git a/components/sync_driver/data_type_controller.h b/components/sync_driver/data_type_controller.h
|
| deleted file mode 100644
|
| index 2d9f70b36ac420352ad048174e893ce264a9cd71..0000000000000000000000000000000000000000
|
| --- a/components/sync_driver/data_type_controller.h
|
| +++ /dev/null
|
| @@ -1,179 +0,0 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#ifndef COMPONENTS_SYNC_DRIVER_DATA_TYPE_CONTROLLER_H__
|
| -#define COMPONENTS_SYNC_DRIVER_DATA_TYPE_CONTROLLER_H__
|
| -
|
| -#include <map>
|
| -#include <string>
|
| -
|
| -#include "base/callback.h"
|
| -#include "base/location.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/memory/ref_counted_delete_on_message_loop.h"
|
| -#include "base/sequenced_task_runner_helpers.h"
|
| -#include "components/sync/base/model_type.h"
|
| -#include "components/sync/base/unrecoverable_error_handler.h"
|
| -#include "components/sync/core/data_type_error_handler.h"
|
| -
|
| -namespace base {
|
| -class SingleThreadTaskRunner;
|
| -}
|
| -
|
| -namespace syncer {
|
| -class SyncError;
|
| -class SyncMergeResult;
|
| -}
|
| -
|
| -namespace sync_driver {
|
| -class BackendDataTypeConfigurer;
|
| -
|
| -// Data type controllers need to be refcounted threadsafe, as they may
|
| -// need to run model associator or change processor on other threads.
|
| -class DataTypeController
|
| - : public base::RefCountedDeleteOnMessageLoop<DataTypeController>,
|
| - public syncer::DataTypeErrorHandler {
|
| - public:
|
| - enum State {
|
| - NOT_RUNNING, // The controller has never been started or has previously
|
| - // been stopped. Must be in this state to start.
|
| - MODEL_STARTING, // The controller is waiting on dependent services
|
| - // that need to be available before model
|
| - // association.
|
| - MODEL_LOADED, // The model has finished loading and can start
|
| - // associating now.
|
| - ASSOCIATING, // Model association is in progress.
|
| - RUNNING, // The controller is running and the data type is
|
| - // in sync with the cloud.
|
| - STOPPING, // The controller is in the process of stopping
|
| - // and is waiting for dependent services to stop.
|
| - DISABLED // The controller was started but encountered an error
|
| - // so it is disabled waiting for it to be stopped.
|
| - };
|
| -
|
| - // This enum is used for "Sync.*ConfigureFailre" histograms so the order
|
| - // of is important. Any changes need to be reflected in histograms.xml.
|
| - enum ConfigureResult {
|
| - OK, // The data type has started normally.
|
| - OK_FIRST_RUN, // Same as OK, but sent on first successful
|
| - // start for this type for this user as
|
| - // determined by cloud state.
|
| - ASSOCIATION_FAILED, // An error occurred during model association.
|
| - ABORTED, // Start was aborted by calling Stop().
|
| - UNRECOVERABLE_ERROR, // An unrecoverable error occured.
|
| - NEEDS_CRYPTO, // The data type cannot be started yet because it
|
| - // depends on the cryptographer.
|
| - RUNTIME_ERROR, // After starting, a runtime error was encountered.
|
| - MAX_CONFIGURE_RESULT
|
| - };
|
| -
|
| - typedef base::Callback<void(ConfigureResult,
|
| - const syncer::SyncMergeResult&,
|
| - const syncer::SyncMergeResult&)> StartCallback;
|
| -
|
| - typedef base::Callback<void(syncer::ModelType,
|
| - syncer::SyncError)> ModelLoadCallback;
|
| -
|
| - typedef std::map<syncer::ModelType,
|
| - scoped_refptr<DataTypeController> > TypeMap;
|
| - typedef std::map<syncer::ModelType, DataTypeController::State> StateMap;
|
| -
|
| - // Returns true if the start result should trigger an unrecoverable error.
|
| - // Public so unit tests can use this function as well.
|
| - static bool IsUnrecoverableResult(ConfigureResult result);
|
| -
|
| - // Returns true if the datatype started successfully.
|
| - static bool IsSuccessfulResult(ConfigureResult result);
|
| -
|
| - // Returns true if DataTypeManager should wait for LoadModels to complete
|
| - // successfully before starting configuration. Directory based types should
|
| - // return false while USS datatypes should return true.
|
| - virtual bool ShouldLoadModelBeforeConfigure() const = 0;
|
| -
|
| - // Begins asynchronous operation of loading the model to get it ready for
|
| - // model association. Once the models are loaded the callback will be invoked
|
| - // with the result. If the models are already loaded it is safe to call the
|
| - // callback right away. Else the callback needs to be stored and called when
|
| - // the models are ready.
|
| - virtual void LoadModels(const ModelLoadCallback& model_load_callback) = 0;
|
| -
|
| - // Registers with sync backend if needed. This function is called by
|
| - // DataTypeManager before downloading initial data. Non-blocking types need to
|
| - // pass activation context containing progress marker to sync backend before
|
| - // initial download starts.
|
| - virtual void RegisterWithBackend(BackendDataTypeConfigurer* configurer) = 0;
|
| -
|
| - // Will start a potentially asynchronous operation to perform the
|
| - // model association. Once the model association is done the callback will
|
| - // be invoked.
|
| - virtual void StartAssociating(const StartCallback& start_callback) = 0;
|
| -
|
| - // Called by DataTypeManager to activate the controlled data type using
|
| - // one of the implementation specific methods provided by the |configurer|.
|
| - // This is called (on UI thread) after the data type configuration has
|
| - // completed successfully.
|
| - virtual void ActivateDataType(BackendDataTypeConfigurer* configurer) = 0;
|
| -
|
| - // Called by DataTypeManager to deactivate the controlled data type.
|
| - // See comments for ModelAssociationManager::OnSingleDataTypeWillStop.
|
| - virtual void DeactivateDataType(BackendDataTypeConfigurer* configurer) = 0;
|
| -
|
| - // Synchronously stops the data type. If StartAssociating has already been
|
| - // called but is not done yet it will be aborted. Similarly if LoadModels
|
| - // has not completed it will also be aborted.
|
| - // NOTE: Stop() should be called after sync backend machinery has stopped
|
| - // routing changes to this data type. Stop() should ensure the data type
|
| - // logic shuts down gracefully by flushing remaining changes and calling
|
| - // StopSyncing on the SyncableService. This assumes no changes will ever
|
| - // propagate from sync again from point where Stop() is called.
|
| - virtual void Stop() = 0;
|
| -
|
| - // Unique model type for this data type controller.
|
| - virtual syncer::ModelType type() const = 0;
|
| -
|
| - // Name of this data type. For logging purposes only.
|
| - virtual std::string name() const = 0;
|
| -
|
| - // Current state of the data type controller.
|
| - virtual State state() const = 0;
|
| -
|
| - // Partial implementation of DataTypeErrorHandler.
|
| - // This is thread safe.
|
| - syncer::SyncError CreateAndUploadError(
|
| - const tracked_objects::Location& location,
|
| - const std::string& message,
|
| - syncer::ModelType type) override;
|
| -
|
| - // Whether the DataTypeController is ready to start. This is useful if the
|
| - // datatype itself must make the decision about whether it should be enabled
|
| - // at all (and therefore whether the initial download of the sync data for
|
| - // the type should be performed).
|
| - // Returns true by default.
|
| - virtual bool ReadyForStart() const;
|
| -
|
| - protected:
|
| - friend class base::RefCountedDeleteOnMessageLoop<DataTypeController>;
|
| - friend class base::DeleteHelper<DataTypeController>;
|
| -
|
| - DataTypeController(
|
| - const scoped_refptr<base::SingleThreadTaskRunner>& ui_thread,
|
| - const base::Closure& error_callback);
|
| -
|
| - ~DataTypeController() override;
|
| -
|
| - const scoped_refptr<base::SingleThreadTaskRunner>& ui_thread() const {
|
| - return ui_thread_;
|
| - }
|
| -
|
| - // The callback that will be invoked when an unrecoverable error occurs.
|
| - // TODO(sync): protected for use by legacy controllers.
|
| - base::Closure error_callback_;
|
| -
|
| - private:
|
| - const scoped_refptr<base::SingleThreadTaskRunner> ui_thread_;
|
| -};
|
| -
|
| -} // namespace sync_driver
|
| -
|
| -#endif // COMPONENTS_SYNC_DRIVER_DATA_TYPE_CONTROLLER_H__
|
|
|