Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(45)

Side by Side Diff: chrome/browser/ui/android/infobar/auto_login_infobar_delegate_android.cc

Issue 24109002: [InfoBar] Upstram basic infobar flow for Android. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@upstream_infobar_full
Patch Set: Fix License header in two more files Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2013 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.
4
5 #include "chrome/browser/ui/auto_login_infobar_delegate_android.h"
6
7 #include "base/android/jni_android.h"
8 #include "base/android/jni_helper.h"
9 #include "base/android/jni_string.h"
10 #include "base/strings/utf_string_conversions.h"
11 #include "chrome/browser/infobars/simple_alert_infobar_delegate.h"
12 #include "chrome/browser/ui/auto_login_infobar_delegate.h"
13 #include "content/public/browser/web_contents.h"
14 #include "grit/generated_resources.h"
15 #include "grit/theme_resources.h"
16 #include "jni/AutoLoginDelegate_jni.h"
17 #include "ui/base/l10n/l10n_util.h"
18
19 using base::android::AttachCurrentThread;
20 using base::android::ConvertUTF8ToJavaString;
21 using base::android::ScopedJavaGlobalRef;
22 using base::android::ScopedJavaLocalRef;
23
24 AutoLoginInfoBarDelegateAndroid::AutoLoginInfoBarDelegateAndroid(
25 InfoBarService* owner,
26 const Params& params)
27 : AutoLoginInfoBarDelegate(owner, params), params_(params) {}
28
29 AutoLoginInfoBarDelegateAndroid::~AutoLoginInfoBarDelegateAndroid() {}
30
31 bool AutoLoginInfoBarDelegateAndroid::AttachAccount(
32 JavaObjectWeakGlobalRef weak_java_auto_login_delegate) {
33 weak_java_auto_login_delegate_ = weak_java_auto_login_delegate;
34 JNIEnv* env = AttachCurrentThread();
35 ScopedJavaLocalRef<jstring> jrealm = ConvertUTF8ToJavaString(env, realm());
36 ScopedJavaLocalRef<jstring> jaccount =
37 ConvertUTF8ToJavaString(env, account());
38 ScopedJavaLocalRef<jstring> jargs = ConvertUTF8ToJavaString(env, args());
39 DCHECK(!jrealm.is_null() && !jaccount.is_null() && !jargs.is_null());
40
41 ScopedJavaLocalRef<jobject> delegate =
42 weak_java_auto_login_delegate_.get(env);
43 DCHECK(delegate.obj());
44 user_ = ConvertJavaStringToUTF8(
45 Java_AutoLoginDelegate_initializeAccount(env,
46 delegate.obj(),
47 reinterpret_cast<jint>(this),
48 jrealm.obj(),
49 jaccount.obj(),
50 jargs.obj()));
51 return !user_.empty();
52 }
53
54 string16 AutoLoginInfoBarDelegateAndroid::GetMessageText() const {
55 return l10n_util::GetStringFUTF16(IDS_AUTOLOGIN_INFOBAR_MESSAGE,
56 UTF8ToUTF16(user_));
57 }
58
59 bool AutoLoginInfoBarDelegateAndroid::Accept() {
60 JNIEnv* env = AttachCurrentThread();
61 ScopedJavaLocalRef<jobject> delegate =
62 weak_java_auto_login_delegate_.get(env);
63 DCHECK(delegate.obj());
64
65 Java_AutoLoginDelegate_logIn(
66 env, delegate.obj(), reinterpret_cast<jint>(this));
67
68 // Do not close the infobar on accept, it will be closed as part
69 // of the log in callback.
70 return false;
71 }
72
73 bool AutoLoginInfoBarDelegateAndroid::Cancel() {
74 JNIEnv* env = AttachCurrentThread();
75 ScopedJavaLocalRef<jobject> delegate =
76 weak_java_auto_login_delegate_.get(env);
77 DCHECK(delegate.obj());
78 Java_AutoLoginDelegate_cancelLogIn(
79 env, delegate.obj(), reinterpret_cast<jint>(this));
80 return true;
81 }
82
83 void AutoLoginInfoBarDelegateAndroid::LoginSuccess(JNIEnv* env,
84 jobject obj,
85 jstring result) {
86 if (owner()) {
87 content::WebContents* web_contents = owner()->web_contents();
88 if (web_contents) {
89 web_contents->Stop();
90 web_contents->OpenURL(content::OpenURLParams(
91 GURL(base::android::ConvertJavaStringToUTF8(env, result)),
92 content::Referrer(),
93 CURRENT_TAB,
94 content::PAGE_TRANSITION_AUTO_BOOKMARK,
95 false));
96 }
97 owner()->RemoveInfoBar(this);
98 }
99 }
100
101 void AutoLoginInfoBarDelegateAndroid::LoginFailed(JNIEnv* env, jobject obj) {
102 ScopedJavaLocalRef<jobject> delegate =
103 weak_java_auto_login_delegate_.get(env);
104 DCHECK(delegate.obj());
105 if (owner()) {
106 SimpleAlertInfoBarDelegate::Create(
107 owner(),
108 IDR_INFOBAR_WARNING,
109 l10n_util::GetStringUTF16(IDS_AUTO_LOGIN_FAILED),
110 false);
111 owner()->RemoveInfoBar(this);
112 }
113 }
114
115 void AutoLoginInfoBarDelegateAndroid::LoginDismiss(JNIEnv* env, jobject obj) {
116 if (owner())
117 owner()->RemoveInfoBar(this);
118 }
119
120 // Register Android JNI bindings.
121 bool AutoLoginInfoBarDelegateAndroid::Register(JNIEnv* env) {
122 return RegisterNativesImpl(env);
123 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/android/infobar/OWNERS ('k') | chrome/browser/ui/android/infobar/confirm_infobar.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698