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

Unified Diff: chrome/browser/autofill/android/personal_data_manager_android.cc

Issue 2680143002: Use dropdown list for admin areas in pr form. (Closed)
Patch Set: Supress error-- suggested by clank team 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/autofill/android/personal_data_manager_android.cc
diff --git a/chrome/browser/autofill/android/personal_data_manager_android.cc b/chrome/browser/autofill/android/personal_data_manager_android.cc
index f270be28607deaa9cfac1d3c9b76968904209d46..cc60fce07baeead658d3a0e310eca7184772bbfa 100644
--- a/chrome/browser/autofill/android/personal_data_manager_android.cc
+++ b/chrome/browser/autofill/android/personal_data_manager_android.cc
@@ -13,6 +13,7 @@
#include "base/android/jni_string.h"
#include "base/command_line.h"
#include "base/format_macros.h"
+#include "base/memory/ptr_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/time/time.h"
#include "chrome/browser/android/resource_mapper.h"
@@ -305,6 +306,40 @@ class AndroidAddressNormalizerDelegate
DISALLOW_COPY_AND_ASSIGN(AndroidAddressNormalizerDelegate);
};
+class AndroidSubKeyRequesterDelegate
+ : public PersonalDataManagerAndroid::SubKeyRequestDelegate,
+ public base::SupportsWeakPtr<AndroidSubKeyRequesterDelegate> {
+ public:
+ AndroidSubKeyRequesterDelegate(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& jdelegate,
+ const std::string& region_code,
+ base::WeakPtr<PersonalDataManagerAndroid> personal_data_manager_android) {
+ jdelegate_.Reset(env, jdelegate);
+ region_code_ = region_code;
+ personal_data_manager_android_ = personal_data_manager_android;
+ }
+
+ ~AndroidSubKeyRequesterDelegate() override {}
+
+ private:
+ // PersonalDataManagerAndroid::SubKeyRequestDelegate:
+ void OnRulesSuccessfullyLoaded() override {
+ if (personal_data_manager_android_) {
+ JNIEnv* env = base::android::AttachCurrentThread();
+ Java_GetSubKeysRequestDelegate_onSubKeysReceived(
+ env, jdelegate_,
+ personal_data_manager_android_->GetSubKeys(env, region_code_));
+ }
+ }
+
+ ScopedJavaGlobalRef<jobject> jdelegate_;
+ std::string region_code_;
+ base::WeakPtr<PersonalDataManagerAndroid> personal_data_manager_android_;
+
+ DISALLOW_COPY_AND_ASSIGN(AndroidSubKeyRequesterDelegate);
+};
+
} // namespace
PersonalDataManagerAndroid::PersonalDataManagerAndroid(JNIEnv* env, jobject obj)
@@ -316,7 +351,13 @@ PersonalDataManagerAndroid::PersonalDataManagerAndroid(JNIEnv* env, jobject obj)
new autofill::ChromeMetadataSource(
I18N_ADDRESS_VALIDATION_DATA_URL,
personal_data_manager_->GetURLRequestContextGetter())),
- ValidationRulesStorageFactory::CreateStorage()) {
+ ValidationRulesStorageFactory::CreateStorage()),
+ address_validator_(
+ base::MakeUnique<autofill::ChromeMetadataSource>(
+ I18N_ADDRESS_VALIDATION_DATA_URL,
+ personal_data_manager_->GetURLRequestContextGetter()),
+ ValidationRulesStorageFactory::CreateStorage(),
+ this) {
personal_data_manager_->AddObserver(this);
}
@@ -697,7 +738,7 @@ jlong PersonalDataManagerAndroid::GetCurrentDateForTesting(
return base::Time::Now().ToTimeT();
}
-void PersonalDataManagerAndroid::LoadRulesForRegion(
+void PersonalDataManagerAndroid::LoadRulesForAddressNormalization(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& unused_obj,
const base::android::JavaParamRef<jstring>& jregion_code) {
@@ -705,6 +746,13 @@ void PersonalDataManagerAndroid::LoadRulesForRegion(
ConvertJavaStringToUTF8(env, jregion_code));
}
+void PersonalDataManagerAndroid::LoadRulesForSubKeys(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& unused_obj,
+ const base::android::JavaParamRef<jstring>& jregion_code) {
+ address_validator_.LoadRules(ConvertJavaStringToUTF8(env, jregion_code));
+}
+
void PersonalDataManagerAndroid::StartAddressNormalization(
JNIEnv* env,
const JavaParamRef<jobject>& unused_obj,
@@ -738,6 +786,53 @@ jboolean PersonalDataManagerAndroid::HasCreditCards(
return !personal_data_manager_->GetCreditCards().empty();
}
+base::android::ScopedJavaLocalRef<jobjectArray>
+PersonalDataManagerAndroid::GetSubKeys(JNIEnv* env,
+ const std::string& region_code) {
+ std::vector<std::string> sub_keys =
+ address_validator_.GetRegionSubKeys(region_code);
+ return base::android::ToJavaArrayOfStrings(env, sub_keys);
+}
+
+void PersonalDataManagerAndroid::OnAddressRulesLoaded(
+ const std::string& region_code,
+ bool success) {
+ // if |success| == false, AddressValidator::GetRegionSubKeys will return an
+ // empty list of sub-keys. => No need to check for |success|.
+ // Check if there is any sub-key request for that region code.
+ if (!pending_subkey_region_code_.compare(region_code))
+ pending_subkey_request_->OnRulesSuccessfullyLoaded();
+ pending_subkey_region_code_.clear();
+ pending_subkey_request_.reset();
+}
+
+void PersonalDataManagerAndroid::StartRegionSubKeysRequest(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& unused_obj,
+ const JavaParamRef<jstring>& jregion_code,
+ const JavaParamRef<jobject>& jdelegate) {
+ const std::string region_code = ConvertJavaStringToUTF8(env, jregion_code);
+ std::unique_ptr<SubKeyRequestDelegate> requester =
+ base::MakeUnique<AndroidSubKeyRequesterDelegate>(
+ env, jdelegate, region_code, AsWeakPtr());
+
+ if (AreRulesLoadedForRegion(region_code)) {
+ requester->OnRulesSuccessfullyLoaded();
+ } else {
+ // Setup the variables so that the sub-keys request is sent, when the rules
+ // are loaded.
+ pending_subkey_region_code_ = region_code;
+ pending_subkey_request_ = std::move(requester);
+ }
+}
+
+void PersonalDataManagerAndroid::CancelPendingGetSubKeys(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& unused_obj) {
+ pending_subkey_region_code_.clear();
+ pending_subkey_request_.reset();
+}
+
ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetProfileGUIDs(
JNIEnv* env,
const std::vector<AutofillProfile*>& profiles) {
@@ -760,7 +855,7 @@ ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetCreditCardGUIDs(
bool PersonalDataManagerAndroid::AreRulesLoadedForRegion(
const std::string& region_code) {
- return address_normalizer_.AreRulesLoadedForRegion(region_code);
+ return address_validator_.AreRulesLoadedForRegion(region_code);
}
ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetProfileLabels(
« 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