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

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

Issue 1899893002: Card unmasking without form filling (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Moar tests Created 4 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 8
9 #include "base/android/jni_array.h" 9 #include "base/android/jni_array.h"
10 #include "base/android/jni_string.h" 10 #include "base/android/jni_string.h"
11 #include "base/command_line.h" 11 #include "base/command_line.h"
12 #include "base/format_macros.h" 12 #include "base/format_macros.h"
13 #include "base/strings/stringprintf.h" 13 #include "base/strings/stringprintf.h"
14 #include "base/strings/utf_string_conversions.h" 14 #include "base/strings/utf_string_conversions.h"
15 #include "chrome/browser/android/resource_mapper.h" 15 #include "chrome/browser/android/resource_mapper.h"
16 #include "chrome/browser/autofill/personal_data_manager_factory.h" 16 #include "chrome/browser/autofill/personal_data_manager_factory.h"
17 #include "chrome/browser/browser_process.h" 17 #include "chrome/browser/browser_process.h"
18 #include "chrome/browser/profiles/profile.h" 18 #include "chrome/browser/profiles/profile.h"
19 #include "chrome/browser/profiles/profile_manager.h" 19 #include "chrome/browser/profiles/profile_manager.h"
20 #include "chrome/common/pref_names.h" 20 #include "chrome/common/pref_names.h"
21 #include "components/autofill/content/browser/content_autofill_driver.h"
22 #include "components/autofill/content/browser/content_autofill_driver_factory.h"
21 #include "components/autofill/core/browser/autofill_country.h" 23 #include "components/autofill/core/browser/autofill_country.h"
22 #include "components/autofill/core/browser/autofill_type.h" 24 #include "components/autofill/core/browser/autofill_type.h"
23 #include "components/autofill/core/browser/country_names.h" 25 #include "components/autofill/core/browser/country_names.h"
24 #include "components/autofill/core/browser/field_types.h" 26 #include "components/autofill/core/browser/field_types.h"
25 #include "components/autofill/core/browser/personal_data_manager.h" 27 #include "components/autofill/core/browser/personal_data_manager.h"
26 #include "components/autofill/core/common/autofill_pref_names.h" 28 #include "components/autofill/core/common/autofill_pref_names.h"
27 #include "components/autofill/core/common/autofill_switches.h" 29 #include "components/autofill/core/common/autofill_switches.h"
28 #include "components/prefs/pref_service.h" 30 #include "components/prefs/pref_service.h"
31 #include "content/public/browser/web_contents.h"
29 #include "jni/PersonalDataManager_jni.h" 32 #include "jni/PersonalDataManager_jni.h"
30 33
31 using base::android::ConvertJavaStringToUTF8; 34 using base::android::ConvertJavaStringToUTF8;
32 using base::android::ConvertUTF16ToJavaString; 35 using base::android::ConvertUTF16ToJavaString;
33 using base::android::ConvertUTF8ToJavaString; 36 using base::android::ConvertUTF8ToJavaString;
34 using base::android::ScopedJavaLocalRef; 37 using base::android::ScopedJavaLocalRef;
35 38
36 namespace autofill { 39 namespace autofill {
37 namespace { 40 namespace {
38 41
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 CREDIT_CARD_EXP_4_DIGIT_YEAR, 194 CREDIT_CARD_EXP_4_DIGIT_YEAR,
192 ConvertJavaStringToUTF16(Java_CreditCard_getYear(env, jcard))); 195 ConvertJavaStringToUTF16(Java_CreditCard_getYear(env, jcard)));
193 } 196 }
194 197
195 } // namespace 198 } // namespace
196 199
197 PersonalDataManagerAndroid::PersonalDataManagerAndroid(JNIEnv* env, 200 PersonalDataManagerAndroid::PersonalDataManagerAndroid(JNIEnv* env,
198 jobject obj) 201 jobject obj)
199 : weak_java_obj_(env, obj), 202 : weak_java_obj_(env, obj),
200 personal_data_manager_(PersonalDataManagerFactory::GetForProfile( 203 personal_data_manager_(PersonalDataManagerFactory::GetForProfile(
201 ProfileManager::GetActiveUserProfile())) { 204 ProfileManager::GetActiveUserProfile())),
205 weak_ptr_factory_(this) {
202 personal_data_manager_->AddObserver(this); 206 personal_data_manager_->AddObserver(this);
203 } 207 }
204 208
205 PersonalDataManagerAndroid::~PersonalDataManagerAndroid() { 209 PersonalDataManagerAndroid::~PersonalDataManagerAndroid() {
206 personal_data_manager_->RemoveObserver(this); 210 personal_data_manager_->RemoveObserver(this);
207 } 211 }
208 212
209 jint PersonalDataManagerAndroid::GetProfileCount( 213 jint PersonalDataManagerAndroid::GetProfileCount(
210 JNIEnv* unused_env, 214 JNIEnv* unused_env,
211 const JavaParamRef<jobject>& unused_obj) { 215 const JavaParamRef<jobject>& unused_obj) {
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 } 328 }
325 329
326 void PersonalDataManagerAndroid::ClearUnmaskedCache( 330 void PersonalDataManagerAndroid::ClearUnmaskedCache(
327 JNIEnv* env, 331 JNIEnv* env,
328 const JavaParamRef<jobject>& unused_obj, 332 const JavaParamRef<jobject>& unused_obj,
329 const JavaParamRef<jstring>& guid) { 333 const JavaParamRef<jstring>& guid) {
330 personal_data_manager_->ResetFullServerCard( 334 personal_data_manager_->ResetFullServerCard(
331 ConvertJavaStringToUTF8(env, guid)); 335 ConvertJavaStringToUTF8(env, guid));
332 } 336 }
333 337
338 void PersonalDataManagerAndroid::GetFullCardForPaymentRequest(
339 JNIEnv* env,
340 const JavaParamRef<jobject>& unused_obj,
341 const JavaParamRef<jobject>& web_contents_obj,
342 const JavaParamRef<jstring>& jguid) {
343 content::WebContents* contents =
344 content::WebContents::FromJavaWebContents(web_contents_obj);
345 if (!contents) {
346 OnFullCardError();
347 return;
348 }
349
350 ContentAutofillDriverFactory* factory =
351 ContentAutofillDriverFactory::FromWebContents(contents);
352 if (!factory) {
353 OnFullCardError();
354 return;
355 }
356
357 ContentAutofillDriver* driver =
358 factory->DriverForFrame(contents->GetMainFrame());
359 if (!driver) {
360 OnFullCardError();
361 return;
362 }
363
364 CreditCard* card = personal_data_manager_->GetCreditCardByGUID(
365 ConvertJavaStringToUTF8(env, jguid));
366 if (!card) {
367 OnFullCardError();
368 return;
369 }
370
371 driver->autofill_manager()->full_card_request()->GetFullCard(
372 *card, AutofillClient::UNMASK_FOR_PAYMENT_REQUEST,
373 weak_ptr_factory_.GetWeakPtr());
374 }
375
334 void PersonalDataManagerAndroid::OnPersonalDataChanged() { 376 void PersonalDataManagerAndroid::OnPersonalDataChanged() {
335 JNIEnv* env = base::android::AttachCurrentThread(); 377 JNIEnv* env = base::android::AttachCurrentThread();
336 if (weak_java_obj_.get(env).is_null()) 378 if (weak_java_obj_.get(env).is_null())
337 return; 379 return;
338 380
339 Java_PersonalDataManager_personalDataChanged(env, 381 Java_PersonalDataManager_personalDataChanged(env,
340 weak_java_obj_.get(env).obj()); 382 weak_java_obj_.get(env).obj());
341 } 383 }
342 384
343 // static 385 // static
344 bool PersonalDataManagerAndroid::Register(JNIEnv* env) { 386 bool PersonalDataManagerAndroid::Register(JNIEnv* env) {
345 return RegisterNativesImpl(env); 387 return RegisterNativesImpl(env);
346 } 388 }
347 389
390 void PersonalDataManagerAndroid::OnFullCardDetails(const CreditCard& card,
391 const base::string16& cvc) {
392 JNIEnv* env = base::android::AttachCurrentThread();
393 Java_PersonalDataManager_onFullCardDetails(
394 env, weak_java_obj_.get(env).obj(),
395 CreateJavaCreditCardFromNative(env, card).obj(),
396 base::android::ConvertUTF16ToJavaString(env, cvc).obj());
397 }
398
399 void PersonalDataManagerAndroid::OnFullCardError() {
400 JNIEnv* env = base::android::AttachCurrentThread();
401 Java_PersonalDataManager_onFullCardError(env, weak_java_obj_.get(env).obj());
402 }
403
348 // Returns whether the Autofill feature is enabled. 404 // Returns whether the Autofill feature is enabled.
349 static jboolean IsAutofillEnabled(JNIEnv* env, 405 static jboolean IsAutofillEnabled(JNIEnv* env,
350 const JavaParamRef<jclass>& clazz) { 406 const JavaParamRef<jclass>& clazz) {
351 return GetPrefs()->GetBoolean(autofill::prefs::kAutofillEnabled); 407 return GetPrefs()->GetBoolean(autofill::prefs::kAutofillEnabled);
352 } 408 }
353 409
354 // Enables or disables the Autofill feature. 410 // Enables or disables the Autofill feature.
355 static void SetAutofillEnabled(JNIEnv* env, 411 static void SetAutofillEnabled(JNIEnv* env,
356 const JavaParamRef<jclass>& clazz, 412 const JavaParamRef<jclass>& clazz,
357 jboolean enable) { 413 jboolean enable) {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 base::android::ConvertJavaStringToUTF16(env, jcountry_name))); 445 base::android::ConvertJavaStringToUTF16(env, jcountry_name)));
390 } 446 }
391 447
392 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { 448 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) {
393 PersonalDataManagerAndroid* personal_data_manager_android = 449 PersonalDataManagerAndroid* personal_data_manager_android =
394 new PersonalDataManagerAndroid(env, obj); 450 new PersonalDataManagerAndroid(env, obj);
395 return reinterpret_cast<intptr_t>(personal_data_manager_android); 451 return reinterpret_cast<intptr_t>(personal_data_manager_android);
396 } 452 }
397 453
398 } // namespace autofill 454 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698