OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/instance_id/instance_id_android.h" | 5 #include "components/gcm_driver/instance_id/instance_id_android.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 InstanceIDAndroid::~InstanceIDAndroid() { | 70 InstanceIDAndroid::~InstanceIDAndroid() { |
71 DCHECK(thread_checker_.CalledOnValidThread()); | 71 DCHECK(thread_checker_.CalledOnValidThread()); |
72 | 72 |
73 JNIEnv* env = AttachCurrentThread(); | 73 JNIEnv* env = AttachCurrentThread(); |
74 Java_InstanceIDBridge_destroy(env, java_ref_.obj()); | 74 Java_InstanceIDBridge_destroy(env, java_ref_.obj()); |
75 } | 75 } |
76 | 76 |
77 void InstanceIDAndroid::GetID(const GetIDCallback& callback) { | 77 void InstanceIDAndroid::GetID(const GetIDCallback& callback) { |
78 DCHECK(thread_checker_.CalledOnValidThread()); | 78 DCHECK(thread_checker_.CalledOnValidThread()); |
79 | 79 |
| 80 int32_t request_id = get_id_callbacks_.Add(new GetIDCallback(callback)); |
| 81 |
80 JNIEnv* env = AttachCurrentThread(); | 82 JNIEnv* env = AttachCurrentThread(); |
81 std::string id = ConvertJavaStringToUTF8( | 83 Java_InstanceIDBridge_getId(env, java_ref_.obj(), request_id); |
82 Java_InstanceIDBridge_getId(env, java_ref_.obj())); | |
83 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, | |
84 base::Bind(callback, id)); | |
85 } | 84 } |
86 | 85 |
87 void InstanceIDAndroid::GetCreationTime( | 86 void InstanceIDAndroid::GetCreationTime( |
88 const GetCreationTimeCallback& callback) { | 87 const GetCreationTimeCallback& callback) { |
89 DCHECK(thread_checker_.CalledOnValidThread()); | 88 DCHECK(thread_checker_.CalledOnValidThread()); |
90 | 89 |
| 90 int32_t request_id = |
| 91 get_creation_time_callbacks_.Add(new GetCreationTimeCallback(callback)); |
| 92 |
91 JNIEnv* env = AttachCurrentThread(); | 93 JNIEnv* env = AttachCurrentThread(); |
92 int64_t creation_time_unix_ms = | 94 Java_InstanceIDBridge_getCreationTime(env, java_ref_.obj(), request_id); |
93 Java_InstanceIDBridge_getCreationTime(env, java_ref_.obj()); | |
94 base::Time creation_time; | |
95 // If the InstanceID's getId, getToken and deleteToken methods have never been | |
96 // called, or deleteInstanceID has cleared it since, creation time will be 0. | |
97 if (creation_time_unix_ms) { | |
98 creation_time = base::Time::UnixEpoch() + | |
99 base::TimeDelta::FromMilliseconds(creation_time_unix_ms); | |
100 } | |
101 base::ThreadTaskRunnerHandle::Get()->PostTask( | |
102 FROM_HERE, base::Bind(callback, creation_time)); | |
103 } | 95 } |
104 | 96 |
105 void InstanceIDAndroid::GetToken( | 97 void InstanceIDAndroid::GetToken( |
106 const std::string& authorized_entity, | 98 const std::string& authorized_entity, |
107 const std::string& scope, | 99 const std::string& scope, |
108 const std::map<std::string, std::string>& options, | 100 const std::map<std::string, std::string>& options, |
109 const GetTokenCallback& callback) { | 101 const GetTokenCallback& callback) { |
110 DCHECK(thread_checker_.CalledOnValidThread()); | 102 DCHECK(thread_checker_.CalledOnValidThread()); |
111 | 103 |
112 int32_t request_id = get_token_callbacks_.Add(new GetTokenCallback(callback)); | 104 int32_t request_id = get_token_callbacks_.Add(new GetTokenCallback(callback)); |
(...skipping 29 matching lines...) Expand all Loading... |
142 | 134 |
143 void InstanceIDAndroid::DeleteID(const DeleteIDCallback& callback) { | 135 void InstanceIDAndroid::DeleteID(const DeleteIDCallback& callback) { |
144 DCHECK(thread_checker_.CalledOnValidThread()); | 136 DCHECK(thread_checker_.CalledOnValidThread()); |
145 | 137 |
146 int32_t request_id = delete_id_callbacks_.Add(new DeleteIDCallback(callback)); | 138 int32_t request_id = delete_id_callbacks_.Add(new DeleteIDCallback(callback)); |
147 | 139 |
148 JNIEnv* env = AttachCurrentThread(); | 140 JNIEnv* env = AttachCurrentThread(); |
149 Java_InstanceIDBridge_deleteInstanceID(env, java_ref_.obj(), request_id); | 141 Java_InstanceIDBridge_deleteInstanceID(env, java_ref_.obj(), request_id); |
150 } | 142 } |
151 | 143 |
| 144 void InstanceIDAndroid::DidGetID( |
| 145 JNIEnv* env, |
| 146 const base::android::JavaParamRef<jobject>& obj, |
| 147 jint request_id, |
| 148 const base::android::JavaParamRef<jstring>& jid) { |
| 149 DCHECK(thread_checker_.CalledOnValidThread()); |
| 150 |
| 151 GetIDCallback* callback = get_id_callbacks_.Lookup(request_id); |
| 152 DCHECK(callback); |
| 153 callback->Run(ConvertJavaStringToUTF8(jid)); |
| 154 get_id_callbacks_.Remove(request_id); |
| 155 } |
| 156 |
| 157 void InstanceIDAndroid::DidGetCreationTime( |
| 158 JNIEnv* env, |
| 159 const base::android::JavaParamRef<jobject>& obj, |
| 160 jint request_id, |
| 161 jlong creation_time_unix_ms) { |
| 162 DCHECK(thread_checker_.CalledOnValidThread()); |
| 163 |
| 164 base::Time creation_time; |
| 165 // If the InstanceID's getId, getToken and deleteToken methods have never been |
| 166 // called, or deleteInstanceID has cleared it since, creation time will be 0. |
| 167 if (creation_time_unix_ms) { |
| 168 creation_time = base::Time::UnixEpoch() + |
| 169 base::TimeDelta::FromMilliseconds(creation_time_unix_ms); |
| 170 } |
| 171 |
| 172 GetCreationTimeCallback* callback = |
| 173 get_creation_time_callbacks_.Lookup(request_id); |
| 174 DCHECK(callback); |
| 175 callback->Run(creation_time); |
| 176 get_creation_time_callbacks_.Remove(request_id); |
| 177 } |
| 178 |
152 void InstanceIDAndroid::DidGetToken( | 179 void InstanceIDAndroid::DidGetToken( |
153 JNIEnv* env, | 180 JNIEnv* env, |
154 const base::android::JavaParamRef<jobject>& obj, | 181 const base::android::JavaParamRef<jobject>& obj, |
155 jint request_id, | 182 jint request_id, |
156 const base::android::JavaParamRef<jstring>& jtoken) { | 183 const base::android::JavaParamRef<jstring>& jtoken) { |
157 DCHECK(thread_checker_.CalledOnValidThread()); | 184 DCHECK(thread_checker_.CalledOnValidThread()); |
158 | 185 |
159 GetTokenCallback* callback = get_token_callbacks_.Lookup(request_id); | 186 GetTokenCallback* callback = get_token_callbacks_.Lookup(request_id); |
160 DCHECK(callback); | 187 DCHECK(callback); |
161 std::string token = ConvertJavaStringToUTF8(jtoken); | 188 std::string token = ConvertJavaStringToUTF8(jtoken); |
(...skipping 22 matching lines...) Expand all Loading... |
184 jboolean success) { | 211 jboolean success) { |
185 DCHECK(thread_checker_.CalledOnValidThread()); | 212 DCHECK(thread_checker_.CalledOnValidThread()); |
186 | 213 |
187 DeleteIDCallback* callback = delete_id_callbacks_.Lookup(request_id); | 214 DeleteIDCallback* callback = delete_id_callbacks_.Lookup(request_id); |
188 DCHECK(callback); | 215 DCHECK(callback); |
189 callback->Run(success ? InstanceID::SUCCESS : InstanceID::UNKNOWN_ERROR); | 216 callback->Run(success ? InstanceID::SUCCESS : InstanceID::UNKNOWN_ERROR); |
190 delete_id_callbacks_.Remove(request_id); | 217 delete_id_callbacks_.Remove(request_id); |
191 } | 218 } |
192 | 219 |
193 } // namespace instance_id | 220 } // namespace instance_id |
OLD | NEW |