summaryrefslogtreecommitdiffstats
path: root/chrome/browser/sync/notifier/bridged_sync_notifier.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/sync/notifier/bridged_sync_notifier.h')
-rw-r--r--chrome/browser/sync/notifier/bridged_sync_notifier.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/chrome/browser/sync/notifier/bridged_sync_notifier.h b/chrome/browser/sync/notifier/bridged_sync_notifier.h
new file mode 100644
index 0000000..a7cbedb
--- /dev/null
+++ b/chrome/browser/sync/notifier/bridged_sync_notifier.h
@@ -0,0 +1,52 @@
+// Copyright (c) 2012 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_NOTIFIER_BRIDGED_SYNC_NOTIFIER_H_
+#define CHROME_BROWSER_SYNC_NOTIFIER_BRIDGED_SYNC_NOTIFIER_H_
+
+#include "base/compiler_specific.h"
+#include "base/memory/scoped_ptr.h"
+#include "chrome/browser/sync/notifier/sync_notifier.h"
+
+namespace sync_notifier {
+
+class ChromeSyncNotificationBridge;
+
+// A SyncNotifier implementation that wraps a ChromeSyncNotificationBridge
+// and a SyncNotifier delegate (which it takes ownership of). All SyncNotifier
+// calls are passed straight through to the delegate, with the exception of
+// AddObserver/RemoveObserver, which also result in the observer being
+// registered/deregistered with the ChromeSyncNotificationBridge.
+class BridgedSyncNotifier : public SyncNotifier {
+ public:
+ // Does not take ownership of |bridge|. Takes ownership of |delegate|.
+ BridgedSyncNotifier(ChromeSyncNotificationBridge* bridge,
+ SyncNotifier* delegate);
+ virtual ~BridgedSyncNotifier();
+
+ // SyncNotifier implementation. Passes through all calls to the delegate.
+ // AddObserver/RemoveObserver will also register/deregister |observer| with
+ // the bridge.
+ virtual void AddObserver(SyncNotifierObserver* observer) OVERRIDE;
+ virtual void RemoveObserver(SyncNotifierObserver* observer) OVERRIDE;
+ virtual void SetUniqueId(const std::string& unique_id) OVERRIDE;
+ virtual void SetState(const std::string& state) OVERRIDE;
+ virtual void UpdateCredentials(
+ const std::string& email, const std::string& token) OVERRIDE;
+ virtual void UpdateEnabledTypes(
+ syncable::ModelTypeSet enabled_types) OVERRIDE;
+ virtual void SendNotification(
+ syncable::ModelTypeSet changed_types) OVERRIDE;
+
+ private:
+ // The notification bridge that we register the observers with.
+ ChromeSyncNotificationBridge* bridge_;
+
+ // The delegate we are wrapping.
+ scoped_ptr<SyncNotifier> delegate_;
+};
+
+} // namespace sync_notifier
+
+#endif // CHROME_BROWSER_SYNC_NOTIFIER_BRIDGED_SYNC_NOTIFIER_H_