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 <stddef.h> | 7 #include <stddef.h> |
8 #include <algorithm> | |
8 #include <memory> | 9 #include <memory> |
9 | 10 |
10 #include "base/android/jni_array.h" | 11 #include "base/android/jni_array.h" |
11 #include "base/android/jni_string.h" | 12 #include "base/android/jni_string.h" |
12 #include "base/command_line.h" | 13 #include "base/command_line.h" |
13 #include "base/format_macros.h" | 14 #include "base/format_macros.h" |
14 #include "base/memory/weak_ptr.h" | 15 #include "base/memory/weak_ptr.h" |
15 #include "base/strings/stringprintf.h" | 16 #include "base/strings/stringprintf.h" |
16 #include "base/strings/utf_string_conversions.h" | 17 #include "base/strings/utf_string_conversions.h" |
18 #include "base/time/time.h" | |
17 #include "chrome/browser/android/resource_mapper.h" | 19 #include "chrome/browser/android/resource_mapper.h" |
18 #include "chrome/browser/autofill/personal_data_manager_factory.h" | 20 #include "chrome/browser/autofill/personal_data_manager_factory.h" |
19 #include "chrome/browser/browser_process.h" | 21 #include "chrome/browser/browser_process.h" |
20 #include "chrome/browser/profiles/profile.h" | 22 #include "chrome/browser/profiles/profile.h" |
21 #include "chrome/browser/profiles/profile_manager.h" | 23 #include "chrome/browser/profiles/profile_manager.h" |
22 #include "chrome/common/pref_names.h" | 24 #include "chrome/common/pref_names.h" |
23 #include "components/autofill/content/browser/content_autofill_driver.h" | 25 #include "components/autofill/content/browser/content_autofill_driver.h" |
24 #include "components/autofill/content/browser/content_autofill_driver_factory.h" | 26 #include "components/autofill/content/browser/content_autofill_driver_factory.h" |
25 #include "components/autofill/core/browser/autofill_country.h" | 27 #include "components/autofill/core/browser/autofill_country.h" |
26 #include "components/autofill/core/browser/autofill_type.h" | 28 #include "components/autofill/core/browser/autofill_type.h" |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
280 : weak_java_obj_(env, obj), | 282 : weak_java_obj_(env, obj), |
281 personal_data_manager_(PersonalDataManagerFactory::GetForProfile( | 283 personal_data_manager_(PersonalDataManagerFactory::GetForProfile( |
282 ProfileManager::GetActiveUserProfile())) { | 284 ProfileManager::GetActiveUserProfile())) { |
283 personal_data_manager_->AddObserver(this); | 285 personal_data_manager_->AddObserver(this); |
284 } | 286 } |
285 | 287 |
286 PersonalDataManagerAndroid::~PersonalDataManagerAndroid() { | 288 PersonalDataManagerAndroid::~PersonalDataManagerAndroid() { |
287 personal_data_manager_->RemoveObserver(this); | 289 personal_data_manager_->RemoveObserver(this); |
288 } | 290 } |
289 | 291 |
290 jint PersonalDataManagerAndroid::GetProfileCount( | 292 ScopedJavaLocalRef<jobjectArray> |
291 JNIEnv* unused_env, | 293 PersonalDataManagerAndroid::GetProfileGUIDsToSuggest( |
294 JNIEnv* env, | |
292 const JavaParamRef<jobject>& unused_obj) { | 295 const JavaParamRef<jobject>& unused_obj) { |
293 return personal_data_manager_->GetProfiles().size(); | 296 std::vector<AutofillProfile*> profiles = |
294 } | 297 personal_data_manager_->GetProfilesToSuggest(); |
295 | 298 |
296 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetProfileByIndex( | 299 std::vector<base::string16> guids; |
297 JNIEnv* env, | 300 |
298 const JavaParamRef<jobject>& unused_obj, | 301 for (AutofillProfile* profile : profiles) |
299 jint index) { | 302 guids.push_back(base::UTF8ToUTF16(profile->guid())); |
300 const std::vector<AutofillProfile*>& profiles = | 303 |
301 personal_data_manager_->GetProfiles(); | 304 return base::android::ToJavaArrayOfStrings(env, guids); |
302 size_t index_size_t = static_cast<size_t>(index); | |
303 DCHECK_LT(index_size_t, profiles.size()); | |
304 return CreateJavaProfileFromNative(env, *profiles[index_size_t]); | |
305 } | 305 } |
306 | 306 |
307 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetProfileByGUID( | 307 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetProfileByGUID( |
308 JNIEnv* env, | 308 JNIEnv* env, |
309 const JavaParamRef<jobject>& unused_obj, | 309 const JavaParamRef<jobject>& unused_obj, |
310 const JavaParamRef<jstring>& jguid) { | 310 const JavaParamRef<jstring>& jguid) { |
311 AutofillProfile* profile = personal_data_manager_->GetProfileByGUID( | 311 AutofillProfile* profile = personal_data_manager_->GetProfileByGUID( |
312 ConvertJavaStringToUTF8(env, jguid)); | 312 ConvertJavaStringToUTF8(env, jguid)); |
313 if (!profile) | 313 if (!profile) |
314 return ScopedJavaLocalRef<jobject>(); | 314 return ScopedJavaLocalRef<jobject>(); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
352 suggested_fields->push_back(ADDRESS_HOME_CITY); | 352 suggested_fields->push_back(ADDRESS_HOME_CITY); |
353 suggested_fields->push_back(ADDRESS_HOME_STATE); | 353 suggested_fields->push_back(ADDRESS_HOME_STATE); |
354 suggested_fields->push_back(ADDRESS_HOME_ZIP); | 354 suggested_fields->push_back(ADDRESS_HOME_ZIP); |
355 suggested_fields->push_back(ADDRESS_HOME_SORTING_CODE); | 355 suggested_fields->push_back(ADDRESS_HOME_SORTING_CODE); |
356 suggested_fields->push_back(ADDRESS_HOME_COUNTRY); | 356 suggested_fields->push_back(ADDRESS_HOME_COUNTRY); |
357 minimal_fields_shown = suggested_fields->size(); | 357 minimal_fields_shown = suggested_fields->size(); |
358 } | 358 } |
359 | 359 |
360 std::vector<base::string16> labels; | 360 std::vector<base::string16> labels; |
361 AutofillProfile::CreateInferredLabels( | 361 AutofillProfile::CreateInferredLabels( |
362 personal_data_manager_->GetProfiles(), suggested_fields.get(), NAME_FULL, | 362 personal_data_manager_->GetProfilesToSuggest(), suggested_fields.get(), |
363 minimal_fields_shown, g_browser_process->GetApplicationLocale(), &labels); | 363 NAME_FULL, minimal_fields_shown, |
364 g_browser_process->GetApplicationLocale(), &labels); | |
364 | 365 |
365 return base::android::ToJavaArrayOfStrings(env, labels); | 366 return base::android::ToJavaArrayOfStrings(env, labels); |
366 } | 367 } |
367 | 368 |
368 jint PersonalDataManagerAndroid::GetCreditCardCount( | 369 base::android::ScopedJavaLocalRef<jobjectArray> |
369 JNIEnv* unused_env, | 370 PersonalDataManagerAndroid::GetCreditCardGUIDsToSuggest( |
370 const JavaParamRef<jobject>& unused_obj) { | 371 JNIEnv* env, |
371 return personal_data_manager_->GetCreditCards().size(); | 372 const base::android::JavaParamRef<jobject>& unused_ob) { |
372 } | 373 std::vector<CreditCard*> credit_cards = |
374 personal_data_manager_->GetCreditCardsToSuggest(); | |
373 | 375 |
374 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetCreditCardByIndex( | 376 std::vector<base::string16> guids; |
375 JNIEnv* env, | 377 for (CreditCard* credit_card : credit_cards) |
376 const JavaParamRef<jobject>& unused_obj, | 378 guids.push_back(base::UTF8ToUTF16(credit_card->guid())); |
377 jint index) { | 379 |
378 const std::vector<CreditCard*>& credit_cards = | 380 return base::android::ToJavaArrayOfStrings(env, guids); |
379 personal_data_manager_->GetCreditCards(); | |
380 size_t index_size_t = static_cast<size_t>(index); | |
381 DCHECK_LT(index_size_t, credit_cards.size()); | |
382 return CreateJavaCreditCardFromNative(env, *credit_cards[index_size_t]); | |
383 } | 381 } |
384 | 382 |
385 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetCreditCardByGUID( | 383 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetCreditCardByGUID( |
386 JNIEnv* env, | 384 JNIEnv* env, |
387 const JavaParamRef<jobject>& unused_obj, | 385 const JavaParamRef<jobject>& unused_obj, |
388 const JavaParamRef<jstring>& jguid) { | 386 const JavaParamRef<jstring>& jguid) { |
389 CreditCard* card = personal_data_manager_->GetCreditCardByGUID( | 387 CreditCard* card = personal_data_manager_->GetCreditCardByGUID( |
390 ConvertJavaStringToUTF8(env, jguid)); | 388 ConvertJavaStringToUTF8(env, jguid)); |
391 if (!card) | 389 if (!card) |
392 return ScopedJavaLocalRef<jobject>(); | 390 return ScopedJavaLocalRef<jobject>(); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
449 | 447 |
450 Java_PersonalDataManager_personalDataChanged(env, | 448 Java_PersonalDataManager_personalDataChanged(env, |
451 weak_java_obj_.get(env).obj()); | 449 weak_java_obj_.get(env).obj()); |
452 } | 450 } |
453 | 451 |
454 // static | 452 // static |
455 bool PersonalDataManagerAndroid::Register(JNIEnv* env) { | 453 bool PersonalDataManagerAndroid::Register(JNIEnv* env) { |
456 return RegisterNativesImpl(env); | 454 return RegisterNativesImpl(env); |
457 } | 455 } |
458 | 456 |
457 void PersonalDataManagerAndroid::SetProfileUseStatsForTest( | |
458 JNIEnv* env, | |
459 const JavaParamRef<jobject>& unused_obj, | |
460 const JavaParamRef<jstring>& jguid, | |
461 jint count, | |
462 jint date) { | |
463 AutofillProfile* profile = personal_data_manager_->GetProfileByGUID( | |
464 ConvertJavaStringToUTF8(env, jguid)); | |
465 if (!profile) | |
466 return; | |
467 | |
468 size_t count_size_t = static_cast<size_t>(count); | |
please use gerrit instead
2016/05/24 20:21:48
You use this variable only once, so it's OK to inl
sebsg
2016/05/24 21:41:22
Done.
| |
469 profile->set_use_count(count_size_t); | |
470 | |
471 profile->set_use_date(base::Time::FromTimeT(date)); | |
472 } | |
473 | |
474 void PersonalDataManagerAndroid::SetCreditCardUseStatsForTest( | |
475 JNIEnv* env, | |
476 const JavaParamRef<jobject>& unused_obj, | |
477 const JavaParamRef<jstring>& jguid, | |
478 jint count, | |
479 jint date) { | |
480 CreditCard* card = personal_data_manager_->GetCreditCardByGUID( | |
481 ConvertJavaStringToUTF8(env, jguid)); | |
482 if (!card) | |
483 return; | |
484 | |
485 size_t count_size_t = static_cast<size_t>(count); | |
please use gerrit instead
2016/05/24 20:21:48
Inline
sebsg
2016/05/24 21:41:22
Done.
| |
486 card->set_use_count(count_size_t); | |
487 | |
488 card->set_use_date(base::Time::FromTimeT(date)); | |
489 } | |
490 | |
459 // Returns whether the Autofill feature is enabled. | 491 // Returns whether the Autofill feature is enabled. |
460 static jboolean IsAutofillEnabled(JNIEnv* env, | 492 static jboolean IsAutofillEnabled(JNIEnv* env, |
461 const JavaParamRef<jclass>& clazz) { | 493 const JavaParamRef<jclass>& clazz) { |
462 return GetPrefs()->GetBoolean(autofill::prefs::kAutofillEnabled); | 494 return GetPrefs()->GetBoolean(autofill::prefs::kAutofillEnabled); |
463 } | 495 } |
464 | 496 |
465 // Enables or disables the Autofill feature. | 497 // Enables or disables the Autofill feature. |
466 static void SetAutofillEnabled(JNIEnv* env, | 498 static void SetAutofillEnabled(JNIEnv* env, |
467 const JavaParamRef<jclass>& clazz, | 499 const JavaParamRef<jclass>& clazz, |
468 jboolean enable) { | 500 jboolean enable) { |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
500 base::android::ConvertJavaStringToUTF16(env, jcountry_name))); | 532 base::android::ConvertJavaStringToUTF16(env, jcountry_name))); |
501 } | 533 } |
502 | 534 |
503 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { | 535 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { |
504 PersonalDataManagerAndroid* personal_data_manager_android = | 536 PersonalDataManagerAndroid* personal_data_manager_android = |
505 new PersonalDataManagerAndroid(env, obj); | 537 new PersonalDataManagerAndroid(env, obj); |
506 return reinterpret_cast<intptr_t>(personal_data_manager_android); | 538 return reinterpret_cast<intptr_t>(personal_data_manager_android); |
507 } | 539 } |
508 | 540 |
509 } // namespace autofill | 541 } // namespace autofill |
OLD | NEW |