diff options
author | Ben Murdoch <benm@google.com> | 2010-07-29 17:14:53 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2010-08-04 14:29:45 +0100 |
commit | c407dc5cd9bdc5668497f21b26b09d988ab439de (patch) | |
tree | 7eaf8707c0309516bdb042ad976feedaf72b0bb1 /chrome/browser/sync/glue/change_processor.h | |
parent | 0998b1cdac5733f299c12d88bc31ef9c8035b8fa (diff) | |
download | external_chromium-c407dc5cd9bdc5668497f21b26b09d988ab439de.zip external_chromium-c407dc5cd9bdc5668497f21b26b09d988ab439de.tar.gz external_chromium-c407dc5cd9bdc5668497f21b26b09d988ab439de.tar.bz2 |
Merge Chromium src@r53293
Change-Id: Ia79acf8670f385cee48c45b0a75371d8e950af34
Diffstat (limited to 'chrome/browser/sync/glue/change_processor.h')
-rw-r--r-- | chrome/browser/sync/glue/change_processor.h | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/chrome/browser/sync/glue/change_processor.h b/chrome/browser/sync/glue/change_processor.h new file mode 100644 index 0000000..7e020e6 --- /dev/null +++ b/chrome/browser/sync/glue/change_processor.h @@ -0,0 +1,69 @@ +// Copyright (c) 2006-2009 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 CHROME_BROWSER_SYNC_GLUE_CHANGE_PROCESSOR_H_ +#define CHROME_BROWSER_SYNC_GLUE_CHANGE_PROCESSOR_H_ + +#include "chrome/browser/sync/engine/syncapi.h" +#include "chrome/browser/sync/glue/sync_backend_host.h" + +class Profile; + +namespace browser_sync { + +class ModelAssociator; +class UnrecoverableErrorHandler; + +// An interface used to apply changes from the sync model to the browser's +// native model. This does not currently distinguish between model data types. +class ChangeProcessor { + public: + explicit ChangeProcessor(UnrecoverableErrorHandler* error_handler) + : running_(false), error_handler_(error_handler), share_handle_(NULL) {} + virtual ~ChangeProcessor(); + + // Call when the processor should accept changes from either provided model + // and apply them to the other. Both the chrome model and sync_api are + // expected to be initialized and loaded. You must have set a valid + // ModelAssociator and UnrecoverableErrorHandler before using this method, + // and the two models should be associated w.r.t the ModelAssociator provided. + // It is safe to call Start again after previously Stop()ing the processor. + // Subclasses can extract their associated chrome model from |profile| in + // |StartImpl|. + void Start(Profile* profile, sync_api::UserShare* share_handle); + void Stop(); + virtual bool IsRunning() const { return running_; } + + // Changes have been applied to the backend model and are ready to be + // applied to the frontend model. See syncapi.h for detailed instructions on + // how to interpret and process |changes|. + virtual void ApplyChangesFromSyncModel( + const sync_api::BaseTransaction* trans, + const sync_api::SyncManager::ChangeRecord* changes, + int change_count) = 0; + + protected: + // These methods are invoked by Start() and Stop() to do + // implementation-specific work. + virtual void StartImpl(Profile* profile) = 0; + virtual void StopImpl() = 0; + + bool running() { return running_; } + UnrecoverableErrorHandler* error_handler() { return error_handler_; } + sync_api::UserShare* share_handle() { return share_handle_; } + + private: + bool running_; // True if we have been told it is safe to process changes. + UnrecoverableErrorHandler* error_handler_; // Guaranteed to outlive us. + + // The sync model we are processing changes from. Non-NULL when |running_| is + // true. + sync_api::UserShare* share_handle_; + + DISALLOW_COPY_AND_ASSIGN(ChangeProcessor); +}; + +} // namespace browser_sync + +#endif // CHROME_BROWSER_SYNC_GLUE_CHANGE_PROCESSOR_H_ |