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

Side by Side Diff: components/autofill/android/form_data_android.cc

Issue 2745803003: autofill-try
Patch Set: autofill-try Created 3 years, 6 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
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "components/autofill/android/form_data_android.h"
6
7 #include "base/android/jni_string.h"
8 #include "components/autofill/android/form_field_data_android.h"
9 #include "jni/FormData_jni.h"
10
11 using base::android::AttachCurrentThread;
12 using base::android::ConvertJavaStringToUTF16;
13 using base::android::ConvertUTF16ToJavaString;
14 using base::android::ConvertUTF8ToJavaString;
15 using base::android::JavaParamRef;
16 using base::android::ScopedJavaGlobalRef;
17 using base::android::ScopedJavaLocalRef;
18
19 namespace autofill {
20
21 FormDataAndroid::FormDataAndroid(const FormData& form)
22 : form_(form), index_(0) {}
23
24 FormDataAndroid::~FormDataAndroid() {
25 JNIEnv* env = AttachCurrentThread();
26 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
27 if (obj.is_null())
28 return;
29
30 Java_FormData_onNativeDestroyed(env, obj);
31 }
32
33 ScopedJavaLocalRef<jobject> FormDataAndroid::GetJavaPeer() {
34 JNIEnv* env = AttachCurrentThread();
35 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
36 if (obj.is_null()) {
37 for (size_t i = 0; i < form_.fields.size(); ++i) {
38 fields_.push_back(std::unique_ptr<FormFieldDataAndroid>(
39 new FormFieldDataAndroid(&form_.fields[i])));
40 }
41 ScopedJavaLocalRef<jstring> jname =
42 ConvertUTF16ToJavaString(env, form_.name);
43 ScopedJavaLocalRef<jstring> jhost =
44 ConvertUTF8ToJavaString(env, form_.origin.host());
45 obj = Java_FormData_createFormData(env, reinterpret_cast<intptr_t>(this),
46 jname, jhost, form_.fields.size());
47 java_ref_ = JavaObjectWeakGlobalRef(env, obj);
48 }
49 return obj;
50 }
51
52 const FormData& FormDataAndroid::GetAutofillValues() {
53 for (std::unique_ptr<FormFieldDataAndroid>& field : fields_)
54 field->GetValue();
55 return form_;
56 }
57
58 ScopedJavaLocalRef<jobject> FormDataAndroid::GetNextFormFieldData(
59 JNIEnv* env,
60 const JavaParamRef<jobject>& jcaller) {
61 DCHECK(index_ <= fields_.size());
62 if (index_ == fields_.size())
63 return ScopedJavaLocalRef<jobject>();
64 return fields_[index_++]->GetJavaPeer();
65 }
66
67 void FormDataAndroid::OnTextFieldDidChange(size_t index,
68 const base::string16& value) {
69 form_.fields[index].value = value;
70 fields_[index]->OnTextFieldDidChange(value);
71 }
72
73 bool FormDataAndroid::GetFieldIndex(const FormFieldData& field, size_t* index) {
74 for (size_t i = 0; i < form_.fields.size(); ++i) {
75 if (form_.fields[i].SameFieldAs(field)) {
76 *index = i;
77 return true;
78 }
79 }
80 return false;
81 }
82
83 bool FormDataAndroid::GetSimilarFieldIndex(const FormFieldData& field,
84 size_t* index) {
85 for (size_t i = 0; i < form_.fields.size(); ++i) {
86 if (form_.fields[i].SimilarFieldAs(field)) {
87 *index = i;
88 return true;
89 }
90 }
91 return false;
92 }
93
94 bool FormDataAndroid::SimilarFormAs(const FormData& form) {
95 return form_.SimilarFormAs(form);
96 }
97
98 bool RegisterFormDataAndroid(JNIEnv* env) {
99 return RegisterNativesImpl(env);
100 }
101
102 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/android/form_data_android.h ('k') | components/autofill/android/form_field_data_android.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698