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

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: Touch ups Created 3 years, 10 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 GetSubKeysRequester : public PersonalDataManagerAndroid::Delegate,
309 public base::SupportsWeakPtr<GetSubKeysRequester> {
310 public:
311 GetSubKeysRequester(
312 JNIEnv* env,
313 const base::android::JavaParamRef<jobject>& jdelegate,
314 const std::string& region_code,
315 base::WeakPtr<PersonalDataManagerAndroid> personal_data_manager_android) {
316 jdelegate_.Reset(env, jdelegate);
317 region_code_ = region_code;
318 personal_data_manager_android_ = personal_data_manager_android;
319 env_ = env;
320 }
321
322 private:
323 ~GetSubKeysRequester() override {}
324
325 void OnRulesSuccessfullyLoaded() override {
326 if (personal_data_manager_android_) {
327 JNIEnv* env = base::android::AttachCurrentThread();
328 Java_GetSubKeysRequestDelegate_onSubKeysReceived(
329 env, jdelegate_,
330 personal_data_manager_android_->GetSubKeys(env, region_code_));
331 }
332 }
333
334 ScopedJavaGlobalRef<jobject> jdelegate_;
335 std::string region_code_;
336 base::WeakPtr<PersonalDataManagerAndroid> personal_data_manager_android_;
337 JNIEnv* env_;
338
339 DISALLOW_COPY_AND_ASSIGN(GetSubKeysRequester);
340 };
341
308 } // namespace 342 } // namespace
309 343
310 PersonalDataManagerAndroid::PersonalDataManagerAndroid(JNIEnv* env, jobject obj) 344 PersonalDataManagerAndroid::PersonalDataManagerAndroid(JNIEnv* env, jobject obj)
311 : weak_java_obj_(env, obj), 345 : weak_java_obj_(env, obj),
312 personal_data_manager_(PersonalDataManagerFactory::GetForProfile( 346 personal_data_manager_(PersonalDataManagerFactory::GetForProfile(
313 ProfileManager::GetActiveUserProfile())), 347 ProfileManager::GetActiveUserProfile())),
314 address_normalizer_( 348 address_normalizer_(
315 std::unique_ptr<::i18n::addressinput::Source>( 349 std::unique_ptr<::i18n::addressinput::Source>(
316 new autofill::ChromeMetadataSource( 350 new autofill::ChromeMetadataSource(
317 I18N_ADDRESS_VALIDATION_DATA_URL, 351 I18N_ADDRESS_VALIDATION_DATA_URL,
318 personal_data_manager_->GetURLRequestContextGetter())), 352 personal_data_manager_->GetURLRequestContextGetter())),
319 ValidationRulesStorageFactory::CreateStorage()) { 353 ValidationRulesStorageFactory::CreateStorage()),
354 address_validator_(
355 std::unique_ptr<::i18n::addressinput::Source>(
356 new autofill::ChromeMetadataSource(
357 I18N_ADDRESS_VALIDATION_DATA_URL,
358 personal_data_manager_->GetURLRequestContextGetter())),
359 ValidationRulesStorageFactory::CreateStorage(),
360 this) {
320 personal_data_manager_->AddObserver(this); 361 personal_data_manager_->AddObserver(this);
321 } 362 }
322 363
323 PersonalDataManagerAndroid::~PersonalDataManagerAndroid() { 364 PersonalDataManagerAndroid::~PersonalDataManagerAndroid() {
324 personal_data_manager_->RemoveObserver(this); 365 personal_data_manager_->RemoveObserver(this);
325 } 366 }
326 367
327 jboolean PersonalDataManagerAndroid::IsDataLoaded( 368 jboolean PersonalDataManagerAndroid::IsDataLoaded(
328 JNIEnv* env, 369 JNIEnv* env,
329 const base::android::JavaParamRef<jobject>& unused_obj) const { 370 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(); 731 return card->use_date().ToTimeT();
691 } 732 }
692 733
693 // TODO(crbug.com/629507): Use a mock clock for testing. 734 // TODO(crbug.com/629507): Use a mock clock for testing.
694 jlong PersonalDataManagerAndroid::GetCurrentDateForTesting( 735 jlong PersonalDataManagerAndroid::GetCurrentDateForTesting(
695 JNIEnv* env, 736 JNIEnv* env,
696 const base::android::JavaParamRef<jobject>& unused_obj) { 737 const base::android::JavaParamRef<jobject>& unused_obj) {
697 return base::Time::Now().ToTimeT(); 738 return base::Time::Now().ToTimeT();
698 } 739 }
699 740
700 void PersonalDataManagerAndroid::LoadRulesForRegion( 741 void PersonalDataManagerAndroid::LoadRulesForAddressNormalization(
701 JNIEnv* env, 742 JNIEnv* env,
702 const base::android::JavaParamRef<jobject>& unused_obj, 743 const base::android::JavaParamRef<jobject>& unused_obj,
703 const base::android::JavaParamRef<jstring>& jregion_code) { 744 const base::android::JavaParamRef<jstring>& jregion_code) {
704 address_normalizer_.LoadRulesForRegion( 745 address_normalizer_.LoadRulesForRegion(
705 ConvertJavaStringToUTF8(env, jregion_code)); 746 ConvertJavaStringToUTF8(env, jregion_code));
706 } 747 }
707 748
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
708 void PersonalDataManagerAndroid::StartAddressNormalization( 756 void PersonalDataManagerAndroid::StartAddressNormalization(
709 JNIEnv* env, 757 JNIEnv* env,
710 const JavaParamRef<jobject>& unused_obj, 758 const JavaParamRef<jobject>& unused_obj,
711 const JavaParamRef<jstring>& jguid, 759 const JavaParamRef<jstring>& jguid,
712 const JavaParamRef<jstring>& jregion_code, 760 const JavaParamRef<jstring>& jregion_code,
713 jint jtimeout_seconds, 761 jint jtimeout_seconds,
714 const JavaParamRef<jobject>& jdelegate) { 762 const JavaParamRef<jobject>& jdelegate) {
715 const std::string region_code = ConvertJavaStringToUTF8(env, jregion_code); 763 const std::string region_code = ConvertJavaStringToUTF8(env, jregion_code);
716 const std::string guid = ConvertJavaStringToUTF8(env, jguid); 764 const std::string guid = ConvertJavaStringToUTF8(env, jguid);
717 765
(...skipping 14 matching lines...) Expand all
732 const base::android::JavaParamRef<jobject>& unused_obj) { 780 const base::android::JavaParamRef<jobject>& unused_obj) {
733 return !personal_data_manager_->GetProfiles().empty(); 781 return !personal_data_manager_->GetProfiles().empty();
734 } 782 }
735 783
736 jboolean PersonalDataManagerAndroid::HasCreditCards( 784 jboolean PersonalDataManagerAndroid::HasCreditCards(
737 JNIEnv* env, 785 JNIEnv* env,
738 const base::android::JavaParamRef<jobject>& unused_obj) { 786 const base::android::JavaParamRef<jobject>& unused_obj) {
739 return !personal_data_manager_->GetCreditCards().empty(); 787 return !personal_data_manager_->GetCreditCards().empty();
740 } 788 }
741 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.
802 auto it = pending_subkeys_request_.find(region_code);
803 if (it != pending_subkeys_request_.end()) {
804 for (size_t i = 0; i < it->second.size(); ++i) {
805 it->second[i]->OnRulesSuccessfullyLoaded();
806 }
807 pending_subkeys_request_.erase(it);
808 }
809 }
810
811 void PersonalDataManagerAndroid::StartGettingRegionSubKeys(
812 JNIEnv* env,
813 const JavaParamRef<jobject>& unused_obj,
814 const JavaParamRef<jstring>& jregion_code,
815 const JavaParamRef<jobject>& jdelegate) {
816 const std::string region_code = ConvertJavaStringToUTF8(env, jregion_code);
817 std::unique_ptr<Delegate> requester(
818 new GetSubKeysRequester(env, jdelegate, region_code, AsWeakPtr()));
819
820 if (AreRulesLoadedForRegion(region_code)) {
821 requester->OnRulesSuccessfullyLoaded();
822 } else {
823 // Setup the variables so that the sub-keys request is sent, when the rules
824 // are loaded.
825 auto it = pending_subkeys_request_.find(region_code);
826 if (it == pending_subkeys_request_.end()) {
827 // If no entry exists, create the entry and assign it to |it|.
828 it = pending_subkeys_request_
829 .insert(std::make_pair(region_code,
830 std::vector<std::unique_ptr<Delegate>>()))
831 .first;
832 }
833 it->second.push_back(std::move(requester));
834 }
835 }
836
837 void PersonalDataManagerAndroid::CancelPendingGetSubKeys(
838 JNIEnv* env,
839 const base::android::JavaParamRef<jobject>& unused_obj) {
840 pending_subkeys_request_.clear();
841 }
842
742 ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetProfileGUIDs( 843 ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetProfileGUIDs(
743 JNIEnv* env, 844 JNIEnv* env,
744 const std::vector<AutofillProfile*>& profiles) { 845 const std::vector<AutofillProfile*>& profiles) {
745 std::vector<base::string16> guids; 846 std::vector<base::string16> guids;
746 for (AutofillProfile* profile : profiles) 847 for (AutofillProfile* profile : profiles)
747 guids.push_back(base::UTF8ToUTF16(profile->guid())); 848 guids.push_back(base::UTF8ToUTF16(profile->guid()));
748 849
749 return base::android::ToJavaArrayOfStrings(env, guids); 850 return base::android::ToJavaArrayOfStrings(env, guids);
750 } 851 }
751 852
752 ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetCreditCardGUIDs( 853 ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetCreditCardGUIDs(
753 JNIEnv* env, 854 JNIEnv* env,
754 const std::vector<CreditCard*>& credit_cards) { 855 const std::vector<CreditCard*>& credit_cards) {
755 std::vector<base::string16> guids; 856 std::vector<base::string16> guids;
756 for (CreditCard* credit_card : credit_cards) 857 for (CreditCard* credit_card : credit_cards)
757 guids.push_back(base::UTF8ToUTF16(credit_card->guid())); 858 guids.push_back(base::UTF8ToUTF16(credit_card->guid()));
758 859
759 return base::android::ToJavaArrayOfStrings(env, guids); 860 return base::android::ToJavaArrayOfStrings(env, guids);
760 } 861 }
761 862
762 bool PersonalDataManagerAndroid::AreRulesLoadedForRegion( 863 bool PersonalDataManagerAndroid::AreRulesLoadedForRegion(
763 const std::string& region_code) { 864 const std::string& region_code) {
764 return address_normalizer_.AreRulesLoadedForRegion(region_code); 865 return address_validator_.AreRulesLoadedForRegion(region_code);
765 } 866 }
766 867
767 ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetProfileLabels( 868 ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetProfileLabels(
768 JNIEnv* env, 869 JNIEnv* env,
769 bool address_only, 870 bool address_only,
770 bool include_name_in_label, 871 bool include_name_in_label,
771 bool include_organization_in_label, 872 bool include_organization_in_label,
772 bool include_country_in_label, 873 bool include_country_in_label,
773 std::vector<AutofillProfile*> profiles) { 874 std::vector<AutofillProfile*> profiles) {
774 std::unique_ptr<std::vector<ServerFieldType>> suggested_fields; 875 std::unique_ptr<std::vector<ServerFieldType>> suggested_fields;
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
874 base::android::ConvertJavaStringToUTF16(env, jcountry_name))); 975 base::android::ConvertJavaStringToUTF16(env, jcountry_name)));
875 } 976 }
876 977
877 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { 978 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) {
878 PersonalDataManagerAndroid* personal_data_manager_android = 979 PersonalDataManagerAndroid* personal_data_manager_android =
879 new PersonalDataManagerAndroid(env, obj); 980 new PersonalDataManagerAndroid(env, obj);
880 return reinterpret_cast<intptr_t>(personal_data_manager_android); 981 return reinterpret_cast<intptr_t>(personal_data_manager_android);
881 } 982 }
882 983
883 } // namespace autofill 984 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698