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

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

Issue 2800013004: Revert of Use dropdown list for admin areas in pr form. (Closed)
Patch Set: Created 3 years, 8 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 <algorithm>
9 #include <memory> 9 #include <memory>
10 #include <utility> 10 #include <utility>
11 11
12 #include "base/android/jni_array.h" 12 #include "base/android/jni_array.h"
13 #include "base/android/jni_string.h" 13 #include "base/android/jni_string.h"
14 #include "base/command_line.h" 14 #include "base/command_line.h"
15 #include "base/format_macros.h" 15 #include "base/format_macros.h"
16 #include "base/memory/ptr_util.h"
17 #include "base/strings/utf_string_conversions.h" 16 #include "base/strings/utf_string_conversions.h"
18 #include "base/time/time.h" 17 #include "base/time/time.h"
19 #include "chrome/browser/android/resource_mapper.h" 18 #include "chrome/browser/android/resource_mapper.h"
20 #include "chrome/browser/autofill/personal_data_manager_factory.h" 19 #include "chrome/browser/autofill/personal_data_manager_factory.h"
21 #include "chrome/browser/autofill/validation_rules_storage_factory.h" 20 #include "chrome/browser/autofill/validation_rules_storage_factory.h"
22 #include "chrome/browser/browser_process.h" 21 #include "chrome/browser/browser_process.h"
23 #include "chrome/browser/profiles/profile.h" 22 #include "chrome/browser/profiles/profile.h"
24 #include "chrome/browser/profiles/profile_manager.h" 23 #include "chrome/browser/profiles/profile_manager.h"
25 #include "chrome/common/pref_names.h" 24 #include "chrome/common/pref_names.h"
26 #include "components/autofill/content/browser/content_autofill_driver.h" 25 #include "components/autofill/content/browser/content_autofill_driver.h"
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 } 298 }
300 299
301 private: 300 private:
302 ~AndroidAddressNormalizerDelegate() override {} 301 ~AndroidAddressNormalizerDelegate() override {}
303 302
304 ScopedJavaGlobalRef<jobject> jdelegate_; 303 ScopedJavaGlobalRef<jobject> jdelegate_;
305 304
306 DISALLOW_COPY_AND_ASSIGN(AndroidAddressNormalizerDelegate); 305 DISALLOW_COPY_AND_ASSIGN(AndroidAddressNormalizerDelegate);
307 }; 306 };
308 307
309 class AndroidSubKeyRequesterDelegate
310 : public PersonalDataManagerAndroid::SubKeyRequestDelegate,
311 public base::SupportsWeakPtr<AndroidSubKeyRequesterDelegate> {
312 public:
313 AndroidSubKeyRequesterDelegate(
314 JNIEnv* env,
315 const base::android::JavaParamRef<jobject>& jdelegate,
316 const std::string& region_code,
317 base::WeakPtr<PersonalDataManagerAndroid> personal_data_manager_android) {
318 jdelegate_.Reset(env, jdelegate);
319 region_code_ = region_code;
320 personal_data_manager_android_ = personal_data_manager_android;
321 }
322
323 ~AndroidSubKeyRequesterDelegate() override {}
324
325 private:
326 // PersonalDataManagerAndroid::SubKeyRequestDelegate:
327 void OnRulesSuccessfullyLoaded() override {
328 if (personal_data_manager_android_) {
329 JNIEnv* env = base::android::AttachCurrentThread();
330 Java_GetSubKeysRequestDelegate_onSubKeysReceived(
331 env, jdelegate_,
332 personal_data_manager_android_->GetSubKeys(env, region_code_));
333 }
334 }
335
336 ScopedJavaGlobalRef<jobject> jdelegate_;
337 std::string region_code_;
338 base::WeakPtr<PersonalDataManagerAndroid> personal_data_manager_android_;
339
340 DISALLOW_COPY_AND_ASSIGN(AndroidSubKeyRequesterDelegate);
341 };
342
343 } // namespace 308 } // namespace
344 309
345 PersonalDataManagerAndroid::PersonalDataManagerAndroid(JNIEnv* env, jobject obj) 310 PersonalDataManagerAndroid::PersonalDataManagerAndroid(JNIEnv* env, jobject obj)
346 : weak_java_obj_(env, obj), 311 : weak_java_obj_(env, obj),
347 personal_data_manager_(PersonalDataManagerFactory::GetForProfile( 312 personal_data_manager_(PersonalDataManagerFactory::GetForProfile(
348 ProfileManager::GetActiveUserProfile())), 313 ProfileManager::GetActiveUserProfile())),
349 address_normalizer_( 314 address_normalizer_(
350 std::unique_ptr<::i18n::addressinput::Source>( 315 std::unique_ptr<::i18n::addressinput::Source>(
351 new autofill::ChromeMetadataSource( 316 new autofill::ChromeMetadataSource(
352 I18N_ADDRESS_VALIDATION_DATA_URL, 317 I18N_ADDRESS_VALIDATION_DATA_URL,
353 personal_data_manager_->GetURLRequestContextGetter())), 318 personal_data_manager_->GetURLRequestContextGetter())),
354 ValidationRulesStorageFactory::CreateStorage()), 319 ValidationRulesStorageFactory::CreateStorage()) {
355 address_validator_(
356 base::MakeUnique<autofill::ChromeMetadataSource>(
357 I18N_ADDRESS_VALIDATION_DATA_URL,
358 personal_data_manager_->GetURLRequestContextGetter()),
359 ValidationRulesStorageFactory::CreateStorage(),
360 this) {
361 personal_data_manager_->AddObserver(this); 320 personal_data_manager_->AddObserver(this);
362 } 321 }
363 322
364 PersonalDataManagerAndroid::~PersonalDataManagerAndroid() { 323 PersonalDataManagerAndroid::~PersonalDataManagerAndroid() {
365 personal_data_manager_->RemoveObserver(this); 324 personal_data_manager_->RemoveObserver(this);
366 } 325 }
367 326
368 jboolean PersonalDataManagerAndroid::IsDataLoaded( 327 jboolean PersonalDataManagerAndroid::IsDataLoaded(
369 JNIEnv* env, 328 JNIEnv* env,
370 const base::android::JavaParamRef<jobject>& unused_obj) const { 329 const base::android::JavaParamRef<jobject>& unused_obj) const {
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
731 return card->use_date().ToTimeT(); 690 return card->use_date().ToTimeT();
732 } 691 }
733 692
734 // TODO(crbug.com/629507): Use a mock clock for testing. 693 // TODO(crbug.com/629507): Use a mock clock for testing.
735 jlong PersonalDataManagerAndroid::GetCurrentDateForTesting( 694 jlong PersonalDataManagerAndroid::GetCurrentDateForTesting(
736 JNIEnv* env, 695 JNIEnv* env,
737 const base::android::JavaParamRef<jobject>& unused_obj) { 696 const base::android::JavaParamRef<jobject>& unused_obj) {
738 return base::Time::Now().ToTimeT(); 697 return base::Time::Now().ToTimeT();
739 } 698 }
740 699
741 void PersonalDataManagerAndroid::LoadRulesForAddressNormalization( 700 void PersonalDataManagerAndroid::LoadRulesForRegion(
742 JNIEnv* env, 701 JNIEnv* env,
743 const base::android::JavaParamRef<jobject>& unused_obj, 702 const base::android::JavaParamRef<jobject>& unused_obj,
744 const base::android::JavaParamRef<jstring>& jregion_code) { 703 const base::android::JavaParamRef<jstring>& jregion_code) {
745 address_normalizer_.LoadRulesForRegion( 704 address_normalizer_.LoadRulesForRegion(
746 ConvertJavaStringToUTF8(env, jregion_code)); 705 ConvertJavaStringToUTF8(env, jregion_code));
747 } 706 }
748 707
749 void PersonalDataManagerAndroid::LoadRulesForSubKeys(
750 JNIEnv* env,
751 const base::android::JavaParamRef<jobject>& unused_obj,
752 const base::android::JavaParamRef<jstring>& jregion_code) {
753 address_validator_.LoadRules(ConvertJavaStringToUTF8(env, jregion_code));
754 }
755
756 void PersonalDataManagerAndroid::StartAddressNormalization( 708 void PersonalDataManagerAndroid::StartAddressNormalization(
757 JNIEnv* env, 709 JNIEnv* env,
758 const JavaParamRef<jobject>& unused_obj, 710 const JavaParamRef<jobject>& unused_obj,
759 const JavaParamRef<jobject>& jprofile, 711 const JavaParamRef<jobject>& jprofile,
760 const JavaParamRef<jstring>& jregion_code, 712 const JavaParamRef<jstring>& jregion_code,
761 jint jtimeout_seconds, 713 jint jtimeout_seconds,
762 const JavaParamRef<jobject>& jdelegate) { 714 const JavaParamRef<jobject>& jdelegate) {
763 const std::string region_code = ConvertJavaStringToUTF8(env, jregion_code); 715 const std::string region_code = ConvertJavaStringToUTF8(env, jregion_code);
764 716
765 AutofillProfile profile; 717 AutofillProfile profile;
(...skipping 13 matching lines...) Expand all
779 const base::android::JavaParamRef<jobject>& unused_obj) { 731 const base::android::JavaParamRef<jobject>& unused_obj) {
780 return !personal_data_manager_->GetProfiles().empty(); 732 return !personal_data_manager_->GetProfiles().empty();
781 } 733 }
782 734
783 jboolean PersonalDataManagerAndroid::HasCreditCards( 735 jboolean PersonalDataManagerAndroid::HasCreditCards(
784 JNIEnv* env, 736 JNIEnv* env,
785 const base::android::JavaParamRef<jobject>& unused_obj) { 737 const base::android::JavaParamRef<jobject>& unused_obj) {
786 return !personal_data_manager_->GetCreditCards().empty(); 738 return !personal_data_manager_->GetCreditCards().empty();
787 } 739 }
788 740
789 base::android::ScopedJavaLocalRef<jobjectArray>
790 PersonalDataManagerAndroid::GetSubKeys(JNIEnv* env,
791 const std::string& region_code) {
792 std::vector<std::string> sub_keys =
793 address_validator_.GetRegionSubKeys(region_code);
794 return base::android::ToJavaArrayOfStrings(env, sub_keys);
795 }
796
797 void PersonalDataManagerAndroid::OnAddressRulesLoaded(
798 const std::string& region_code,
799 bool success) {
800 // if |success| == false, AddressValidator::GetRegionSubKeys will return an
801 // empty list of sub-keys. => No need to check for |success|.
802 // Check if there is any sub-key request for that region code.
803 if (!pending_subkey_region_code_.compare(region_code))
804 pending_subkey_request_->OnRulesSuccessfullyLoaded();
805 pending_subkey_region_code_.clear();
806 pending_subkey_request_.reset();
807 }
808
809 void PersonalDataManagerAndroid::StartRegionSubKeysRequest(
810 JNIEnv* env,
811 const JavaParamRef<jobject>& unused_obj,
812 const JavaParamRef<jstring>& jregion_code,
813 const JavaParamRef<jobject>& jdelegate) {
814 const std::string region_code = ConvertJavaStringToUTF8(env, jregion_code);
815 std::unique_ptr<SubKeyRequestDelegate> requester =
816 base::MakeUnique<AndroidSubKeyRequesterDelegate>(
817 env, jdelegate, region_code, AsWeakPtr());
818
819 if (AreRulesLoadedForRegion(region_code)) {
820 requester->OnRulesSuccessfullyLoaded();
821 } else {
822 // Setup the variables so that the sub-keys request is sent, when the rules
823 // are loaded.
824 pending_subkey_region_code_ = region_code;
825 pending_subkey_request_ = std::move(requester);
826 }
827 }
828
829 void PersonalDataManagerAndroid::CancelPendingGetSubKeys(
830 JNIEnv* env,
831 const base::android::JavaParamRef<jobject>& unused_obj) {
832 pending_subkey_region_code_.clear();
833 pending_subkey_request_.reset();
834 }
835
836 ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetProfileGUIDs( 741 ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetProfileGUIDs(
837 JNIEnv* env, 742 JNIEnv* env,
838 const std::vector<AutofillProfile*>& profiles) { 743 const std::vector<AutofillProfile*>& profiles) {
839 std::vector<base::string16> guids; 744 std::vector<base::string16> guids;
840 for (AutofillProfile* profile : profiles) 745 for (AutofillProfile* profile : profiles)
841 guids.push_back(base::UTF8ToUTF16(profile->guid())); 746 guids.push_back(base::UTF8ToUTF16(profile->guid()));
842 747
843 return base::android::ToJavaArrayOfStrings(env, guids); 748 return base::android::ToJavaArrayOfStrings(env, guids);
844 } 749 }
845 750
846 ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetCreditCardGUIDs( 751 ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetCreditCardGUIDs(
847 JNIEnv* env, 752 JNIEnv* env,
848 const std::vector<CreditCard*>& credit_cards) { 753 const std::vector<CreditCard*>& credit_cards) {
849 std::vector<base::string16> guids; 754 std::vector<base::string16> guids;
850 for (CreditCard* credit_card : credit_cards) 755 for (CreditCard* credit_card : credit_cards)
851 guids.push_back(base::UTF8ToUTF16(credit_card->guid())); 756 guids.push_back(base::UTF8ToUTF16(credit_card->guid()));
852 757
853 return base::android::ToJavaArrayOfStrings(env, guids); 758 return base::android::ToJavaArrayOfStrings(env, guids);
854 } 759 }
855 760
856 bool PersonalDataManagerAndroid::AreRulesLoadedForRegion( 761 bool PersonalDataManagerAndroid::AreRulesLoadedForRegion(
857 const std::string& region_code) { 762 const std::string& region_code) {
858 return address_validator_.AreRulesLoadedForRegion(region_code); 763 return address_normalizer_.AreRulesLoadedForRegion(region_code);
859 } 764 }
860 765
861 ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetProfileLabels( 766 ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetProfileLabels(
862 JNIEnv* env, 767 JNIEnv* env,
863 bool address_only, 768 bool address_only,
864 bool include_name_in_label, 769 bool include_name_in_label,
865 bool include_organization_in_label, 770 bool include_organization_in_label,
866 bool include_country_in_label, 771 bool include_country_in_label,
867 std::vector<AutofillProfile*> profiles) { 772 std::vector<AutofillProfile*> profiles) {
868 std::unique_ptr<std::vector<ServerFieldType>> suggested_fields; 773 std::unique_ptr<std::vector<ServerFieldType>> suggested_fields;
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
968 base::android::ConvertJavaStringToUTF16(env, jcountry_name))); 873 base::android::ConvertJavaStringToUTF16(env, jcountry_name)));
969 } 874 }
970 875
971 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { 876 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) {
972 PersonalDataManagerAndroid* personal_data_manager_android = 877 PersonalDataManagerAndroid* personal_data_manager_android =
973 new PersonalDataManagerAndroid(env, obj); 878 new PersonalDataManagerAndroid(env, obj);
974 return reinterpret_cast<intptr_t>(personal_data_manager_android); 879 return reinterpret_cast<intptr_t>(personal_data_manager_android);
975 } 880 }
976 881
977 } // namespace autofill 882 } // namespace autofill
OLDNEW
« no previous file with comments | « chrome/browser/autofill/android/personal_data_manager_android.h ('k') | components/payments/core/address_normalizer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698