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 jint PersonalDataManagerAndroid::GetProfileCount( |
|
Mathieu
2016/05/20 13:57:08
Looks like this function can be removed?
If not,
sebsg
2016/05/24 17:27:32
Done.
| |
| 291 JNIEnv* unused_env, | 293 JNIEnv* unused_env, |
| 292 const JavaParamRef<jobject>& unused_obj) { | 294 const JavaParamRef<jobject>& unused_obj) { |
| 293 return personal_data_manager_->GetProfiles().size(); | 295 return personal_data_manager_->GetProfilesToSuggest().size(); |
| 294 } | 296 } |
| 295 | 297 |
| 296 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetProfileByIndex( | 298 ScopedJavaLocalRef<jobjectArray> |
| 299 PersonalDataManagerAndroid::GetProfileGUIDsToSuggest( | |
| 297 JNIEnv* env, | 300 JNIEnv* env, |
| 298 const JavaParamRef<jobject>& unused_obj, | 301 const JavaParamRef<jobject>& unused_obj) { |
| 299 jint index) { | 302 std::vector<AutofillProfile*> profiles = |
| 300 const std::vector<AutofillProfile*>& profiles = | 303 personal_data_manager_->GetProfilesToSuggest(); |
| 301 personal_data_manager_->GetProfiles(); | 304 |
| 302 size_t index_size_t = static_cast<size_t>(index); | 305 std::vector<base::string16> guids; |
| 303 DCHECK_LT(index_size_t, profiles.size()); | 306 |
| 304 return CreateJavaProfileFromNative(env, *profiles[index_size_t]); | 307 for (AutofillProfile* profile : profiles) { |
|
Mathieu
2016/05/20 13:57:08
nit: no need for braces here and below
sebsg
2016/05/24 17:27:32
Done.
| |
| 308 guids.push_back(base::UTF8ToUTF16(profile->guid())); | |
| 309 } | |
| 310 | |
| 311 return base::android::ToJavaArrayOfStrings(env, guids); | |
| 305 } | 312 } |
| 306 | 313 |
| 307 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetProfileByGUID( | 314 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetProfileByGUID( |
| 308 JNIEnv* env, | 315 JNIEnv* env, |
| 309 const JavaParamRef<jobject>& unused_obj, | 316 const JavaParamRef<jobject>& unused_obj, |
| 310 const JavaParamRef<jstring>& jguid) { | 317 const JavaParamRef<jstring>& jguid) { |
| 311 AutofillProfile* profile = personal_data_manager_->GetProfileByGUID( | 318 AutofillProfile* profile = personal_data_manager_->GetProfileByGUID( |
| 312 ConvertJavaStringToUTF8(env, jguid)); | 319 ConvertJavaStringToUTF8(env, jguid)); |
| 313 if (!profile) | 320 if (!profile) |
| 314 return ScopedJavaLocalRef<jobject>(); | 321 return ScopedJavaLocalRef<jobject>(); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 352 suggested_fields->push_back(ADDRESS_HOME_CITY); | 359 suggested_fields->push_back(ADDRESS_HOME_CITY); |
| 353 suggested_fields->push_back(ADDRESS_HOME_STATE); | 360 suggested_fields->push_back(ADDRESS_HOME_STATE); |
| 354 suggested_fields->push_back(ADDRESS_HOME_ZIP); | 361 suggested_fields->push_back(ADDRESS_HOME_ZIP); |
| 355 suggested_fields->push_back(ADDRESS_HOME_SORTING_CODE); | 362 suggested_fields->push_back(ADDRESS_HOME_SORTING_CODE); |
| 356 suggested_fields->push_back(ADDRESS_HOME_COUNTRY); | 363 suggested_fields->push_back(ADDRESS_HOME_COUNTRY); |
| 357 minimal_fields_shown = suggested_fields->size(); | 364 minimal_fields_shown = suggested_fields->size(); |
| 358 } | 365 } |
| 359 | 366 |
| 360 std::vector<base::string16> labels; | 367 std::vector<base::string16> labels; |
| 361 AutofillProfile::CreateInferredLabels( | 368 AutofillProfile::CreateInferredLabels( |
| 362 personal_data_manager_->GetProfiles(), suggested_fields.get(), NAME_FULL, | 369 personal_data_manager_->GetProfilesToSuggest(), suggested_fields.get(), |
| 363 minimal_fields_shown, g_browser_process->GetApplicationLocale(), &labels); | 370 NAME_FULL, minimal_fields_shown, |
| 371 g_browser_process->GetApplicationLocale(), &labels); | |
| 364 | 372 |
| 365 return base::android::ToJavaArrayOfStrings(env, labels); | 373 return base::android::ToJavaArrayOfStrings(env, labels); |
| 366 } | 374 } |
| 367 | 375 |
| 368 jint PersonalDataManagerAndroid::GetCreditCardCount( | 376 jint PersonalDataManagerAndroid::GetCreditCardCount( |
| 369 JNIEnv* unused_env, | 377 JNIEnv* unused_env, |
| 370 const JavaParamRef<jobject>& unused_obj) { | 378 const JavaParamRef<jobject>& unused_obj) { |
| 371 return personal_data_manager_->GetCreditCards().size(); | 379 return personal_data_manager_->GetCreditCardsToSuggest().size(); |
| 372 } | 380 } |
| 373 | 381 |
| 374 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetCreditCardByIndex( | 382 base::android::ScopedJavaLocalRef<jobjectArray> |
| 383 PersonalDataManagerAndroid::GetCreditCardGUIDsToSuggest( | |
| 375 JNIEnv* env, | 384 JNIEnv* env, |
| 376 const JavaParamRef<jobject>& unused_obj, | 385 const base::android::JavaParamRef<jobject>& unused_ob) { |
| 377 jint index) { | 386 std::vector<CreditCard*> credit_cards = |
| 378 const std::vector<CreditCard*>& credit_cards = | 387 personal_data_manager_->GetCreditCardsToSuggest(); |
| 379 personal_data_manager_->GetCreditCards(); | 388 |
| 380 size_t index_size_t = static_cast<size_t>(index); | 389 std::vector<base::string16> guids; |
| 381 DCHECK_LT(index_size_t, credit_cards.size()); | 390 for (CreditCard* credit_card : credit_cards) { |
| 382 return CreateJavaCreditCardFromNative(env, *credit_cards[index_size_t]); | 391 guids.push_back(base::UTF8ToUTF16(credit_card->guid())); |
| 392 } | |
| 393 | |
| 394 return base::android::ToJavaArrayOfStrings(env, guids); | |
| 383 } | 395 } |
| 384 | 396 |
| 385 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetCreditCardByGUID( | 397 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetCreditCardByGUID( |
| 386 JNIEnv* env, | 398 JNIEnv* env, |
| 387 const JavaParamRef<jobject>& unused_obj, | 399 const JavaParamRef<jobject>& unused_obj, |
| 388 const JavaParamRef<jstring>& jguid) { | 400 const JavaParamRef<jstring>& jguid) { |
| 389 CreditCard* card = personal_data_manager_->GetCreditCardByGUID( | 401 CreditCard* card = personal_data_manager_->GetCreditCardByGUID( |
| 390 ConvertJavaStringToUTF8(env, jguid)); | 402 ConvertJavaStringToUTF8(env, jguid)); |
| 391 if (!card) | 403 if (!card) |
| 392 return ScopedJavaLocalRef<jobject>(); | 404 return ScopedJavaLocalRef<jobject>(); |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 449 | 461 |
| 450 Java_PersonalDataManager_personalDataChanged(env, | 462 Java_PersonalDataManager_personalDataChanged(env, |
| 451 weak_java_obj_.get(env).obj()); | 463 weak_java_obj_.get(env).obj()); |
| 452 } | 464 } |
| 453 | 465 |
| 454 // static | 466 // static |
| 455 bool PersonalDataManagerAndroid::Register(JNIEnv* env) { | 467 bool PersonalDataManagerAndroid::Register(JNIEnv* env) { |
| 456 return RegisterNativesImpl(env); | 468 return RegisterNativesImpl(env); |
| 457 } | 469 } |
| 458 | 470 |
| 471 void PersonalDataManagerAndroid::SetProfileUseStatsForTest( | |
| 472 JNIEnv* env, | |
| 473 const JavaParamRef<jobject>& unused_obj, | |
| 474 const JavaParamRef<jstring>& jguid, | |
| 475 jint count, | |
| 476 jint date) { | |
| 477 AutofillProfile* profile = personal_data_manager_->GetProfileByGUID( | |
| 478 ConvertJavaStringToUTF8(env, jguid)); | |
| 479 if (!profile) | |
| 480 return; | |
| 481 | |
| 482 size_t count_size_t = static_cast<size_t>(count); | |
| 483 profile->set_use_count(count_size_t); | |
| 484 | |
| 485 profile->set_use_date(base::Time::FromTimeT(date)); | |
| 486 } | |
| 487 | |
| 488 void PersonalDataManagerAndroid::SetCreditCardUseStatsForTest( | |
| 489 JNIEnv* env, | |
| 490 const JavaParamRef<jobject>& unused_obj, | |
| 491 const JavaParamRef<jstring>& jguid, | |
| 492 jint count, | |
| 493 jint date) { | |
| 494 CreditCard* card = personal_data_manager_->GetCreditCardByGUID( | |
| 495 ConvertJavaStringToUTF8(env, jguid)); | |
| 496 if (!card) | |
| 497 return; | |
| 498 | |
| 499 size_t count_size_t = static_cast<size_t>(count); | |
| 500 card->set_use_count(count_size_t); | |
| 501 | |
| 502 card->set_use_date(base::Time::FromTimeT(date)); | |
| 503 } | |
| 504 | |
| 459 // Returns whether the Autofill feature is enabled. | 505 // Returns whether the Autofill feature is enabled. |
| 460 static jboolean IsAutofillEnabled(JNIEnv* env, | 506 static jboolean IsAutofillEnabled(JNIEnv* env, |
| 461 const JavaParamRef<jclass>& clazz) { | 507 const JavaParamRef<jclass>& clazz) { |
| 462 return GetPrefs()->GetBoolean(autofill::prefs::kAutofillEnabled); | 508 return GetPrefs()->GetBoolean(autofill::prefs::kAutofillEnabled); |
| 463 } | 509 } |
| 464 | 510 |
| 465 // Enables or disables the Autofill feature. | 511 // Enables or disables the Autofill feature. |
| 466 static void SetAutofillEnabled(JNIEnv* env, | 512 static void SetAutofillEnabled(JNIEnv* env, |
| 467 const JavaParamRef<jclass>& clazz, | 513 const JavaParamRef<jclass>& clazz, |
| 468 jboolean enable) { | 514 jboolean enable) { |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 500 base::android::ConvertJavaStringToUTF16(env, jcountry_name))); | 546 base::android::ConvertJavaStringToUTF16(env, jcountry_name))); |
| 501 } | 547 } |
| 502 | 548 |
| 503 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { | 549 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { |
| 504 PersonalDataManagerAndroid* personal_data_manager_android = | 550 PersonalDataManagerAndroid* personal_data_manager_android = |
| 505 new PersonalDataManagerAndroid(env, obj); | 551 new PersonalDataManagerAndroid(env, obj); |
| 506 return reinterpret_cast<intptr_t>(personal_data_manager_android); | 552 return reinterpret_cast<intptr_t>(personal_data_manager_android); |
| 507 } | 553 } |
| 508 | 554 |
| 509 } // namespace autofill | 555 } // namespace autofill |
| OLD | NEW |