Index: chrome/browser/invalidation/android_invalidation_service.h |
diff --git a/chrome/browser/invalidation/android_invalidation_service.h b/chrome/browser/invalidation/android_invalidation_service.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..621599041af61be9ef77f54117a188e2e24643ca |
--- /dev/null |
+++ b/chrome/browser/invalidation/android_invalidation_service.h |
@@ -0,0 +1,70 @@ |
+// Copyright (c) 2013 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_INVALIDATION_ANDROID_INVALIDATION_SERVICE_H_ |
+#define CHROME_BROWSER_INVALIDATION_ANDROID_INVALIDATION_SERVICE_H_ |
+ |
+#include "base/basictypes.h" |
+#include "base/threading/non_thread_safe.h" |
+#include "chrome/browser/invalidation/invalidation_frontend.h" |
+#include "chrome/browser/profiles/profile_keyed_service.h" |
+#include "content/public/browser/notification_observer.h" |
+#include "content/public/browser/notification_registrar.h" |
+#include "sync/notifier/invalidator_registrar.h" |
+ |
+class Profile; |
+ |
+namespace invalidation { |
+ |
+// This InvalidationService is used to deliver invalidations on Android. The |
+// Android operating system has its own mechanisms for delivering invalidations. |
+// This class uses the NotificationService to communicate with a thin wrapper |
+// around Android's invalidations service. |
+class AndroidInvalidationService |
+ : public base::NonThreadSafe, |
+ public ProfileKeyedService, |
+ public InvalidationFrontend, |
+ public content::NotificationObserver { |
+ public: |
+ explicit AndroidInvalidationService(Profile* profile); |
+ virtual ~AndroidInvalidationService(); |
+ |
+ // InvalidationService implementation. |
+ // |
+ // Note that this implementation does not properly support Ack-tracking, |
+ // fetching the invalidator state, or querying the client's ID. Support for |
+ // exposing the client ID should be available soon; see crbug.com/172391. |
+ virtual void RegisterInvalidationHandler( |
+ syncer::InvalidationHandler* handler) OVERRIDE; |
akalin
2013/05/08 00:43:31
compiler_specific.h for OVERRIDE
rlarocque
2013/05/08 01:22:28
Done.
|
+ virtual void UpdateRegisteredInvalidationIds( |
+ syncer::InvalidationHandler* handler, |
+ const syncer::ObjectIdSet& ids) OVERRIDE; |
+ virtual void UnregisterInvalidationHandler( |
+ syncer::InvalidationHandler* handler) OVERRIDE; |
+ virtual void AcknowledgeInvalidation( |
+ const invalidation::ObjectId& id, |
+ const syncer::AckHandle& ack_handle) OVERRIDE; |
+ virtual syncer::InvalidatorState GetInvalidatorState() const OVERRIDE; |
+ virtual std::string GetInvalidatorClientId() const; |
+ |
+ // content::NotificationObserver implementation. |
+ virtual void Observe(int type, |
+ const content::NotificationSource& source, |
+ const content::NotificationDetails& details) OVERRIDE; |
+ |
+ // The AndroidInvalidationService always reports that it is enabled. |
+ // This is used only by unit tests. |
+ void TriggerStateChangeForTest(syncer::InvalidatorState state); |
+ |
+ private: |
+ syncer::InvalidatorRegistrar invalidator_registrar_; |
+ content::NotificationRegistrar registrar_; |
+ syncer::InvalidatorState invalidator_state_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(AndroidInvalidationService); |
+}; |
+ |
+} // namespace invalidation |
+ |
+#endif // CHROME_BROWSER_INVALIDATION_ANDROID_INVALIDATION_SERVICE_H_ |