Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(300)

Unified Diff: chrome/browser/invalidation/invalidation_service_android.cc

Issue 13991017: Commit InvalidationService implementations (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Another attempt to fix Android Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/invalidation/invalidation_service_android.cc
diff --git a/chrome/browser/invalidation/invalidation_service_android.cc b/chrome/browser/invalidation/invalidation_service_android.cc
new file mode 100644
index 0000000000000000000000000000000000000000..664aef1e84a2943b8c3769cbc686304d524d714e
--- /dev/null
+++ b/chrome/browser/invalidation/invalidation_service_android.cc
@@ -0,0 +1,95 @@
+// 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.
+
+#include "chrome/browser/invalidation/invalidation_service_android.h"
+
+#include "chrome/common/chrome_notification_types.h"
+#include "content/public/browser/notification_service.h"
+
+namespace invalidation {
+
+InvalidationServiceAndroid::InvalidationServiceAndroid(Profile* profile)
+ : invalidator_state_(syncer::INVALIDATIONS_ENABLED) {
+ DCHECK(CalledOnValidThread());
+ registrar_.Add(this, chrome::NOTIFICATION_SYNC_REFRESH_REMOTE,
+ content::Source<Profile>(profile));
+}
+
+InvalidationServiceAndroid::~InvalidationServiceAndroid() { }
+
+void InvalidationServiceAndroid::RegisterInvalidationHandler(
+ syncer::InvalidationHandler* handler) {
+ DCHECK(CalledOnValidThread());
+ invalidator_registrar_.RegisterHandler(handler);
+}
+
+void InvalidationServiceAndroid::UpdateRegisteredInvalidationIds(
+ syncer::InvalidationHandler* handler,
+ const syncer::ObjectIdSet& ids) {
+ DCHECK(CalledOnValidThread());
+ invalidator_registrar_.UpdateRegisteredIds(handler, ids);
+}
+
+void InvalidationServiceAndroid::UnregisterInvalidationHandler(
+ syncer::InvalidationHandler* handler) {
+ DCHECK(CalledOnValidThread());
+ invalidator_registrar_.UnregisterHandler(handler);
+}
+
+void InvalidationServiceAndroid::AcknowledgeInvalidation(
+ const invalidation::ObjectId& id,
+ const syncer::AckHandle& ack_handle) {
+ DCHECK(CalledOnValidThread());
+ // Do nothing. The Android invalidator does not support ack tracking.
+}
+
+syncer::InvalidatorState
+InvalidationServiceAndroid::GetInvalidatorState() const {
+ DCHECK(CalledOnValidThread());
+ return invalidator_state_;
+}
+
+std::string InvalidationServiceAndroid::GetInvalidatorClientId() const {
+ DCHECK(CalledOnValidThread());
+ // TODO: Return a valid ID here. See crbug.com/172391.
+ return "Bogus";
+}
+
+void InvalidationServiceAndroid::Observe(
+ int type,
+ const content::NotificationSource& source,
+ const content::NotificationDetails& details) {
+ DCHECK(CalledOnValidThread());
+ DCHECK_EQ(type, chrome::NOTIFICATION_SYNC_REFRESH_REMOTE);
+
+ // TODO(akalin): Use ObjectIdInvalidationMap here instead. We'll have to
+ // make sure all emitters of the relevant notifications also use
+ // ObjectIdInvalidationMap.
+ content::Details<const syncer::ModelTypeInvalidationMap>
+ state_details(details);
+ const syncer::ModelTypeInvalidationMap& model_type_invalidation_map =
+ *(state_details.ptr());
+ syncer::ObjectIdInvalidationMap object_invalidation_map =
+ ModelTypeInvalidationMapToObjectIdInvalidationMap(
+ model_type_invalidation_map);
+
+ // An empty map implies that we should invalidate all.
+ const syncer::ObjectIdInvalidationMap& effective_invalidation_map =
+ object_invalidation_map.empty() ?
+ ObjectIdSetToInvalidationMap(
+ invalidator_registrar_.GetAllRegisteredIds(), std::string()) :
+ object_invalidation_map;
+
+ invalidator_registrar_.DispatchInvalidationsToHandlers(
+ effective_invalidation_map);
+}
+
+void InvalidationServiceAndroid::TriggerStateChangeForTest(
+ syncer::InvalidatorState state) {
+ DCHECK(CalledOnValidThread());
+ invalidator_state_ = state;
+ invalidator_registrar_.UpdateInvalidatorState(invalidator_state_);
+}
+
+} // namespace invalidation

Powered by Google App Engine
This is Rietveld 408576698