Index: components/gcm_driver/instance_id/instance_id_android.h |
diff --git a/components/gcm_driver/instance_id/instance_id_android.h b/components/gcm_driver/instance_id/instance_id_android.h |
index de0ff62de2ce952b12fbc98e5a0d79484b3357b6..a11529604142cc774d0a96cf0e208ef3e6386a97 100644 |
--- a/components/gcm_driver/instance_id/instance_id_android.h |
+++ b/components/gcm_driver/instance_id/instance_id_android.h |
@@ -5,12 +5,17 @@ |
#ifndef COMPONENTS_GCM_DRIVER_INSTANCE_ID_INSTANCE_ID_ANDROID_H_ |
#define COMPONENTS_GCM_DRIVER_INSTANCE_ID_INSTANCE_ID_ANDROID_H_ |
+#include <jni.h> |
+ |
#include <map> |
#include <string> |
+#include "base/android/scoped_java_ref.h" |
#include "base/callback.h" |
#include "base/compiler_specific.h" |
+#include "base/id_map.h" |
#include "base/macros.h" |
+#include "base/threading/thread_checker.h" |
#include "base/time/time.h" |
#include "components/gcm_driver/instance_id/instance_id.h" |
@@ -19,10 +24,13 @@ namespace instance_id { |
// InstanceID implementation for Android. |
class InstanceIDAndroid : public InstanceID { |
public: |
- InstanceIDAndroid(const std::string& app_id, gcm::InstanceIDHandler* handler); |
+ // Register JNI methods. |
+ static bool RegisterJni(JNIEnv* env); |
+ |
+ InstanceIDAndroid(const std::string& app_id); |
~InstanceIDAndroid() override; |
- // InstanceID: |
+ // InstanceID implementation: |
void GetID(const GetIDCallback& callback) override; |
void GetCreationTime(const GetCreationTimeCallback& callback) override; |
void GetToken(const std::string& audience, |
@@ -34,7 +42,29 @@ class InstanceIDAndroid : public InstanceID { |
const DeleteTokenCallback& callback) override; |
void DeleteID(const DeleteIDCallback& callback) override; |
+ // Methods called from Java via JNI: |
+ void DidGetToken(JNIEnv* env, |
+ const base::android::JavaParamRef<jobject>& obj, |
+ jint request_id, |
+ const base::android::JavaParamRef<jstring>& jtoken); |
+ void DidDeleteToken(JNIEnv* env, |
+ const base::android::JavaParamRef<jobject>& obj, |
+ jint request_id, |
+ jboolean success); |
+ void DidDeleteID(JNIEnv* env, |
+ const base::android::JavaParamRef<jobject>& obj, |
+ jint request_id, |
+ jboolean success); |
+ |
private: |
+ base::android::ScopedJavaGlobalRef<jobject> java_ref_; |
+ |
+ IDMap<GetTokenCallback, IDMapOwnPointer> get_token_callbacks_; |
+ IDMap<DeleteTokenCallback, IDMapOwnPointer> delete_token_callbacks_; |
+ IDMap<DeleteIDCallback, IDMapOwnPointer> delete_id_callbacks_; |
+ |
+ base::ThreadChecker thread_checker_; |
+ |
DISALLOW_COPY_AND_ASSIGN(InstanceIDAndroid); |
}; |