| Index: chrome/browser/autofill/android/personal_data_manager_android.cc
|
| diff --git a/chrome/browser/autofill/android/personal_data_manager_android.cc b/chrome/browser/autofill/android/personal_data_manager_android.cc
|
| index 18b04d514937cee939ba580c0cc794dd21392320..a0b2e84aa7bac6914749013481389f434d419e1a 100644
|
| --- a/chrome/browser/autofill/android/personal_data_manager_android.cc
|
| +++ b/chrome/browser/autofill/android/personal_data_manager_android.cc
|
| @@ -5,6 +5,7 @@
|
| #include "chrome/browser/autofill/android/personal_data_manager_android.h"
|
|
|
| #include <stddef.h>
|
| +#include <algorithm>
|
| #include <memory>
|
| #include <utility>
|
|
|
| @@ -15,6 +16,7 @@
|
| #include "base/memory/weak_ptr.h"
|
| #include "base/strings/stringprintf.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| +#include "base/time/time.h"
|
| #include "chrome/browser/android/resource_mapper.h"
|
| #include "chrome/browser/autofill/personal_data_manager_factory.h"
|
| #include "chrome/browser/browser_process.h"
|
| @@ -288,21 +290,18 @@
|
| personal_data_manager_->RemoveObserver(this);
|
| }
|
|
|
| -jint PersonalDataManagerAndroid::GetProfileCount(
|
| - JNIEnv* unused_env,
|
| +ScopedJavaLocalRef<jobjectArray>
|
| +PersonalDataManagerAndroid::GetProfileGUIDsForSettings(
|
| + JNIEnv* env,
|
| const JavaParamRef<jobject>& unused_obj) {
|
| - return personal_data_manager_->GetProfiles().size();
|
| -}
|
| -
|
| -ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetProfileByIndex(
|
| - JNIEnv* env,
|
| - const JavaParamRef<jobject>& unused_obj,
|
| - jint index) {
|
| - const std::vector<AutofillProfile*>& profiles =
|
| - personal_data_manager_->GetProfiles();
|
| - size_t index_size_t = static_cast<size_t>(index);
|
| - DCHECK_LT(index_size_t, profiles.size());
|
| - return CreateJavaProfileFromNative(env, *profiles[index_size_t]);
|
| + return GetProfileGUIDs(env, personal_data_manager_->GetProfiles());
|
| +}
|
| +
|
| +ScopedJavaLocalRef<jobjectArray>
|
| +PersonalDataManagerAndroid::GetProfileGUIDsToSuggest(
|
| + JNIEnv* env,
|
| + const JavaParamRef<jobject>& unused_obj) {
|
| + return GetProfileGUIDs(env, personal_data_manager_->GetProfilesToSuggest());
|
| }
|
|
|
| ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetProfileByGUID(
|
| @@ -338,10 +337,178 @@
|
| return ConvertUTF8ToJavaString(env, profile.guid());
|
| }
|
|
|
| +ScopedJavaLocalRef<jobjectArray>
|
| +PersonalDataManagerAndroid::GetProfileLabelsForSettings(
|
| + JNIEnv* env,
|
| + const JavaParamRef<jobject>& unused_obj) {
|
| + return GetProfileLabels(env, false, personal_data_manager_->GetProfiles());
|
| +}
|
| +
|
| +ScopedJavaLocalRef<jobjectArray>
|
| +PersonalDataManagerAndroid::GetProfileLabelsToSuggest(
|
| + JNIEnv* env,
|
| + const JavaParamRef<jobject>& unused_obj) {
|
| + return GetProfileLabels(env, true,
|
| + personal_data_manager_->GetProfilesToSuggest());
|
| +}
|
| +
|
| +base::android::ScopedJavaLocalRef<jobjectArray>
|
| +PersonalDataManagerAndroid::GetCreditCardGUIDsForSettings(
|
| + JNIEnv* env,
|
| + const base::android::JavaParamRef<jobject>& unused_obj) {
|
| + return GetCreditCardGUIDs(env, personal_data_manager_->GetCreditCards());
|
| +}
|
| +
|
| +base::android::ScopedJavaLocalRef<jobjectArray>
|
| +PersonalDataManagerAndroid::GetCreditCardGUIDsToSuggest(
|
| + JNIEnv* env,
|
| + const base::android::JavaParamRef<jobject>& unused_obj) {
|
| + return GetCreditCardGUIDs(env,
|
| + personal_data_manager_->GetCreditCardsToSuggest());
|
| +}
|
| +
|
| +ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetCreditCardByGUID(
|
| + JNIEnv* env,
|
| + const JavaParamRef<jobject>& unused_obj,
|
| + const JavaParamRef<jstring>& jguid) {
|
| + CreditCard* card = personal_data_manager_->GetCreditCardByGUID(
|
| + ConvertJavaStringToUTF8(env, jguid));
|
| + if (!card)
|
| + return ScopedJavaLocalRef<jobject>();
|
| +
|
| + return CreateJavaCreditCardFromNative(env, *card);
|
| +}
|
| +
|
| +ScopedJavaLocalRef<jstring> PersonalDataManagerAndroid::SetCreditCard(
|
| + JNIEnv* env,
|
| + const JavaParamRef<jobject>& unused_obj,
|
| + const JavaParamRef<jobject>& jcard) {
|
| + std::string guid = ConvertJavaStringToUTF8(
|
| + env,
|
| + Java_CreditCard_getGUID(env, jcard).obj());
|
| +
|
| + CreditCard card;
|
| + PopulateNativeCreditCardFromJava(jcard, env, &card);
|
| +
|
| + if (guid.empty()) {
|
| + personal_data_manager_->AddCreditCard(card);
|
| + } else {
|
| + card.set_guid(guid);
|
| + personal_data_manager_->UpdateCreditCard(card);
|
| + }
|
| + return ConvertUTF8ToJavaString(env, card.guid());
|
| +}
|
| +
|
| +void PersonalDataManagerAndroid::AddServerCreditCardForTest(
|
| + JNIEnv* env,
|
| + const base::android::JavaParamRef<jobject>& unused_obj,
|
| + const base::android::JavaParamRef<jobject>& jcard) {
|
| + std::unique_ptr<CreditCard> card(new CreditCard);
|
| + PopulateNativeCreditCardFromJava(jcard, env, card.get());
|
| + card->set_record_type(CreditCard::MASKED_SERVER_CARD);
|
| + personal_data_manager_->AddServerCreditCardForTest(std::move(card));
|
| +}
|
| +
|
| +void PersonalDataManagerAndroid::RemoveByGUID(
|
| + JNIEnv* env,
|
| + const JavaParamRef<jobject>& unused_obj,
|
| + const JavaParamRef<jstring>& jguid) {
|
| + personal_data_manager_->RemoveByGUID(ConvertJavaStringToUTF8(env, jguid));
|
| +}
|
| +
|
| +void PersonalDataManagerAndroid::ClearUnmaskedCache(
|
| + JNIEnv* env,
|
| + const JavaParamRef<jobject>& unused_obj,
|
| + const JavaParamRef<jstring>& guid) {
|
| + personal_data_manager_->ResetFullServerCard(
|
| + ConvertJavaStringToUTF8(env, guid));
|
| +}
|
| +
|
| +void PersonalDataManagerAndroid::GetFullCardForPaymentRequest(
|
| + JNIEnv* env,
|
| + const JavaParamRef<jobject>& unused_obj,
|
| + const JavaParamRef<jobject>& jweb_contents,
|
| + const JavaParamRef<jstring>& jguid,
|
| + const JavaParamRef<jobject>& jdelegate) {
|
| + // Self-deleting object.
|
| + (new FullCardRequester())
|
| + ->GetFullCard(env, jweb_contents, jdelegate,
|
| + personal_data_manager_->GetCreditCardByGUID(
|
| + ConvertJavaStringToUTF8(env, jguid)));
|
| +}
|
| +
|
| +void PersonalDataManagerAndroid::OnPersonalDataChanged() {
|
| + JNIEnv* env = base::android::AttachCurrentThread();
|
| + if (weak_java_obj_.get(env).is_null())
|
| + return;
|
| +
|
| + Java_PersonalDataManager_personalDataChanged(env,
|
| + weak_java_obj_.get(env).obj());
|
| +}
|
| +
|
| +// static
|
| +bool PersonalDataManagerAndroid::Register(JNIEnv* env) {
|
| + return RegisterNativesImpl(env);
|
| +}
|
| +
|
| +void PersonalDataManagerAndroid::SetProfileUseStatsForTesting(
|
| + JNIEnv* env,
|
| + const JavaParamRef<jobject>& unused_obj,
|
| + const JavaParamRef<jstring>& jguid,
|
| + jint count,
|
| + jint date) {
|
| + DCHECK(count >= 0 && date >= 0);
|
| +
|
| + AutofillProfile* profile = personal_data_manager_->GetProfileByGUID(
|
| + ConvertJavaStringToUTF8(env, jguid));
|
| + if (!profile)
|
| + return;
|
| +
|
| + profile->set_use_count(static_cast<size_t>(count));
|
| + profile->set_use_date(base::Time::FromTimeT(date));
|
| +}
|
| +
|
| +void PersonalDataManagerAndroid::SetCreditCardUseStatsForTesting(
|
| + JNIEnv* env,
|
| + const JavaParamRef<jobject>& unused_obj,
|
| + const JavaParamRef<jstring>& jguid,
|
| + jint count,
|
| + jint date) {
|
| + DCHECK(count >= 0 && date >= 0);
|
| +
|
| + CreditCard* card = personal_data_manager_->GetCreditCardByGUID(
|
| + ConvertJavaStringToUTF8(env, jguid));
|
| + if (!card)
|
| + return;
|
| +
|
| + card->set_use_count(static_cast<size_t>(count));
|
| + card->set_use_date(base::Time::FromTimeT(date));
|
| +}
|
| +
|
| +ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetProfileGUIDs(
|
| + JNIEnv* env,
|
| + const std::vector<AutofillProfile*>& profiles) {
|
| + std::vector<base::string16> guids;
|
| + for (AutofillProfile* profile : profiles)
|
| + guids.push_back(base::UTF8ToUTF16(profile->guid()));
|
| +
|
| + return base::android::ToJavaArrayOfStrings(env, guids);
|
| +}
|
| +
|
| +ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetCreditCardGUIDs(
|
| + JNIEnv* env,
|
| + const std::vector<CreditCard*>& credit_cards) {
|
| + std::vector<base::string16> guids;
|
| + for (CreditCard* credit_card : credit_cards)
|
| + guids.push_back(base::UTF8ToUTF16(credit_card->guid()));
|
| +
|
| + return base::android::ToJavaArrayOfStrings(env, guids);
|
| +}
|
| +
|
| ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetProfileLabels(
|
| JNIEnv* env,
|
| - const JavaParamRef<jobject>& unused_obj,
|
| - bool address_only) {
|
| + bool address_only,
|
| + std::vector<AutofillProfile*> profiles) {
|
| std::unique_ptr<std::vector<ServerFieldType>> suggested_fields;
|
| size_t minimal_fields_shown = 2;
|
| if (address_only) {
|
| @@ -360,111 +527,10 @@
|
|
|
| std::vector<base::string16> labels;
|
| AutofillProfile::CreateInferredLabels(
|
| - personal_data_manager_->GetProfiles(), suggested_fields.get(), NAME_FULL,
|
| - minimal_fields_shown, g_browser_process->GetApplicationLocale(), &labels);
|
| + profiles, suggested_fields.get(), NAME_FULL, minimal_fields_shown,
|
| + g_browser_process->GetApplicationLocale(), &labels);
|
|
|
| return base::android::ToJavaArrayOfStrings(env, labels);
|
| -}
|
| -
|
| -jint PersonalDataManagerAndroid::GetCreditCardCount(
|
| - JNIEnv* unused_env,
|
| - const JavaParamRef<jobject>& unused_obj) {
|
| - return personal_data_manager_->GetCreditCards().size();
|
| -}
|
| -
|
| -ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetCreditCardByIndex(
|
| - JNIEnv* env,
|
| - const JavaParamRef<jobject>& unused_obj,
|
| - jint index) {
|
| - const std::vector<CreditCard*>& credit_cards =
|
| - personal_data_manager_->GetCreditCards();
|
| - size_t index_size_t = static_cast<size_t>(index);
|
| - DCHECK_LT(index_size_t, credit_cards.size());
|
| - return CreateJavaCreditCardFromNative(env, *credit_cards[index_size_t]);
|
| -}
|
| -
|
| -ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetCreditCardByGUID(
|
| - JNIEnv* env,
|
| - const JavaParamRef<jobject>& unused_obj,
|
| - const JavaParamRef<jstring>& jguid) {
|
| - CreditCard* card = personal_data_manager_->GetCreditCardByGUID(
|
| - ConvertJavaStringToUTF8(env, jguid));
|
| - if (!card)
|
| - return ScopedJavaLocalRef<jobject>();
|
| -
|
| - return CreateJavaCreditCardFromNative(env, *card);
|
| -}
|
| -
|
| -ScopedJavaLocalRef<jstring> PersonalDataManagerAndroid::SetCreditCard(
|
| - JNIEnv* env,
|
| - const JavaParamRef<jobject>& unused_obj,
|
| - const JavaParamRef<jobject>& jcard) {
|
| - std::string guid = ConvertJavaStringToUTF8(
|
| - env,
|
| - Java_CreditCard_getGUID(env, jcard).obj());
|
| -
|
| - CreditCard card;
|
| - PopulateNativeCreditCardFromJava(jcard, env, &card);
|
| -
|
| - if (guid.empty()) {
|
| - personal_data_manager_->AddCreditCard(card);
|
| - } else {
|
| - card.set_guid(guid);
|
| - personal_data_manager_->UpdateCreditCard(card);
|
| - }
|
| - return ConvertUTF8ToJavaString(env, card.guid());
|
| -}
|
| -
|
| -void PersonalDataManagerAndroid::AddServerCreditCardForTest(
|
| - JNIEnv* env,
|
| - const base::android::JavaParamRef<jobject>& unused_obj,
|
| - const base::android::JavaParamRef<jobject>& jcard) {
|
| - std::unique_ptr<CreditCard> card(new CreditCard);
|
| - PopulateNativeCreditCardFromJava(jcard, env, card.get());
|
| - card->set_record_type(CreditCard::MASKED_SERVER_CARD);
|
| - personal_data_manager_->AddServerCreditCardForTest(std::move(card));
|
| -}
|
| -
|
| -void PersonalDataManagerAndroid::RemoveByGUID(
|
| - JNIEnv* env,
|
| - const JavaParamRef<jobject>& unused_obj,
|
| - const JavaParamRef<jstring>& jguid) {
|
| - personal_data_manager_->RemoveByGUID(ConvertJavaStringToUTF8(env, jguid));
|
| -}
|
| -
|
| -void PersonalDataManagerAndroid::ClearUnmaskedCache(
|
| - JNIEnv* env,
|
| - const JavaParamRef<jobject>& unused_obj,
|
| - const JavaParamRef<jstring>& guid) {
|
| - personal_data_manager_->ResetFullServerCard(
|
| - ConvertJavaStringToUTF8(env, guid));
|
| -}
|
| -
|
| -void PersonalDataManagerAndroid::GetFullCardForPaymentRequest(
|
| - JNIEnv* env,
|
| - const JavaParamRef<jobject>& unused_obj,
|
| - const JavaParamRef<jobject>& jweb_contents,
|
| - const JavaParamRef<jstring>& jguid,
|
| - const JavaParamRef<jobject>& jdelegate) {
|
| - // Self-deleting object.
|
| - (new FullCardRequester())
|
| - ->GetFullCard(env, jweb_contents, jdelegate,
|
| - personal_data_manager_->GetCreditCardByGUID(
|
| - ConvertJavaStringToUTF8(env, jguid)));
|
| -}
|
| -
|
| -void PersonalDataManagerAndroid::OnPersonalDataChanged() {
|
| - JNIEnv* env = base::android::AttachCurrentThread();
|
| - if (weak_java_obj_.get(env).is_null())
|
| - return;
|
| -
|
| - Java_PersonalDataManager_personalDataChanged(env,
|
| - weak_java_obj_.get(env).obj());
|
| -}
|
| -
|
| -// static
|
| -bool PersonalDataManagerAndroid::Register(JNIEnv* env) {
|
| - return RegisterNativesImpl(env);
|
| }
|
|
|
| // Returns whether the Autofill feature is enabled.
|
|
|