OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "chrome/browser/autofill/android/personal_data_manager_android.h" | 5 #include "chrome/browser/autofill/android/personal_data_manager_android.h" |
6 | 6 |
7 #include "base/android/jni_array.h" | 7 #include "base/android/jni_array.h" |
8 #include "base/android/jni_string.h" | 8 #include "base/android/jni_string.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/format_macros.h" | 10 #include "base/format_macros.h" |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 : weak_java_obj_(env, obj), | 162 : weak_java_obj_(env, obj), |
163 personal_data_manager_(PersonalDataManagerFactory::GetForProfile( | 163 personal_data_manager_(PersonalDataManagerFactory::GetForProfile( |
164 ProfileManager::GetActiveUserProfile())) { | 164 ProfileManager::GetActiveUserProfile())) { |
165 personal_data_manager_->AddObserver(this); | 165 personal_data_manager_->AddObserver(this); |
166 } | 166 } |
167 | 167 |
168 PersonalDataManagerAndroid::~PersonalDataManagerAndroid() { | 168 PersonalDataManagerAndroid::~PersonalDataManagerAndroid() { |
169 personal_data_manager_->RemoveObserver(this); | 169 personal_data_manager_->RemoveObserver(this); |
170 } | 170 } |
171 | 171 |
172 jint PersonalDataManagerAndroid::GetProfileCount(JNIEnv* unused_env, | 172 jint PersonalDataManagerAndroid::GetProfileCount( |
173 jobject unused_obj) { | 173 JNIEnv* unused_env, |
| 174 const JavaParamRef<jobject>& unused_obj) { |
174 return personal_data_manager_->GetProfiles().size(); | 175 return personal_data_manager_->GetProfiles().size(); |
175 } | 176 } |
176 | 177 |
177 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetProfileByIndex( | 178 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetProfileByIndex( |
178 JNIEnv* env, | 179 JNIEnv* env, |
179 jobject unused_obj, | 180 const JavaParamRef<jobject>& unused_obj, |
180 jint index) { | 181 jint index) { |
181 const std::vector<AutofillProfile*>& profiles = | 182 const std::vector<AutofillProfile*>& profiles = |
182 personal_data_manager_->GetProfiles(); | 183 personal_data_manager_->GetProfiles(); |
183 size_t index_size_t = static_cast<size_t>(index); | 184 size_t index_size_t = static_cast<size_t>(index); |
184 DCHECK_LT(index_size_t, profiles.size()); | 185 DCHECK_LT(index_size_t, profiles.size()); |
185 return CreateJavaProfileFromNative(env, *profiles[index_size_t]); | 186 return CreateJavaProfileFromNative(env, *profiles[index_size_t]); |
186 } | 187 } |
187 | 188 |
188 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetProfileByGUID( | 189 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetProfileByGUID( |
189 JNIEnv* env, | 190 JNIEnv* env, |
190 jobject unused_obj, | 191 const JavaParamRef<jobject>& unused_obj, |
191 jstring jguid) { | 192 const JavaParamRef<jstring>& jguid) { |
192 AutofillProfile* profile = personal_data_manager_->GetProfileByGUID( | 193 AutofillProfile* profile = personal_data_manager_->GetProfileByGUID( |
193 ConvertJavaStringToUTF8(env, jguid)); | 194 ConvertJavaStringToUTF8(env, jguid)); |
194 if (!profile) | 195 if (!profile) |
195 return ScopedJavaLocalRef<jobject>(); | 196 return ScopedJavaLocalRef<jobject>(); |
196 | 197 |
197 return CreateJavaProfileFromNative(env, *profile); | 198 return CreateJavaProfileFromNative(env, *profile); |
198 } | 199 } |
199 | 200 |
200 ScopedJavaLocalRef<jstring> PersonalDataManagerAndroid::SetProfile( | 201 ScopedJavaLocalRef<jstring> PersonalDataManagerAndroid::SetProfile( |
201 JNIEnv* env, | 202 JNIEnv* env, |
202 jobject unused_obj, | 203 const JavaParamRef<jobject>& unused_obj, |
203 jobject jprofile) { | 204 const JavaParamRef<jobject>& jprofile) { |
204 std::string guid = ConvertJavaStringToUTF8( | 205 std::string guid = ConvertJavaStringToUTF8( |
205 env, | 206 env, |
206 Java_AutofillProfile_getGUID(env, jprofile).obj()); | 207 Java_AutofillProfile_getGUID(env, jprofile).obj()); |
207 | 208 |
208 AutofillProfile profile; | 209 AutofillProfile profile; |
209 PopulateNativeProfileFromJava(jprofile, env, &profile); | 210 PopulateNativeProfileFromJava(jprofile, env, &profile); |
210 | 211 |
211 if (guid.empty()) { | 212 if (guid.empty()) { |
212 personal_data_manager_->AddProfile(profile); | 213 personal_data_manager_->AddProfile(profile); |
213 } else { | 214 } else { |
214 profile.set_guid(guid); | 215 profile.set_guid(guid); |
215 personal_data_manager_->UpdateProfile(profile); | 216 personal_data_manager_->UpdateProfile(profile); |
216 } | 217 } |
217 | 218 |
218 return ConvertUTF8ToJavaString(env, profile.guid()); | 219 return ConvertUTF8ToJavaString(env, profile.guid()); |
219 } | 220 } |
220 | 221 |
221 ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetProfileLabels( | 222 ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetProfileLabels( |
222 JNIEnv* env, | 223 JNIEnv* env, |
223 jobject unused_obj) { | 224 const JavaParamRef<jobject>& unused_obj) { |
224 std::vector<base::string16> labels; | 225 std::vector<base::string16> labels; |
225 AutofillProfile::CreateInferredLabels( | 226 AutofillProfile::CreateInferredLabels( |
226 personal_data_manager_->GetProfiles(), NULL, NAME_FULL, 2, | 227 personal_data_manager_->GetProfiles(), NULL, NAME_FULL, 2, |
227 g_browser_process->GetApplicationLocale(), &labels); | 228 g_browser_process->GetApplicationLocale(), &labels); |
228 | 229 |
229 return base::android::ToJavaArrayOfStrings(env, labels); | 230 return base::android::ToJavaArrayOfStrings(env, labels); |
230 } | 231 } |
231 | 232 |
232 jint PersonalDataManagerAndroid::GetCreditCardCount(JNIEnv* unused_env, | 233 jint PersonalDataManagerAndroid::GetCreditCardCount( |
233 jobject unused_obj) { | 234 JNIEnv* unused_env, |
| 235 const JavaParamRef<jobject>& unused_obj) { |
234 return personal_data_manager_->GetCreditCards().size(); | 236 return personal_data_manager_->GetCreditCards().size(); |
235 } | 237 } |
236 | 238 |
237 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetCreditCardByIndex( | 239 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetCreditCardByIndex( |
238 JNIEnv* env, | 240 JNIEnv* env, |
239 jobject unused_obj, | 241 const JavaParamRef<jobject>& unused_obj, |
240 jint index) { | 242 jint index) { |
241 const std::vector<CreditCard*>& credit_cards = | 243 const std::vector<CreditCard*>& credit_cards = |
242 personal_data_manager_->GetCreditCards(); | 244 personal_data_manager_->GetCreditCards(); |
243 size_t index_size_t = static_cast<size_t>(index); | 245 size_t index_size_t = static_cast<size_t>(index); |
244 DCHECK_LT(index_size_t, credit_cards.size()); | 246 DCHECK_LT(index_size_t, credit_cards.size()); |
245 return CreateJavaCreditCardFromNative(env, *credit_cards[index_size_t]); | 247 return CreateJavaCreditCardFromNative(env, *credit_cards[index_size_t]); |
246 } | 248 } |
247 | 249 |
248 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetCreditCardByGUID( | 250 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetCreditCardByGUID( |
249 JNIEnv* env, | 251 JNIEnv* env, |
250 jobject unused_obj, | 252 const JavaParamRef<jobject>& unused_obj, |
251 jstring jguid) { | 253 const JavaParamRef<jstring>& jguid) { |
252 CreditCard* card = personal_data_manager_->GetCreditCardByGUID( | 254 CreditCard* card = personal_data_manager_->GetCreditCardByGUID( |
253 ConvertJavaStringToUTF8(env, jguid)); | 255 ConvertJavaStringToUTF8(env, jguid)); |
254 if (!card) | 256 if (!card) |
255 return ScopedJavaLocalRef<jobject>(); | 257 return ScopedJavaLocalRef<jobject>(); |
256 | 258 |
257 return CreateJavaCreditCardFromNative(env, *card); | 259 return CreateJavaCreditCardFromNative(env, *card); |
258 } | 260 } |
259 | 261 |
260 ScopedJavaLocalRef<jstring> PersonalDataManagerAndroid::SetCreditCard( | 262 ScopedJavaLocalRef<jstring> PersonalDataManagerAndroid::SetCreditCard( |
261 JNIEnv* env, | 263 JNIEnv* env, |
262 jobject unused_obj, | 264 const JavaParamRef<jobject>& unused_obj, |
263 jobject jcard) { | 265 const JavaParamRef<jobject>& jcard) { |
264 std::string guid = ConvertJavaStringToUTF8( | 266 std::string guid = ConvertJavaStringToUTF8( |
265 env, | 267 env, |
266 Java_CreditCard_getGUID(env, jcard).obj()); | 268 Java_CreditCard_getGUID(env, jcard).obj()); |
267 | 269 |
268 CreditCard card; | 270 CreditCard card; |
269 PopulateNativeCreditCardFromJava(jcard, env, &card); | 271 PopulateNativeCreditCardFromJava(jcard, env, &card); |
270 | 272 |
271 if (guid.empty()) { | 273 if (guid.empty()) { |
272 personal_data_manager_->AddCreditCard(card); | 274 personal_data_manager_->AddCreditCard(card); |
273 } else { | 275 } else { |
274 card.set_guid(guid); | 276 card.set_guid(guid); |
275 personal_data_manager_->UpdateCreditCard(card); | 277 personal_data_manager_->UpdateCreditCard(card); |
276 } | 278 } |
277 return ConvertUTF8ToJavaString(env, card.guid()); | 279 return ConvertUTF8ToJavaString(env, card.guid()); |
278 } | 280 } |
279 | 281 |
280 void PersonalDataManagerAndroid::RemoveByGUID(JNIEnv* env, | 282 void PersonalDataManagerAndroid::RemoveByGUID( |
281 jobject unused_obj, | 283 JNIEnv* env, |
282 jstring jguid) { | 284 const JavaParamRef<jobject>& unused_obj, |
| 285 const JavaParamRef<jstring>& jguid) { |
283 personal_data_manager_->RemoveByGUID(ConvertJavaStringToUTF8(env, jguid)); | 286 personal_data_manager_->RemoveByGUID(ConvertJavaStringToUTF8(env, jguid)); |
284 } | 287 } |
285 | 288 |
286 void PersonalDataManagerAndroid::ClearUnmaskedCache(JNIEnv* env, | 289 void PersonalDataManagerAndroid::ClearUnmaskedCache( |
287 jobject unused_obj, | 290 JNIEnv* env, |
288 jstring guid) { | 291 const JavaParamRef<jobject>& unused_obj, |
| 292 const JavaParamRef<jstring>& guid) { |
289 personal_data_manager_->ResetFullServerCard( | 293 personal_data_manager_->ResetFullServerCard( |
290 ConvertJavaStringToUTF8(env, guid)); | 294 ConvertJavaStringToUTF8(env, guid)); |
291 } | 295 } |
292 | 296 |
293 void PersonalDataManagerAndroid::OnPersonalDataChanged() { | 297 void PersonalDataManagerAndroid::OnPersonalDataChanged() { |
294 JNIEnv* env = base::android::AttachCurrentThread(); | 298 JNIEnv* env = base::android::AttachCurrentThread(); |
295 if (weak_java_obj_.get(env).is_null()) | 299 if (weak_java_obj_.get(env).is_null()) |
296 return; | 300 return; |
297 | 301 |
298 Java_PersonalDataManager_personalDataChanged(env, | 302 Java_PersonalDataManager_personalDataChanged(env, |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
355 g_browser_process->GetApplicationLocale())); | 359 g_browser_process->GetApplicationLocale())); |
356 } | 360 } |
357 | 361 |
358 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { | 362 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { |
359 PersonalDataManagerAndroid* personal_data_manager_android = | 363 PersonalDataManagerAndroid* personal_data_manager_android = |
360 new PersonalDataManagerAndroid(env, obj); | 364 new PersonalDataManagerAndroid(env, obj); |
361 return reinterpret_cast<intptr_t>(personal_data_manager_android); | 365 return reinterpret_cast<intptr_t>(personal_data_manager_android); |
362 } | 366 } |
363 | 367 |
364 } // namespace autofill | 368 } // namespace autofill |
OLD | NEW |