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 #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 <memory> | 9 #include <memory> |
9 #include <utility> | 10 #include <utility> |
10 | 11 |
11 #include "base/android/jni_array.h" | 12 #include "base/android/jni_array.h" |
12 #include "base/android/jni_string.h" | 13 #include "base/android/jni_string.h" |
13 #include "base/command_line.h" | 14 #include "base/command_line.h" |
14 #include "base/format_macros.h" | 15 #include "base/format_macros.h" |
15 #include "base/memory/weak_ptr.h" | 16 #include "base/memory/weak_ptr.h" |
16 #include "base/strings/stringprintf.h" | 17 #include "base/strings/stringprintf.h" |
17 #include "base/strings/utf_string_conversions.h" | 18 #include "base/strings/utf_string_conversions.h" |
| 19 #include "base/time/time.h" |
18 #include "chrome/browser/android/resource_mapper.h" | 20 #include "chrome/browser/android/resource_mapper.h" |
19 #include "chrome/browser/autofill/personal_data_manager_factory.h" | 21 #include "chrome/browser/autofill/personal_data_manager_factory.h" |
20 #include "chrome/browser/browser_process.h" | 22 #include "chrome/browser/browser_process.h" |
21 #include "chrome/browser/profiles/profile.h" | 23 #include "chrome/browser/profiles/profile.h" |
22 #include "chrome/browser/profiles/profile_manager.h" | 24 #include "chrome/browser/profiles/profile_manager.h" |
23 #include "chrome/common/pref_names.h" | 25 #include "chrome/common/pref_names.h" |
24 #include "components/autofill/content/browser/content_autofill_driver.h" | 26 #include "components/autofill/content/browser/content_autofill_driver.h" |
25 #include "components/autofill/content/browser/content_autofill_driver_factory.h" | 27 #include "components/autofill/content/browser/content_autofill_driver_factory.h" |
26 #include "components/autofill/core/browser/autofill_country.h" | 28 #include "components/autofill/core/browser/autofill_country.h" |
27 #include "components/autofill/core/browser/autofill_type.h" | 29 #include "components/autofill/core/browser/autofill_type.h" |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
281 : weak_java_obj_(env, obj), | 283 : weak_java_obj_(env, obj), |
282 personal_data_manager_(PersonalDataManagerFactory::GetForProfile( | 284 personal_data_manager_(PersonalDataManagerFactory::GetForProfile( |
283 ProfileManager::GetActiveUserProfile())) { | 285 ProfileManager::GetActiveUserProfile())) { |
284 personal_data_manager_->AddObserver(this); | 286 personal_data_manager_->AddObserver(this); |
285 } | 287 } |
286 | 288 |
287 PersonalDataManagerAndroid::~PersonalDataManagerAndroid() { | 289 PersonalDataManagerAndroid::~PersonalDataManagerAndroid() { |
288 personal_data_manager_->RemoveObserver(this); | 290 personal_data_manager_->RemoveObserver(this); |
289 } | 291 } |
290 | 292 |
291 jint PersonalDataManagerAndroid::GetProfileCount( | 293 ScopedJavaLocalRef<jobjectArray> |
292 JNIEnv* unused_env, | 294 PersonalDataManagerAndroid::GetProfileGUIDsForSettings( |
| 295 JNIEnv* env, |
293 const JavaParamRef<jobject>& unused_obj) { | 296 const JavaParamRef<jobject>& unused_obj) { |
294 return personal_data_manager_->GetProfiles().size(); | 297 return GetProfileGUIDs(env, personal_data_manager_->GetProfiles()); |
295 } | 298 } |
296 | 299 |
297 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetProfileByIndex( | 300 ScopedJavaLocalRef<jobjectArray> |
| 301 PersonalDataManagerAndroid::GetProfileGUIDsToSuggest( |
298 JNIEnv* env, | 302 JNIEnv* env, |
299 const JavaParamRef<jobject>& unused_obj, | 303 const JavaParamRef<jobject>& unused_obj) { |
300 jint index) { | 304 return GetProfileGUIDs(env, personal_data_manager_->GetProfilesToSuggest()); |
301 const std::vector<AutofillProfile*>& profiles = | |
302 personal_data_manager_->GetProfiles(); | |
303 size_t index_size_t = static_cast<size_t>(index); | |
304 DCHECK_LT(index_size_t, profiles.size()); | |
305 return CreateJavaProfileFromNative(env, *profiles[index_size_t]); | |
306 } | 305 } |
307 | 306 |
308 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetProfileByGUID( | 307 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetProfileByGUID( |
309 JNIEnv* env, | 308 JNIEnv* env, |
310 const JavaParamRef<jobject>& unused_obj, | 309 const JavaParamRef<jobject>& unused_obj, |
311 const JavaParamRef<jstring>& jguid) { | 310 const JavaParamRef<jstring>& jguid) { |
312 AutofillProfile* profile = personal_data_manager_->GetProfileByGUID( | 311 AutofillProfile* profile = personal_data_manager_->GetProfileByGUID( |
313 ConvertJavaStringToUTF8(env, jguid)); | 312 ConvertJavaStringToUTF8(env, jguid)); |
314 if (!profile) | 313 if (!profile) |
315 return ScopedJavaLocalRef<jobject>(); | 314 return ScopedJavaLocalRef<jobject>(); |
(...skipping 15 matching lines...) Expand all Loading... |
331 if (guid.empty()) { | 330 if (guid.empty()) { |
332 personal_data_manager_->AddProfile(profile); | 331 personal_data_manager_->AddProfile(profile); |
333 } else { | 332 } else { |
334 profile.set_guid(guid); | 333 profile.set_guid(guid); |
335 personal_data_manager_->UpdateProfile(profile); | 334 personal_data_manager_->UpdateProfile(profile); |
336 } | 335 } |
337 | 336 |
338 return ConvertUTF8ToJavaString(env, profile.guid()); | 337 return ConvertUTF8ToJavaString(env, profile.guid()); |
339 } | 338 } |
340 | 339 |
| 340 ScopedJavaLocalRef<jobjectArray> |
| 341 PersonalDataManagerAndroid::GetProfileLabelsForSettings( |
| 342 JNIEnv* env, |
| 343 const JavaParamRef<jobject>& unused_obj) { |
| 344 return GetProfileLabels(env, false, personal_data_manager_->GetProfiles()); |
| 345 } |
| 346 |
| 347 ScopedJavaLocalRef<jobjectArray> |
| 348 PersonalDataManagerAndroid::GetProfileLabelsToSuggest( |
| 349 JNIEnv* env, |
| 350 const JavaParamRef<jobject>& unused_obj) { |
| 351 return GetProfileLabels(env, true, |
| 352 personal_data_manager_->GetProfilesToSuggest()); |
| 353 } |
| 354 |
| 355 base::android::ScopedJavaLocalRef<jobjectArray> |
| 356 PersonalDataManagerAndroid::GetCreditCardGUIDsForSettings( |
| 357 JNIEnv* env, |
| 358 const base::android::JavaParamRef<jobject>& unused_obj) { |
| 359 return GetCreditCardGUIDs(env, personal_data_manager_->GetCreditCards()); |
| 360 } |
| 361 |
| 362 base::android::ScopedJavaLocalRef<jobjectArray> |
| 363 PersonalDataManagerAndroid::GetCreditCardGUIDsToSuggest( |
| 364 JNIEnv* env, |
| 365 const base::android::JavaParamRef<jobject>& unused_obj) { |
| 366 return GetCreditCardGUIDs(env, |
| 367 personal_data_manager_->GetCreditCardsToSuggest()); |
| 368 } |
| 369 |
| 370 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetCreditCardByGUID( |
| 371 JNIEnv* env, |
| 372 const JavaParamRef<jobject>& unused_obj, |
| 373 const JavaParamRef<jstring>& jguid) { |
| 374 CreditCard* card = personal_data_manager_->GetCreditCardByGUID( |
| 375 ConvertJavaStringToUTF8(env, jguid)); |
| 376 if (!card) |
| 377 return ScopedJavaLocalRef<jobject>(); |
| 378 |
| 379 return CreateJavaCreditCardFromNative(env, *card); |
| 380 } |
| 381 |
| 382 ScopedJavaLocalRef<jstring> PersonalDataManagerAndroid::SetCreditCard( |
| 383 JNIEnv* env, |
| 384 const JavaParamRef<jobject>& unused_obj, |
| 385 const JavaParamRef<jobject>& jcard) { |
| 386 std::string guid = ConvertJavaStringToUTF8( |
| 387 env, |
| 388 Java_CreditCard_getGUID(env, jcard).obj()); |
| 389 |
| 390 CreditCard card; |
| 391 PopulateNativeCreditCardFromJava(jcard, env, &card); |
| 392 |
| 393 if (guid.empty()) { |
| 394 personal_data_manager_->AddCreditCard(card); |
| 395 } else { |
| 396 card.set_guid(guid); |
| 397 personal_data_manager_->UpdateCreditCard(card); |
| 398 } |
| 399 return ConvertUTF8ToJavaString(env, card.guid()); |
| 400 } |
| 401 |
| 402 void PersonalDataManagerAndroid::AddServerCreditCardForTest( |
| 403 JNIEnv* env, |
| 404 const base::android::JavaParamRef<jobject>& unused_obj, |
| 405 const base::android::JavaParamRef<jobject>& jcard) { |
| 406 std::unique_ptr<CreditCard> card(new CreditCard); |
| 407 PopulateNativeCreditCardFromJava(jcard, env, card.get()); |
| 408 card->set_record_type(CreditCard::MASKED_SERVER_CARD); |
| 409 personal_data_manager_->AddServerCreditCardForTest(std::move(card)); |
| 410 } |
| 411 |
| 412 void PersonalDataManagerAndroid::RemoveByGUID( |
| 413 JNIEnv* env, |
| 414 const JavaParamRef<jobject>& unused_obj, |
| 415 const JavaParamRef<jstring>& jguid) { |
| 416 personal_data_manager_->RemoveByGUID(ConvertJavaStringToUTF8(env, jguid)); |
| 417 } |
| 418 |
| 419 void PersonalDataManagerAndroid::ClearUnmaskedCache( |
| 420 JNIEnv* env, |
| 421 const JavaParamRef<jobject>& unused_obj, |
| 422 const JavaParamRef<jstring>& guid) { |
| 423 personal_data_manager_->ResetFullServerCard( |
| 424 ConvertJavaStringToUTF8(env, guid)); |
| 425 } |
| 426 |
| 427 void PersonalDataManagerAndroid::GetFullCardForPaymentRequest( |
| 428 JNIEnv* env, |
| 429 const JavaParamRef<jobject>& unused_obj, |
| 430 const JavaParamRef<jobject>& jweb_contents, |
| 431 const JavaParamRef<jstring>& jguid, |
| 432 const JavaParamRef<jobject>& jdelegate) { |
| 433 // Self-deleting object. |
| 434 (new FullCardRequester()) |
| 435 ->GetFullCard(env, jweb_contents, jdelegate, |
| 436 personal_data_manager_->GetCreditCardByGUID( |
| 437 ConvertJavaStringToUTF8(env, jguid))); |
| 438 } |
| 439 |
| 440 void PersonalDataManagerAndroid::OnPersonalDataChanged() { |
| 441 JNIEnv* env = base::android::AttachCurrentThread(); |
| 442 if (weak_java_obj_.get(env).is_null()) |
| 443 return; |
| 444 |
| 445 Java_PersonalDataManager_personalDataChanged(env, |
| 446 weak_java_obj_.get(env).obj()); |
| 447 } |
| 448 |
| 449 // static |
| 450 bool PersonalDataManagerAndroid::Register(JNIEnv* env) { |
| 451 return RegisterNativesImpl(env); |
| 452 } |
| 453 |
| 454 void PersonalDataManagerAndroid::SetProfileUseStatsForTesting( |
| 455 JNIEnv* env, |
| 456 const JavaParamRef<jobject>& unused_obj, |
| 457 const JavaParamRef<jstring>& jguid, |
| 458 jint count, |
| 459 jint date) { |
| 460 DCHECK(count >= 0 && date >= 0); |
| 461 |
| 462 AutofillProfile* profile = personal_data_manager_->GetProfileByGUID( |
| 463 ConvertJavaStringToUTF8(env, jguid)); |
| 464 if (!profile) |
| 465 return; |
| 466 |
| 467 profile->set_use_count(static_cast<size_t>(count)); |
| 468 profile->set_use_date(base::Time::FromTimeT(date)); |
| 469 } |
| 470 |
| 471 void PersonalDataManagerAndroid::SetCreditCardUseStatsForTesting( |
| 472 JNIEnv* env, |
| 473 const JavaParamRef<jobject>& unused_obj, |
| 474 const JavaParamRef<jstring>& jguid, |
| 475 jint count, |
| 476 jint date) { |
| 477 DCHECK(count >= 0 && date >= 0); |
| 478 |
| 479 CreditCard* card = personal_data_manager_->GetCreditCardByGUID( |
| 480 ConvertJavaStringToUTF8(env, jguid)); |
| 481 if (!card) |
| 482 return; |
| 483 |
| 484 card->set_use_count(static_cast<size_t>(count)); |
| 485 card->set_use_date(base::Time::FromTimeT(date)); |
| 486 } |
| 487 |
| 488 ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetProfileGUIDs( |
| 489 JNIEnv* env, |
| 490 const std::vector<AutofillProfile*>& profiles) { |
| 491 std::vector<base::string16> guids; |
| 492 for (AutofillProfile* profile : profiles) |
| 493 guids.push_back(base::UTF8ToUTF16(profile->guid())); |
| 494 |
| 495 return base::android::ToJavaArrayOfStrings(env, guids); |
| 496 } |
| 497 |
| 498 ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetCreditCardGUIDs( |
| 499 JNIEnv* env, |
| 500 const std::vector<CreditCard*>& credit_cards) { |
| 501 std::vector<base::string16> guids; |
| 502 for (CreditCard* credit_card : credit_cards) |
| 503 guids.push_back(base::UTF8ToUTF16(credit_card->guid())); |
| 504 |
| 505 return base::android::ToJavaArrayOfStrings(env, guids); |
| 506 } |
| 507 |
341 ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetProfileLabels( | 508 ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetProfileLabels( |
342 JNIEnv* env, | 509 JNIEnv* env, |
343 const JavaParamRef<jobject>& unused_obj, | 510 bool address_only, |
344 bool address_only) { | 511 std::vector<AutofillProfile*> profiles) { |
345 std::unique_ptr<std::vector<ServerFieldType>> suggested_fields; | 512 std::unique_ptr<std::vector<ServerFieldType>> suggested_fields; |
346 size_t minimal_fields_shown = 2; | 513 size_t minimal_fields_shown = 2; |
347 if (address_only) { | 514 if (address_only) { |
348 suggested_fields.reset(new std::vector<ServerFieldType>); | 515 suggested_fields.reset(new std::vector<ServerFieldType>); |
349 suggested_fields->push_back(COMPANY_NAME); | 516 suggested_fields->push_back(COMPANY_NAME); |
350 suggested_fields->push_back(ADDRESS_HOME_LINE1); | 517 suggested_fields->push_back(ADDRESS_HOME_LINE1); |
351 suggested_fields->push_back(ADDRESS_HOME_LINE2); | 518 suggested_fields->push_back(ADDRESS_HOME_LINE2); |
352 suggested_fields->push_back(ADDRESS_HOME_DEPENDENT_LOCALITY); | 519 suggested_fields->push_back(ADDRESS_HOME_DEPENDENT_LOCALITY); |
353 suggested_fields->push_back(ADDRESS_HOME_CITY); | 520 suggested_fields->push_back(ADDRESS_HOME_CITY); |
354 suggested_fields->push_back(ADDRESS_HOME_STATE); | 521 suggested_fields->push_back(ADDRESS_HOME_STATE); |
355 suggested_fields->push_back(ADDRESS_HOME_ZIP); | 522 suggested_fields->push_back(ADDRESS_HOME_ZIP); |
356 suggested_fields->push_back(ADDRESS_HOME_SORTING_CODE); | 523 suggested_fields->push_back(ADDRESS_HOME_SORTING_CODE); |
357 suggested_fields->push_back(ADDRESS_HOME_COUNTRY); | 524 suggested_fields->push_back(ADDRESS_HOME_COUNTRY); |
358 minimal_fields_shown = suggested_fields->size(); | 525 minimal_fields_shown = suggested_fields->size(); |
359 } | 526 } |
360 | 527 |
361 std::vector<base::string16> labels; | 528 std::vector<base::string16> labels; |
362 AutofillProfile::CreateInferredLabels( | 529 AutofillProfile::CreateInferredLabels( |
363 personal_data_manager_->GetProfiles(), suggested_fields.get(), NAME_FULL, | 530 profiles, suggested_fields.get(), NAME_FULL, minimal_fields_shown, |
364 minimal_fields_shown, g_browser_process->GetApplicationLocale(), &labels); | 531 g_browser_process->GetApplicationLocale(), &labels); |
365 | 532 |
366 return base::android::ToJavaArrayOfStrings(env, labels); | 533 return base::android::ToJavaArrayOfStrings(env, labels); |
367 } | 534 } |
368 | 535 |
369 jint PersonalDataManagerAndroid::GetCreditCardCount( | |
370 JNIEnv* unused_env, | |
371 const JavaParamRef<jobject>& unused_obj) { | |
372 return personal_data_manager_->GetCreditCards().size(); | |
373 } | |
374 | |
375 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetCreditCardByIndex( | |
376 JNIEnv* env, | |
377 const JavaParamRef<jobject>& unused_obj, | |
378 jint index) { | |
379 const std::vector<CreditCard*>& credit_cards = | |
380 personal_data_manager_->GetCreditCards(); | |
381 size_t index_size_t = static_cast<size_t>(index); | |
382 DCHECK_LT(index_size_t, credit_cards.size()); | |
383 return CreateJavaCreditCardFromNative(env, *credit_cards[index_size_t]); | |
384 } | |
385 | |
386 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetCreditCardByGUID( | |
387 JNIEnv* env, | |
388 const JavaParamRef<jobject>& unused_obj, | |
389 const JavaParamRef<jstring>& jguid) { | |
390 CreditCard* card = personal_data_manager_->GetCreditCardByGUID( | |
391 ConvertJavaStringToUTF8(env, jguid)); | |
392 if (!card) | |
393 return ScopedJavaLocalRef<jobject>(); | |
394 | |
395 return CreateJavaCreditCardFromNative(env, *card); | |
396 } | |
397 | |
398 ScopedJavaLocalRef<jstring> PersonalDataManagerAndroid::SetCreditCard( | |
399 JNIEnv* env, | |
400 const JavaParamRef<jobject>& unused_obj, | |
401 const JavaParamRef<jobject>& jcard) { | |
402 std::string guid = ConvertJavaStringToUTF8( | |
403 env, | |
404 Java_CreditCard_getGUID(env, jcard).obj()); | |
405 | |
406 CreditCard card; | |
407 PopulateNativeCreditCardFromJava(jcard, env, &card); | |
408 | |
409 if (guid.empty()) { | |
410 personal_data_manager_->AddCreditCard(card); | |
411 } else { | |
412 card.set_guid(guid); | |
413 personal_data_manager_->UpdateCreditCard(card); | |
414 } | |
415 return ConvertUTF8ToJavaString(env, card.guid()); | |
416 } | |
417 | |
418 void PersonalDataManagerAndroid::AddServerCreditCardForTest( | |
419 JNIEnv* env, | |
420 const base::android::JavaParamRef<jobject>& unused_obj, | |
421 const base::android::JavaParamRef<jobject>& jcard) { | |
422 std::unique_ptr<CreditCard> card(new CreditCard); | |
423 PopulateNativeCreditCardFromJava(jcard, env, card.get()); | |
424 card->set_record_type(CreditCard::MASKED_SERVER_CARD); | |
425 personal_data_manager_->AddServerCreditCardForTest(std::move(card)); | |
426 } | |
427 | |
428 void PersonalDataManagerAndroid::RemoveByGUID( | |
429 JNIEnv* env, | |
430 const JavaParamRef<jobject>& unused_obj, | |
431 const JavaParamRef<jstring>& jguid) { | |
432 personal_data_manager_->RemoveByGUID(ConvertJavaStringToUTF8(env, jguid)); | |
433 } | |
434 | |
435 void PersonalDataManagerAndroid::ClearUnmaskedCache( | |
436 JNIEnv* env, | |
437 const JavaParamRef<jobject>& unused_obj, | |
438 const JavaParamRef<jstring>& guid) { | |
439 personal_data_manager_->ResetFullServerCard( | |
440 ConvertJavaStringToUTF8(env, guid)); | |
441 } | |
442 | |
443 void PersonalDataManagerAndroid::GetFullCardForPaymentRequest( | |
444 JNIEnv* env, | |
445 const JavaParamRef<jobject>& unused_obj, | |
446 const JavaParamRef<jobject>& jweb_contents, | |
447 const JavaParamRef<jstring>& jguid, | |
448 const JavaParamRef<jobject>& jdelegate) { | |
449 // Self-deleting object. | |
450 (new FullCardRequester()) | |
451 ->GetFullCard(env, jweb_contents, jdelegate, | |
452 personal_data_manager_->GetCreditCardByGUID( | |
453 ConvertJavaStringToUTF8(env, jguid))); | |
454 } | |
455 | |
456 void PersonalDataManagerAndroid::OnPersonalDataChanged() { | |
457 JNIEnv* env = base::android::AttachCurrentThread(); | |
458 if (weak_java_obj_.get(env).is_null()) | |
459 return; | |
460 | |
461 Java_PersonalDataManager_personalDataChanged(env, | |
462 weak_java_obj_.get(env).obj()); | |
463 } | |
464 | |
465 // static | |
466 bool PersonalDataManagerAndroid::Register(JNIEnv* env) { | |
467 return RegisterNativesImpl(env); | |
468 } | |
469 | |
470 // Returns whether the Autofill feature is enabled. | 536 // Returns whether the Autofill feature is enabled. |
471 static jboolean IsAutofillEnabled(JNIEnv* env, | 537 static jboolean IsAutofillEnabled(JNIEnv* env, |
472 const JavaParamRef<jclass>& clazz) { | 538 const JavaParamRef<jclass>& clazz) { |
473 return GetPrefs()->GetBoolean(autofill::prefs::kAutofillEnabled); | 539 return GetPrefs()->GetBoolean(autofill::prefs::kAutofillEnabled); |
474 } | 540 } |
475 | 541 |
476 // Enables or disables the Autofill feature. | 542 // Enables or disables the Autofill feature. |
477 static void SetAutofillEnabled(JNIEnv* env, | 543 static void SetAutofillEnabled(JNIEnv* env, |
478 const JavaParamRef<jclass>& clazz, | 544 const JavaParamRef<jclass>& clazz, |
479 jboolean enable) { | 545 jboolean enable) { |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
511 base::android::ConvertJavaStringToUTF16(env, jcountry_name))); | 577 base::android::ConvertJavaStringToUTF16(env, jcountry_name))); |
512 } | 578 } |
513 | 579 |
514 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { | 580 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { |
515 PersonalDataManagerAndroid* personal_data_manager_android = | 581 PersonalDataManagerAndroid* personal_data_manager_android = |
516 new PersonalDataManagerAndroid(env, obj); | 582 new PersonalDataManagerAndroid(env, obj); |
517 return reinterpret_cast<intptr_t>(personal_data_manager_android); | 583 return reinterpret_cast<intptr_t>(personal_data_manager_android); |
518 } | 584 } |
519 | 585 |
520 } // namespace autofill | 586 } // namespace autofill |
OLD | NEW |