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