| 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..15d5163a969bf1b540fe26116020633d5c507c36
|
| --- /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> jautocomplete_attr =
|
| + 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, jautocomplete_attr,
|
| + 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 autofill
|
|
|