Straighten up life cycle of native InfoBar pointers
[chromium-blink-merge.git] / chrome / browser / ui / android / infobars / save_password_infobar.cc
blob5f181d1233851a93c549da897807afb20706a591
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/ui/android/infobars/save_password_infobar.h"
7 #include "base/android/jni_android.h"
8 #include "base/android/jni_string.h"
9 #include "jni/SavePasswordInfoBar_jni.h"
11 SavePasswordInfoBar::SavePasswordInfoBar(
12 scoped_ptr<SavePasswordInfoBarDelegate> delegate)
13 : ConfirmInfoBar(delegate.Pass()) {
16 SavePasswordInfoBar::~SavePasswordInfoBar() {
19 base::android::ScopedJavaLocalRef<jobject>
20 SavePasswordInfoBar::CreateRenderInfoBar(JNIEnv* env) {
21 using base::android::ConvertUTF16ToJavaString;
22 using base::android::ScopedJavaLocalRef;
23 SavePasswordInfoBarDelegate* save_password_delegate =
24 static_cast<SavePasswordInfoBarDelegate*>(delegate());
25 ScopedJavaLocalRef<jstring> ok_button_text = ConvertUTF16ToJavaString(
26 env, GetTextFor(ConfirmInfoBarDelegate::BUTTON_OK));
27 ScopedJavaLocalRef<jstring> cancel_button_text = ConvertUTF16ToJavaString(
28 env, GetTextFor(ConfirmInfoBarDelegate::BUTTON_CANCEL));
29 ScopedJavaLocalRef<jstring> message_text = ConvertUTF16ToJavaString(
30 env, save_password_delegate->GetMessageText());
32 return Java_SavePasswordInfoBar_show(
33 env, GetEnumeratedIconId(), message_text.obj(),
34 save_password_delegate->title_link_range().start(),
35 save_password_delegate->title_link_range().end(), ok_button_text.obj(),
36 cancel_button_text.obj(), save_password_delegate->ShouldShowMoreButton());
39 void SavePasswordInfoBar::OnLinkClicked(JNIEnv* env, jobject obj) {
40 GetDelegate()->LinkClicked(NEW_FOREGROUND_TAB);
43 bool SavePasswordInfoBar::Register(JNIEnv* env) {
44 return RegisterNativesImpl(env);