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

Side by Side Diff: components/gcm_driver/gcm_driver_android.cc

Issue 312683004: JNI bindings for GCMDriverAndroid (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Renamed OnMessagesDeletedByServer Created 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/gcm_driver/gcm_driver_android.h" 5 #include "components/gcm_driver/gcm_driver_android.h"
6 6
7 #include "base/android/jni_android.h"
8 #include "base/android/jni_array.h"
9 #include "base/android/jni_string.h"
7 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
8 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "jni/GCMDriver_jni.h"
9 13
10 namespace gcm { 14 using base::android::AppendJavaStringArrayToStringVector;
11 static void Java_GCMDriver_doNothing(JNIEnv* env) ALLOW_UNUSED; 15 using base::android::AttachCurrentThread;
12 } // namespace gcm 16 using base::android::ConvertJavaStringToUTF8;
13 17 using base::android::ConvertUTF8ToJavaString;
14 // Must come after the ALLOW_UNUSED declaration. 18 using base::android::ToJavaArrayOfStrings;
15 #include "jni/GCMDriver_jni.h"
16 19
17 namespace gcm { 20 namespace gcm {
18 21
19 GCMDriverAndroid::GCMDriverAndroid() { 22 GCMDriverAndroid::GCMDriverAndroid() {
23 JNIEnv* env = AttachCurrentThread();
24 java_ref_.Reset(
25 Java_GCMDriver_create(env,
26 reinterpret_cast<intptr_t>(this),
27 base::android::GetApplicationContext()));
20 } 28 }
21 29
22 GCMDriverAndroid::~GCMDriverAndroid() { 30 GCMDriverAndroid::~GCMDriverAndroid() {
31 JNIEnv* env = AttachCurrentThread();
32 Java_GCMDriver_destroy(env, java_ref_.obj());
23 } 33 }
24 34
25 void GCMDriverAndroid::Enable() { 35 void GCMDriverAndroid::Enable() {
26 } 36 }
27 37
28 void GCMDriverAndroid::Disable() { 38 void GCMDriverAndroid::Disable() {
29 } 39 }
30 40
31 void GCMDriverAndroid::Register(const std::string& app_id, 41 void GCMDriverAndroid::Register(const std::string& app_id,
32 const std::vector<std::string>& sender_ids, 42 const std::vector<std::string>& sender_ids,
33 const RegisterCallback& callback) { 43 const RegisterCallback& callback) {
34 // TODO(johnme): Hook up to Android GCM API via JNI. 44 // TODO(johnme): Store callback.
35 NOTIMPLEMENTED(); 45
46 JNIEnv* env = AttachCurrentThread();
47 Java_GCMDriver_register(
48 env, java_ref_.obj(),
49 ConvertUTF8ToJavaString(env, app_id).Release(),
50 ToJavaArrayOfStrings(env, sender_ids).obj());
36 } 51 }
37 52
38 void GCMDriverAndroid::Unregister(const std::string& app_id, 53 void GCMDriverAndroid::Unregister(const std::string& app_id,
39 const UnregisterCallback& callback) { 54 const UnregisterCallback& callback) {
40 // TODO(johnme): Hook up to Android GCM API via JNI. 55 // TODO(johnme): Store callback.
41 NOTIMPLEMENTED(); 56
57 JNIEnv* env = AttachCurrentThread();
58 Java_GCMDriver_unregister(
59 env, java_ref_.obj(),
60 ConvertUTF8ToJavaString(env, app_id).Release());
42 } 61 }
43 62
44 void GCMDriverAndroid::Send(const std::string& app_id, 63 void GCMDriverAndroid::Send(const std::string& app_id,
45 const std::string& receiver_id, 64 const std::string& receiver_id,
46 const GCMClient::OutgoingMessage& message, 65 const GCMClient::OutgoingMessage& message,
47 const SendCallback& callback) { 66 const SendCallback& callback) {
48 NOTIMPLEMENTED(); 67 NOTIMPLEMENTED();
49 } 68 }
50 69
51 GCMClient* GCMDriverAndroid::GetGCMClientForTesting() const { 70 GCMClient* GCMDriverAndroid::GetGCMClientForTesting() const {
(...skipping 17 matching lines...) Expand all
69 88
70 void GCMDriverAndroid::SetGCMRecording(const GetGCMStatisticsCallback& callback, 89 void GCMDriverAndroid::SetGCMRecording(const GetGCMStatisticsCallback& callback,
71 bool recording) { 90 bool recording) {
72 NOTIMPLEMENTED(); 91 NOTIMPLEMENTED();
73 } 92 }
74 93
75 std::string GCMDriverAndroid::SignedInUserName() const { 94 std::string GCMDriverAndroid::SignedInUserName() const {
76 return std::string(); 95 return std::string();
77 } 96 }
78 97
98 void GCMDriverAndroid::OnRegisterFinished(JNIEnv* env,
99 jobject obj,
100 jstring j_app_id,
101 jstring j_registration_id,
102 jboolean success) {
103 std::string app_id = ConvertJavaStringToUTF8(env, j_app_id);
104 std::string registration_id = ConvertJavaStringToUTF8(env, j_registration_id);
105 GCMClient::Result result ALLOW_UNUSED = success ? GCMClient::SUCCESS
106 : GCMClient::UNKNOWN_ERROR;
107
108 NOTIMPLEMENTED(); // TODO(johnme): Fire callback.
109 }
110
111 void GCMDriverAndroid::OnUnregisterFinished(JNIEnv* env,
112 jobject obj,
113 jstring j_app_id,
114 jboolean success) {
115 std::string app_id = ConvertJavaStringToUTF8(env, j_app_id);
116 GCMClient::Result result ALLOW_UNUSED = success ? GCMClient::SUCCESS
117 : GCMClient::UNKNOWN_ERROR;
118
119 NOTIMPLEMENTED(); // TODO(johnme): Fire callback.
120 }
121
122 void GCMDriverAndroid::OnMessageReceived(JNIEnv* env,
123 jobject obj,
124 jstring j_app_id,
125 jstring j_sender_id,
126 jstring j_collapse_key,
127 jobjectArray j_data_keys_and_values) {
128 std::string app_id = ConvertJavaStringToUTF8(env, j_app_id);
129 GCMClient::IncomingMessage message;
130 message.sender_id = ConvertJavaStringToUTF8(env, j_sender_id);
131 message.collapse_key = ConvertJavaStringToUTF8(env, j_collapse_key);
132 // Expand j_data_keys_and_values from array to map.
133 std::vector<std::string> data_keys_and_values;
134 AppendJavaStringArrayToStringVector(env,
135 j_data_keys_and_values,
136 &data_keys_and_values);
137 for (size_t i = 0; i + 1 < data_keys_and_values.size(); i += 2) {
138 message.data[data_keys_and_values[i]] = data_keys_and_values[i+1];
139 }
140
141 NOTIMPLEMENTED(); // TODO(johnme): Notify app handler.
142 }
143
144 void GCMDriverAndroid::OnMessagesDeleted(JNIEnv* env,
145 jobject obj,
146 jstring j_app_id) {
147 std::string app_id = ConvertJavaStringToUTF8(env, j_app_id);
148
149 NOTIMPLEMENTED(); // TODO(johnme): Notify app handler.
150 }
151
79 // static 152 // static
80 bool GCMDriverAndroid::RegisterBindings(JNIEnv* env) { 153 bool GCMDriverAndroid::RegisterBindings(JNIEnv* env) {
81 return RegisterNativesImpl(env); 154 return RegisterNativesImpl(env);
82 } 155 }
83 156
84 } // namespace gcm 157 } // namespace gcm
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698