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

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

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

Powered by Google App Engine
This is Rietveld 408576698