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

Unified Diff: components/invalidation/invalidation_service_android.cc

Issue 1191393008: Introduce a layering in the invalidation component as public and impl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Explicitly forbid content to prevent future additions Created 5 years, 6 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: components/invalidation/invalidation_service_android.cc
diff --git a/components/invalidation/invalidation_service_android.cc b/components/invalidation/invalidation_service_android.cc
deleted file mode 100644
index b91f8e881600680fe4b67ada92be15a2acf085e7..0000000000000000000000000000000000000000
--- a/components/invalidation/invalidation_service_android.cc
+++ /dev/null
@@ -1,171 +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.
-
-#include "components/invalidation/invalidation_service_android.h"
-
-#include "base/android/jni_android.h"
-#include "base/android/jni_array.h"
-#include "base/android/jni_string.h"
-#include "base/callback.h"
-#include "components/invalidation/object_id_invalidation_map.h"
-#include "google/cacheinvalidation/types.pb.h"
-#include "jni/InvalidationService_jni.h"
-
-using base::android::ConvertJavaStringToUTF8;
-using base::android::ConvertUTF8ToJavaString;
-
-namespace invalidation {
-
-InvalidationServiceAndroid::InvalidationServiceAndroid(jobject context)
- : invalidator_state_(syncer::INVALIDATIONS_ENABLED),
- logger_() {
- DCHECK(CalledOnValidThread());
- JNIEnv* env = base::android::AttachCurrentThread();
- base::android::ScopedJavaLocalRef<jobject> local_java_ref =
- Java_InvalidationService_create(env,
- context,
- reinterpret_cast<intptr_t>(this));
- java_ref_.Reset(env, local_java_ref.obj());
-}
-
-InvalidationServiceAndroid::~InvalidationServiceAndroid() { }
-
-void InvalidationServiceAndroid::RegisterInvalidationHandler(
- syncer::InvalidationHandler* handler) {
- DCHECK(CalledOnValidThread());
- invalidator_registrar_.RegisterHandler(handler);
- logger_.OnRegistration(handler->GetOwnerName());
-}
-
-bool InvalidationServiceAndroid::UpdateRegisteredInvalidationIds(
- syncer::InvalidationHandler* handler,
- const syncer::ObjectIdSet& ids) {
- DCHECK(CalledOnValidThread());
- JNIEnv* env = base::android::AttachCurrentThread();
- DCHECK(env);
-
- if (!invalidator_registrar_.UpdateRegisteredIds(handler, ids))
- return false;
- const syncer::ObjectIdSet& registered_ids =
- invalidator_registrar_.GetAllRegisteredIds();
-
- // To call the corresponding method on the Java invalidation service, split
- // the object ids into object source and object name arrays.
- std::vector<int> sources;
- std::vector<std::string> names;
- syncer::ObjectIdSet::const_iterator id;
- for (id = registered_ids.begin(); id != registered_ids.end(); ++id) {
- sources.push_back(id->source());
- names.push_back(id->name());
- }
-
- Java_InvalidationService_setRegisteredObjectIds(
- env,
- java_ref_.obj(),
- base::android::ToJavaIntArray(env, sources).obj(),
- base::android::ToJavaArrayOfStrings(env, names).obj());
-
- logger_.OnUpdateIds(invalidator_registrar_.GetSanitizedHandlersIdsMap());
- return true;
-}
-
-void InvalidationServiceAndroid::UnregisterInvalidationHandler(
- syncer::InvalidationHandler* handler) {
- DCHECK(CalledOnValidThread());
- invalidator_registrar_.UnregisterHandler(handler);
- logger_.OnUnregistration(handler->GetOwnerName());
-}
-
-syncer::InvalidatorState
-InvalidationServiceAndroid::GetInvalidatorState() const {
- DCHECK(CalledOnValidThread());
- return invalidator_state_;
-}
-
-std::string InvalidationServiceAndroid::GetInvalidatorClientId() const {
- DCHECK(CalledOnValidThread());
- JNIEnv* env = base::android::AttachCurrentThread();
- DCHECK(env);
-
- // Ask the Java code to for the invalidator ID it's currently using.
- base::android::ScopedJavaLocalRef<_jbyteArray*> id_bytes_java =
- Java_InvalidationService_getInvalidatorClientId(env, java_ref_.obj());
-
- // Convert it into a more convenient format for C++.
- std::vector<uint8_t> id_bytes;
- base::android::JavaByteArrayToByteVector(env, id_bytes_java.obj(), &id_bytes);
- std::string id(id_bytes.begin(), id_bytes.end());
-
- return id;
-}
-
-InvalidationLogger* InvalidationServiceAndroid::GetInvalidationLogger() {
- return &logger_;
-}
-
-void InvalidationServiceAndroid::RequestDetailedStatus(
- base::Callback<void(const base::DictionaryValue&)> return_callback) const {
-}
-
-IdentityProvider* InvalidationServiceAndroid::GetIdentityProvider() {
- return NULL;
-}
-
-void InvalidationServiceAndroid::TriggerStateChangeForTest(
- syncer::InvalidatorState state) {
- DCHECK(CalledOnValidThread());
- invalidator_state_ = state;
- invalidator_registrar_.UpdateInvalidatorState(invalidator_state_);
-}
-
-void InvalidationServiceAndroid::Invalidate(JNIEnv* env,
- jobject obj,
- jint object_source,
- jstring java_object_id,
- jlong version,
- jstring java_payload) {
- syncer::ObjectIdInvalidationMap object_invalidation_map;
- if (!java_object_id) {
- syncer::ObjectIdSet sync_ids;
- if (object_source == 0) {
- sync_ids = invalidator_registrar_.GetAllRegisteredIds();
- } else {
- for (const auto& id : invalidator_registrar_.GetAllRegisteredIds()) {
- if (id.source() == object_source)
- sync_ids.insert(id);
- }
- }
- object_invalidation_map =
- syncer::ObjectIdInvalidationMap::InvalidateAll(sync_ids);
- } else {
- invalidation::ObjectId object_id(
- object_source, ConvertJavaStringToUTF8(env, java_object_id));
-
- if (version == ipc::invalidation::Constants::UNKNOWN) {
- object_invalidation_map.Insert(
- syncer::Invalidation::InitUnknownVersion(object_id));
- } else {
- ObjectIdVersionMap::iterator it =
- max_invalidation_versions_.find(object_id);
- if ((it != max_invalidation_versions_.end()) && (version <= it->second)) {
- DVLOG(1) << "Dropping redundant invalidation with version " << version;
- return;
- }
- max_invalidation_versions_[object_id] = version;
- object_invalidation_map.Insert(syncer::Invalidation::Init(
- object_id, version, ConvertJavaStringToUTF8(env, java_payload)));
- }
- }
-
- invalidator_registrar_.DispatchInvalidationsToHandlers(
- object_invalidation_map);
- logger_.OnInvalidation(object_invalidation_map);
-}
-
-// static
-bool InvalidationServiceAndroid::RegisterJni(JNIEnv* env) {
- return RegisterNativesImpl(env);
-}
-
-} // namespace invalidation

Powered by Google App Engine
This is Rietveld 408576698