15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file.
45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/ui/android/infobars/save_password_infobar.h"
65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/android/jni_android.h"
85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/android/jni_string.h"
95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/logging.h"
105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/android/resource_mapper.h"
115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "jni/SavePasswordInfoBarDelegate_jni.h"
125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// SavePasswordInfoBarDelegate-------------------------------------------------
145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// static
160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochscoped_ptr<infobars::InfoBar> SavePasswordInfoBarDelegate::CreateInfoBar(
175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    scoped_ptr<SavePasswordInfoBarDelegate> delegate) {
180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  return scoped_ptr<infobars::InfoBar>(
190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch      new SavePasswordInfoBar(delegate.Pass()));
205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// SavePasswordInfoBar --------------------------------------------------------
235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)SavePasswordInfoBar::SavePasswordInfoBar(
255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    scoped_ptr<SavePasswordInfoBarDelegate> delegate)
265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    : ConfirmInfoBar(delegate.PassAs<ConfirmInfoBarDelegate>()),
275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      java_save_password_delegate_() {
285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)SavePasswordInfoBar::~SavePasswordInfoBar() {
315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void SavePasswordInfoBar::SetUseAdditionalAuthentication(
345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    JNIEnv* env,
355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    jobject obj,
365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    bool use_additional_authentication) {
375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  GetDelegate()->SetUseAdditionalPasswordAuthentication(
385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      use_additional_authentication);
395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)base::android::ScopedJavaLocalRef<jobject>
425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    SavePasswordInfoBar::CreateRenderInfoBar(JNIEnv* env) {
435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  java_save_password_delegate_.Reset(
445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      Java_SavePasswordInfoBarDelegate_create(env));
455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  base::android::ScopedJavaLocalRef<jstring> ok_button_text =
465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      base::android::ConvertUTF16ToJavaString(
475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)          env, GetTextFor(ConfirmInfoBarDelegate::BUTTON_OK));
485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  base::android::ScopedJavaLocalRef<jstring> cancel_button_text =
495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      base::android::ConvertUTF16ToJavaString(
505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)          env, GetTextFor(ConfirmInfoBarDelegate::BUTTON_CANCEL));
515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  SavePasswordInfoBarDelegate* delegate = GetDelegate();
525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  base::android::ScopedJavaLocalRef<jstring> message_text =
535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      base::android::ConvertUTF16ToJavaString(
545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)          env, reinterpret_cast<ConfirmInfoBarDelegate*>(
555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)              delegate)->GetMessageText());
565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return Java_SavePasswordInfoBarDelegate_showSavePasswordInfoBar(
585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      env,
595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      java_save_password_delegate_.obj(),
605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      reinterpret_cast<intptr_t>(this),
615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      GetEnumeratedIconId(),
625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      message_text.obj(),
635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      ok_button_text.obj(),
645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      cancel_button_text.obj());
655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)SavePasswordInfoBarDelegate* SavePasswordInfoBar::GetDelegate() {
685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return static_cast<SavePasswordInfoBarDelegate*>(delegate());
695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Native JNI methods ---------------------------------------------------------
735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool RegisterSavePasswordInfoBar(JNIEnv* env) {
755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return RegisterNativesImpl(env);
765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
77