Chromium Code Reviews| Index: components/autofill/android/form_field_data_android.cc |
| diff --git a/components/autofill/android/form_field_data_android.cc b/components/autofill/android/form_field_data_android.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..95dbb5ee192ba4cfe95db54b33496cd6d6bdbf4b |
| --- /dev/null |
| +++ b/components/autofill/android/form_field_data_android.cc |
| @@ -0,0 +1,76 @@ |
| +// Copyright 2017 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "components/autofill/android/form_field_data_android.h" |
| + |
| +#include "base/android/jni_string.h" |
| +#include "jni/FormFieldData_jni.h" |
| + |
| +using base::android::AttachCurrentThread; |
| +using base::android::ConvertJavaStringToUTF16; |
| +using base::android::ConvertUTF16ToJavaString; |
| +using base::android::ConvertUTF8ToJavaString; |
| +using base::android::JavaParamRef; |
| +using base::android::JavaRef; |
| +using base::android::ScopedJavaGlobalRef; |
| +using base::android::ScopedJavaLocalRef; |
| + |
| +namespace autofill { |
| + |
| +FormFieldDataAndroid::FormFieldDataAndroid(FormFieldData* field) |
| + : field_ptr_(field) {} |
| + |
| +ScopedJavaLocalRef<jobject> FormFieldDataAndroid::GetJavaPeer() { |
| + JNIEnv* env = AttachCurrentThread(); |
| + ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
| + if (obj.is_null()) { |
| + ScopedJavaLocalRef<jstring> jname = |
| + ConvertUTF16ToJavaString(env, field_ptr_->name); |
| + ScopedJavaLocalRef<jstring> jlabel = |
| + ConvertUTF16ToJavaString(env, field_ptr_->label); |
| + ScopedJavaLocalRef<jstring> jvalue = |
| + ConvertUTF16ToJavaString(env, field_ptr_->value); |
| + ScopedJavaLocalRef<jstring> jautocompleteAttr = |
| + ConvertUTF8ToJavaString(env, field_ptr_->autocomplete_attribute); |
| + ScopedJavaLocalRef<jstring> jplaceholder = |
| + ConvertUTF16ToJavaString(env, field_ptr_->placeholder); |
| + ScopedJavaLocalRef<jstring> jid = |
| + ConvertUTF16ToJavaString(env, field_ptr_->id); |
| + ScopedJavaLocalRef<jstring> jtype = |
| + ConvertUTF8ToJavaString(env, field_ptr_->form_control_type); |
| + |
| + obj = Java_FormFieldData_createFormFieldData( |
| + env, jname, jlabel, jvalue, jautocompleteAttr, |
|
Mathieu
2017/05/24 18:02:02
hacker_case everywhere
michaelbai
2017/05/26 23:12:07
Done.
|
| + field_ptr_->should_autocomplete, jplaceholder, jtype, jid); |
| + java_ref_ = JavaObjectWeakGlobalRef(env, obj); |
| + } |
| + return obj; |
| +} |
| + |
| +void FormFieldDataAndroid::GetValue() { |
| + JNIEnv* env = AttachCurrentThread(); |
| + |
| + ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
| + if (obj.is_null()) |
| + return; |
| + ScopedJavaLocalRef<jstring> jvalue = Java_FormFieldData_getValue(env, obj); |
| + if (jvalue.is_null()) |
| + return; |
| + field_ptr_->value = ConvertJavaStringToUTF16(env, jvalue); |
| + field_ptr_->is_autofilled = true; |
| +} |
| + |
| +void FormFieldDataAndroid::OnTextFieldDidChange(const base::string16& value) { |
| + field_ptr_->value = value; |
| + field_ptr_->is_autofilled = false; |
| + JNIEnv* env = AttachCurrentThread(); |
| + ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
| + if (obj.is_null()) |
| + return; |
| + |
| + Java_FormFieldData_updateValue(env, obj, |
| + ConvertUTF16ToJavaString(env, value)); |
| +} |
| + |
| +} // namespace autofil |
|
Mathieu
2017/05/24 18:02:02
autofill
michaelbai
2017/05/26 23:12:07
Done.
|