Chromium Code Reviews| 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 #ifndef CHROME_BROWSER_AUTOFILL_ANDROID_PERSONAL_DATA_MANAGER_ANDROID_H_ | 5 #ifndef CHROME_BROWSER_AUTOFILL_ANDROID_PERSONAL_DATA_MANAGER_ANDROID_H_ |
| 6 #define CHROME_BROWSER_AUTOFILL_ANDROID_PERSONAL_DATA_MANAGER_ANDROID_H_ | 6 #define CHROME_BROWSER_AUTOFILL_ANDROID_PERSONAL_DATA_MANAGER_ANDROID_H_ |
| 7 | 7 |
| 8 #include <map> | |
|
sebsg
2017/02/28 16:14:00
Needed?
Parastoo
2017/03/21 14:30:44
Not really. It was either suggested by git cl form
| |
| 9 #include <memory> | |
| 10 #include <string> | |
| 11 #include <vector> | |
| 12 | |
| 8 #include "base/android/jni_weak_ref.h" | 13 #include "base/android/jni_weak_ref.h" |
| 9 #include "base/android/scoped_java_ref.h" | 14 #include "base/android/scoped_java_ref.h" |
| 10 #include "base/macros.h" | 15 #include "base/macros.h" |
| 11 #include "base/memory/weak_ptr.h" | 16 #include "base/memory/weak_ptr.h" |
| 12 #include "components/autofill/core/browser/personal_data_manager.h" | 17 #include "components/autofill/core/browser/personal_data_manager.h" |
| 13 #include "components/autofill/core/browser/personal_data_manager_observer.h" | 18 #include "components/autofill/core/browser/personal_data_manager_observer.h" |
| 14 #include "components/payments/address_normalizer.h" | 19 #include "components/payments/address_normalizer.h" |
| 20 #include "third_party/libaddressinput/chromium/chrome_address_validator.h" | |
| 15 | 21 |
| 16 namespace autofill { | 22 namespace autofill { |
| 17 | 23 |
| 18 // Android wrapper of the PersonalDataManager which provides access from the | 24 // Android wrapper of the PersonalDataManager which provides access from the |
| 19 // Java layer. Note that on Android, there's only a single profile, and | 25 // Java layer. Note that on Android, there's only a single profile, and |
| 20 // therefore a single instance of this wrapper. | 26 // therefore a single instance of this wrapper. |
| 21 class PersonalDataManagerAndroid : public PersonalDataManagerObserver { | 27 class PersonalDataManagerAndroid |
| 28 : public PersonalDataManagerObserver, | |
| 29 public LoadRulesListener, | |
| 30 public base::SupportsWeakPtr<PersonalDataManagerAndroid> { | |
| 22 public: | 31 public: |
| 32 // The interface for the sub-key request. | |
| 33 class Delegate { | |
| 34 public: | |
| 35 virtual void OnRulesSuccessfullyLoaded() = 0; | |
| 36 virtual ~Delegate() {} | |
| 37 }; | |
| 38 | |
| 23 PersonalDataManagerAndroid(JNIEnv* env, jobject obj); | 39 PersonalDataManagerAndroid(JNIEnv* env, jobject obj); |
| 24 | 40 |
| 25 // Returns true if personal data manager has loaded the initial data. | 41 // Returns true if personal data manager has loaded the initial data. |
| 26 jboolean IsDataLoaded( | 42 jboolean IsDataLoaded( |
| 27 JNIEnv* env, | 43 JNIEnv* env, |
| 28 const base::android::JavaParamRef<jobject>& unused_obj) const; | 44 const base::android::JavaParamRef<jobject>& unused_obj) const; |
| 29 | 45 |
| 30 // These functions act on "web profiles" aka "LOCAL_PROFILE" profiles. | 46 // These functions act on "web profiles" aka "LOCAL_PROFILE" profiles. |
| 31 // ------------------------- | 47 // ------------------------- |
| 32 | 48 |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 277 // more details see the comment header in time.h | 293 // more details see the comment header in time.h |
| 278 jlong GetCurrentDateForTesting( | 294 jlong GetCurrentDateForTesting( |
| 279 JNIEnv* env, | 295 JNIEnv* env, |
| 280 const base::android::JavaParamRef<jobject>& unused_obj); | 296 const base::android::JavaParamRef<jobject>& unused_obj); |
| 281 | 297 |
| 282 // These functions help address normalization. | 298 // These functions help address normalization. |
| 283 // -------------------- | 299 // -------------------- |
| 284 | 300 |
| 285 // Starts loading the address validation rules for the specified | 301 // Starts loading the address validation rules for the specified |
| 286 // |region_code|. | 302 // |region_code|. |
| 287 void LoadRulesForRegion( | 303 void LoadRulesForAddressNormalization( |
| 288 JNIEnv* env, | 304 JNIEnv* env, |
| 289 const base::android::JavaParamRef<jobject>& unused_obj, | 305 const base::android::JavaParamRef<jobject>& unused_obj, |
| 290 const base::android::JavaParamRef<jstring>& region_code); | 306 const base::android::JavaParamRef<jstring>& region_code); |
| 307 | |
| 308 // Starts loading the rules for the specified |region_code| for the further | |
| 309 // sub-key request. | |
| 310 void LoadRulesForSubKeys( | |
| 311 JNIEnv* env, | |
| 312 const base::android::JavaParamRef<jobject>& unused_obj, | |
| 313 const base::android::JavaParamRef<jstring>& region_code); | |
| 291 | 314 |
| 292 // Normalizes the address of the profile associated with the |jguid| | 315 // Normalizes the address of the profile associated with the |jguid| |
| 293 // synchronously if the |jregion_code| rules have finished loading. Otherwise | 316 // synchronously if the |jregion_code| rules have finished loading. Otherwise |
| 294 // sets up the task to start the address normalization when the rules have | 317 // sets up the task to start the address normalization when the rules have |
| 295 // finished loading. Also defines a time limit for the normalization, in which | 318 // finished loading. Also defines a time limit for the normalization, in which |
| 296 // case the the |jdelegate| will be notified. If the rules are loaded before | 319 // case the the |jdelegate| will be notified. If the rules are loaded before |
| 297 // the timeout, |jdelegate| will receive the normalized profile. | 320 // the timeout, |jdelegate| will receive the normalized profile. |
| 298 void StartAddressNormalization( | 321 void StartAddressNormalization( |
| 299 JNIEnv* env, | 322 JNIEnv* env, |
| 300 const base::android::JavaParamRef<jobject>& unused_obj, | 323 const base::android::JavaParamRef<jobject>& unused_obj, |
| 301 const base::android::JavaParamRef<jstring>& jguid, | 324 const base::android::JavaParamRef<jstring>& jguid, |
| 302 const base::android::JavaParamRef<jstring>& jregion_code, | 325 const base::android::JavaParamRef<jstring>& jregion_code, |
| 303 jint jtimeout_seconds, | 326 jint jtimeout_seconds, |
| 304 const base::android::JavaParamRef<jobject>& jdelegate); | 327 const base::android::JavaParamRef<jobject>& jdelegate); |
| 305 | 328 |
| 306 // Checks whether the Autofill PersonalDataManager has profiles. | 329 // Checks whether the Autofill PersonalDataManager has profiles. |
| 307 jboolean HasProfiles(JNIEnv* env, | 330 jboolean HasProfiles(JNIEnv* env, |
| 308 const base::android::JavaParamRef<jobject>& unused_obj); | 331 const base::android::JavaParamRef<jobject>& unused_obj); |
| 309 | 332 |
| 310 // Checks whether the Autofill PersonalDataManager has credit cards. | 333 // Checks whether the Autofill PersonalDataManager has credit cards. |
| 311 jboolean HasCreditCards( | 334 jboolean HasCreditCards( |
| 312 JNIEnv* env, | 335 JNIEnv* env, |
| 313 const base::android::JavaParamRef<jobject>& unused_obj); | 336 const base::android::JavaParamRef<jobject>& unused_obj); |
| 314 | 337 |
| 338 // Gets the sub-keys for the region with |jregion_code| code, if the | |
| 339 // |jregion_code| rules have finished loading. Otherwise, sets up a task to | |
| 340 // get the sub-keys, when the rules are loaded. | |
| 341 void StartGettingRegionSubKeys( | |
| 342 JNIEnv* env, | |
| 343 const base::android::JavaParamRef<jobject>& unused_obj, | |
| 344 const base::android::JavaParamRef<jstring>& jregion_code, | |
| 345 const base::android::JavaParamRef<jobject>& jdelegate); | |
| 346 | |
| 347 // Gets the sub-keys of the rule associated with |jregion_code|. Should only | |
| 348 // be called when the rules are loaded. | |
| 349 base::android::ScopedJavaLocalRef<jobjectArray> GetSubKeys( | |
| 350 JNIEnv* env, | |
| 351 const std::string& jregion_code); | |
| 352 | |
| 353 // Callback of the sub-keys request. | |
| 354 // This is called when the sub-keys are loaded. | |
| 355 void OnAddressRulesLoaded(const std::string& region_code, | |
| 356 bool success) override; | |
| 357 | |
| 358 // Cancels the pending sub-key request task. | |
| 359 void CancelPendingGetSubKeys( | |
| 360 JNIEnv* env, | |
| 361 const base::android::JavaParamRef<jobject>& unused_obj); | |
| 362 | |
| 315 private: | 363 private: |
| 316 ~PersonalDataManagerAndroid() override; | 364 ~PersonalDataManagerAndroid() override; |
| 317 | 365 |
| 318 // Returns the GUIDs of the |profiles| passed as parameter. | 366 // Returns the GUIDs of the |profiles| passed as parameter. |
| 319 base::android::ScopedJavaLocalRef<jobjectArray> GetProfileGUIDs( | 367 base::android::ScopedJavaLocalRef<jobjectArray> GetProfileGUIDs( |
| 320 JNIEnv* env, | 368 JNIEnv* env, |
| 321 const std::vector<AutofillProfile*>& profiles); | 369 const std::vector<AutofillProfile*>& profiles); |
| 322 | 370 |
| 323 // Returns the GUIDs of the |credit_cards| passed as parameter. | 371 // Returns the GUIDs of the |credit_cards| passed as parameter. |
| 324 base::android::ScopedJavaLocalRef<jobjectArray> GetCreditCardGUIDs( | 372 base::android::ScopedJavaLocalRef<jobjectArray> GetCreditCardGUIDs( |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 355 | 403 |
| 356 // Pointer to the java counterpart. | 404 // Pointer to the java counterpart. |
| 357 JavaObjectWeakGlobalRef weak_java_obj_; | 405 JavaObjectWeakGlobalRef weak_java_obj_; |
| 358 | 406 |
| 359 // Pointer to the PersonalDataManager for the main profile. | 407 // Pointer to the PersonalDataManager for the main profile. |
| 360 PersonalDataManager* personal_data_manager_; | 408 PersonalDataManager* personal_data_manager_; |
| 361 | 409 |
| 362 // The address validator used to normalize addresses. | 410 // The address validator used to normalize addresses. |
| 363 payments::AddressNormalizer address_normalizer_; | 411 payments::AddressNormalizer address_normalizer_; |
| 364 | 412 |
| 413 AddressValidator address_validator_; | |
|
sebsg
2017/02/28 16:14:00
Add comment that this is used for the sub keys.
Parastoo
2017/03/21 14:30:44
Done.
| |
| 414 | |
| 415 // Map associating a region code to pending sub-keys' request. | |
| 416 std::map<std::string, std::vector<std::unique_ptr<Delegate>>> | |
|
sebsg
2017/02/28 16:14:00
Like mentioned in another comment, maybe we can si
Parastoo
2017/03/21 14:30:44
Done.
| |
| 417 pending_subkeys_request_; | |
| 418 | |
| 365 DISALLOW_COPY_AND_ASSIGN(PersonalDataManagerAndroid); | 419 DISALLOW_COPY_AND_ASSIGN(PersonalDataManagerAndroid); |
| 366 }; | 420 }; |
| 367 | 421 |
| 368 } // namespace autofill | 422 } // namespace autofill |
| 369 | 423 |
| 370 #endif // CHROME_BROWSER_AUTOFILL_ANDROID_PERSONAL_DATA_MANAGER_ANDROID_H_ | 424 #endif // CHROME_BROWSER_AUTOFILL_ANDROID_PERSONAL_DATA_MANAGER_ANDROID_H_ |
| OLD | NEW |