| Index: components/autofill/content/browser/form_field_data_android.cc
|
| diff --git a/components/autofill/content/browser/form_field_data_android.cc b/components/autofill/content/browser/form_field_data_android.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1aeaa35bb10857cc06884350832daf60945fb8eb
|
| --- /dev/null
|
| +++ b/components/autofill/content/browser/form_field_data_android.cc
|
| @@ -0,0 +1,87 @@
|
| +// 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/content/browser/form_field_data_android.h"
|
| +
|
| +#include "base/android/jni_string.h"
|
| +#include "content/public/browser/browser_thread.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;
|
| +using content::BrowserThread;
|
| +
|
| +namespace autofill {
|
| +
|
| +FormFieldDataAndroid::FormFieldDataAndroid(const FormFieldData& field)
|
| + :field_(field),
|
| + field_ptr_(&field_) {
|
| +}
|
| +
|
| +FormFieldDataAndroid::FormFieldDataAndroid(FormFieldData* field)
|
| + : field_ptr_(field) {
|
| +}
|
| +
|
| +ScopedJavaLocalRef<jobject> FormFieldDataAndroid::GetJavaPeer() {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + 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);
|
| +
|
| + obj = Java_FormFieldData_createFormFieldData(env, jname, jlabel, jvalue,
|
| + jautocompleteAttr, field_ptr_->should_autocomplete);
|
| + java_ref_ = JavaObjectWeakGlobalRef(env, obj);
|
| + }
|
| + return obj;
|
| +}
|
| +
|
| +void FormFieldDataAndroid::PullAutofillValue() {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + JNIEnv* env = AttachCurrentThread();
|
| + /*
|
| + if (field_ptr_->check_status ==
|
| + FormFieldData::CheckStatus::CHECKABLE_BUT_UNCHECKED) {
|
| + field_ptr_->check_status = FormFieldData::CheckStatus::CHECKED;
|
| + field_ptr_->is_autofilled = true;
|
| + }
|
| + */
|
| +
|
| + 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;
|
| + DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + JNIEnv* env = AttachCurrentThread();
|
| + ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
|
| + if (obj.is_null())
|
| + return;
|
| +
|
| + Java_FormFieldData_updataValue(env, obj,
|
| + ConvertUTF16ToJavaString(env, value));
|
| +}
|
| +
|
| +} // namespace autofil
|
|
|