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

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

Issue 23643002: Enable invalidations for arbitrary objects on Android. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 3 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_controller_android.cc
diff --git a/chrome/browser/invalidation/invalidation_controller_android.cc b/chrome/browser/invalidation/invalidation_controller_android.cc
new file mode 100644
index 0000000000000000000000000000000000000000..c5f0ce381b86bc422b6314b5c1a304a15f945f27
--- /dev/null
+++ b/chrome/browser/invalidation/invalidation_controller_android.cc
@@ -0,0 +1,52 @@
+// 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_controller_android.h"
+
+#include <string>
+#include <vector>
+
+#include "base/android/jni_array.h"
+#include "google/cacheinvalidation/include/types.h"
+#include "sync/jni/InvalidationController_jni.h"
+
+namespace invalidation {
+
+InvalidationControllerAndroid::InvalidationControllerAndroid() {}
+
+InvalidationControllerAndroid::~InvalidationControllerAndroid() {}
+
+void InvalidationControllerAndroid::SetRegisteredObjectIds(
+ const syncer::ObjectIdSet& ids) {
+ // Get a reference to the Java invalidation controller.
+ JNIEnv* env = base::android::AttachCurrentThread();
+ DCHECK(env);
+ if (invalidation_controller_.is_null()) {
+ invalidation_controller_.Reset(Java_InvalidationController_get(
+ env,
+ base::android::GetApplicationContext()));
+ }
+
+ // To call the corresponding method on the Java invalidation controller, 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 = ids.begin(); id != ids.end(); ++id) {
+ sources.push_back(id->source());
+ names.push_back(id->name());
+ }
+
+ Java_InvalidationController_setRegisteredObjectIds(
+ env,
+ invalidation_controller_.obj(),
+ base::android::ToJavaIntArray(env, sources).obj(),
+ base::android::ToJavaArrayOfStrings(env, names).obj());
+}
+
+bool RegisterInvalidationController(JNIEnv* env) {
+ return RegisterNativesImpl(env);
+}
+
+} // namespace invalidation

Powered by Google App Engine
This is Rietveld 408576698