blob: d3ac99b7717707ddfd2459cf6f6c0103964cf953 [file] [log] [blame]
// Copyright 2018 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_manager/password_generation_dialog_view_android.h"
#include "base/android/jni_android.h"
#include "base/android/jni_string.h"
#include "base/strings/string16.h"
#include "chrome/browser/password_manager/password_accessory_controller.h"
#include "chrome/grit/chromium_strings.h"
#include "chrome/grit/generated_resources.h"
#include "components/strings/grit/components_strings.h"
#include "jni/PasswordGenerationDialogBridge_jni.h"
#include "ui/android/window_android.h"
#include "ui/base/l10n/l10n_util.h"
PasswordGenerationDialogViewAndroid::PasswordGenerationDialogViewAndroid(
PasswordAccessoryController* controller)
: controller_(controller) {
ui::WindowAndroid* window_android = controller_->native_window();
DCHECK(window_android);
java_object_.Reset(Java_PasswordGenerationDialogBridge_create(
base::android::AttachCurrentThread(), window_android->GetJavaObject(),
reinterpret_cast<long>(this)));
}
PasswordGenerationDialogViewAndroid::~PasswordGenerationDialogViewAndroid() {
DCHECK(!java_object_.is_null());
Java_PasswordGenerationDialogBridge_destroy(
base::android::AttachCurrentThread(), java_object_);
}
void PasswordGenerationDialogViewAndroid::Show(base::string16& password) {
JNIEnv* env = base::android::AttachCurrentThread();
base::string16 explanation_text =
l10n_util::GetStringUTF16(IDS_PASSWORD_GENERATION_PROMPT);
Java_PasswordGenerationDialogBridge_showDialog(
env, java_object_, base::android::ConvertUTF16ToJavaString(env, password),
base::android::ConvertUTF16ToJavaString(env, explanation_text));
}
void PasswordGenerationDialogViewAndroid::PasswordAccepted(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj,
const base::android::JavaParamRef<jstring>& password) {
controller_->GeneratedPasswordAccepted(
base::android::ConvertJavaStringToUTF16(env, password));
}
void PasswordGenerationDialogViewAndroid::PasswordRejected(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj) {
controller_->GeneratedPasswordRejected();
}
// static
std::unique_ptr<PasswordGenerationDialogViewInterface>
PasswordGenerationDialogViewInterface::Create(
PasswordAccessoryController* controller) {
return std::make_unique<PasswordGenerationDialogViewAndroid>(controller);
}