Chromium Code Reviews| 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 |