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. |