Chromium Code Reviews| 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 015b99fd71bf7f8c16eceb430fdc75b12415acf0..2bcdb4c7ce6f37d36f24bb96bc22acf60e508859 100644 |
| --- a/chrome/browser/autofill/android/personal_data_manager_android.cc |
| +++ b/chrome/browser/autofill/android/personal_data_manager_android.cc |
| @@ -14,6 +14,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" |
| @@ -297,8 +298,17 @@ ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetProfileByIndex( |
| JNIEnv* env, |
| const JavaParamRef<jobject>& unused_obj, |
| jint index) { |
| - const std::vector<AutofillProfile*>& profiles = |
| + std::vector<AutofillProfile*> profiles = |
| personal_data_manager_->GetProfiles(); |
| + |
| + // Rank the profiles by frecency (see AutofillDataModel for details). |
|
please use gerrit instead
2016/05/16 15:57:46
Can you put this block of code into a helper funct
sebsg
2016/05/19 17:52:03
Even better, I made GetProfilesToSuggest and GetCr
|
| + base::Time comparison_time = base::Time::Now(); |
| + std::sort(profiles.begin(), profiles.end(), |
|
please use gerrit instead
2016/05/16 15:57:46
#include <algorithm>
sebsg
2016/05/19 17:52:03
Done.
|
| + [comparison_time](const AutofillDataModel* a, |
| + const AutofillDataModel* b) { |
| + return a->CompareFrecency(b, comparison_time); |
| + }); |
| + |
| size_t index_size_t = static_cast<size_t>(index); |
| DCHECK_LT(index_size_t, profiles.size()); |
| return CreateJavaProfileFromNative(env, *profiles[index_size_t]); |
| @@ -357,10 +367,21 @@ ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetProfileLabels( |
| minimal_fields_shown = suggested_fields->size(); |
| } |
| + std::vector<AutofillProfile*> profiles = |
| + personal_data_manager_->GetProfiles(); |
| + |
| + // Rank the profiles by frecency (see AutofillDataModel for details). |
| + base::Time comparison_time = base::Time::Now(); |
| + std::sort(profiles.begin(), profiles.end(), |
|
please use gerrit instead
2016/05/16 15:57:46
#include <algorithm>
sebsg
2016/05/19 17:52:03
Done.
|
| + [comparison_time](const AutofillDataModel* a, |
| + const AutofillDataModel* b) { |
| + return a->CompareFrecency(b, comparison_time); |
| + }); |
| + |
| 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); |
| } |
| @@ -375,8 +396,17 @@ ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetCreditCardByIndex( |
| JNIEnv* env, |
| const JavaParamRef<jobject>& unused_obj, |
| jint index) { |
| - const std::vector<CreditCard*>& credit_cards = |
| + std::vector<CreditCard*> credit_cards = |
| personal_data_manager_->GetCreditCards(); |
| + |
| + // Rank the cards by frecency (see AutofillDataModel for details). |
| + base::Time comparison_time = base::Time::Now(); |
| + std::sort(credit_cards.begin(), credit_cards.end(), |
|
please use gerrit instead
2016/05/16 15:57:46
#include <algorithm>
sebsg
2016/05/19 17:52:03
Done.
|
| + [comparison_time](const AutofillDataModel* a, |
| + const AutofillDataModel* b) { |
| + return a->CompareFrecency(b, comparison_time); |
| + }); |
| + |
| 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]); |
| @@ -456,6 +486,40 @@ bool PersonalDataManagerAndroid::Register(JNIEnv* env) { |
| return RegisterNativesImpl(env); |
| } |
| +void PersonalDataManagerAndroid::SetProfileUseStats( |
| + JNIEnv* env, |
| + const JavaParamRef<jobject>& unused_obj, |
| + const JavaParamRef<jstring>& jguid, |
| + jint count, |
| + jint date) { |
| + AutofillProfile* profile = personal_data_manager_->GetProfileByGUID( |
| + ConvertJavaStringToUTF8(env, jguid)); |
| + if (!profile) |
| + return; |
| + |
| + size_t count_size_t = static_cast<size_t>(count); |
| + profile->set_use_count(count_size_t); |
| + |
| + profile->set_use_date(base::Time::FromTimeT(date)); |
| +} |
| + |
| +void PersonalDataManagerAndroid::SetCreditCardUseStats( |
| + JNIEnv* env, |
| + const JavaParamRef<jobject>& unused_obj, |
| + const JavaParamRef<jstring>& jguid, |
| + jint count, |
| + jint date) { |
| + CreditCard* card = personal_data_manager_->GetCreditCardByGUID( |
| + ConvertJavaStringToUTF8(env, jguid)); |
| + if (!card) |
| + return; |
| + |
| + size_t count_size_t = static_cast<size_t>(count); |
| + card->set_use_count(count_size_t); |
| + |
| + card->set_use_date(base::Time::FromTimeT(date)); |
| +} |
| + |
| // Returns whether the Autofill feature is enabled. |
| static jboolean IsAutofillEnabled(JNIEnv* env, |
| const JavaParamRef<jclass>& clazz) { |