blob: 58fbe6fa84f0adee8e1ea93b161b983fe1b66766 [file] [log] [blame]
// Copyright 2019 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 "chrome/browser/android/password_editing_bridge.h"
#include "base/android/jni_string.h"
#include "chrome/android/chrome_jni_headers/PasswordEditingBridge_jni.h"
#include "chrome/browser/android/password_edit_delegate.h"
#include "chrome/browser/android/password_update_delegate.h"
using base::android::ConvertUTF16ToJavaString;
using base::android::ConvertUTF8ToJavaString;
using base::android::JavaParamRef;
PasswordEditingBridge::PasswordEditingBridge() {
java_object_.Reset(Java_PasswordEditingBridge_create(
base::android::AttachCurrentThread(), reinterpret_cast<intptr_t>(this)));
}
PasswordEditingBridge::~PasswordEditingBridge() = default;
void PasswordEditingBridge::Destroy(JNIEnv* env,
const JavaParamRef<jobject>& obj) {
delete this;
}
void PasswordEditingBridge::LaunchPasswordEntryEditor(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& context,
Profile* profile,
const autofill::PasswordForm& password_form) {
// PasswordEditingBridge will destroy itself when the UI is gone on the Java
// side.
PasswordEditingBridge* password_editing_bridge = new PasswordEditingBridge();
password_editing_bridge->password_edit_delegate_ =
std::make_unique<PasswordUpdateDelegate>(profile, password_form);
Java_PasswordEditingBridge_showEditingUI(
base::android::AttachCurrentThread(),
password_editing_bridge->java_object_, context,
ConvertUTF8ToJavaString(env, password_form.signon_realm),
ConvertUTF16ToJavaString(env, password_form.username_value),
ConvertUTF16ToJavaString(env, password_form.password_value));
}
void PasswordEditingBridge::HandleEditSavedPasswordEntry(
JNIEnv* env,
const JavaParamRef<jobject>& object,
const JavaParamRef<jstring>& new_username,
const JavaParamRef<jstring>& new_password) {
password_edit_delegate_->EditSavedPassword(
ConvertJavaStringToUTF16(env, new_username),
ConvertJavaStringToUTF16(env, new_password));
}