Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(234)

Side by Side Diff: chrome/browser/autofill/android/personal_data_manager_android.cc

Issue 1982623002: [Autofill] Sort profiles and credit cards by frecency in PaymentRequest. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments and refactored Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698