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 |