This source file includes following definitions.
- params_
- AttachAccount
- GetMessageText
- Accept
- Cancel
- LoginSuccess
- LoginFailed
- LoginDismiss
- Register
#include "chrome/browser/ui/android/infobars/auto_login_infobar_delegate_android.h"
#include "base/android/jni_android.h"
#include "base/android/jni_helper.h"
#include "base/android/jni_string.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/infobars/infobar.h"
#include "chrome/browser/infobars/infobar_service.h"
#include "chrome/browser/infobars/simple_alert_infobar_delegate.h"
#include "chrome/browser/ui/auto_login_infobar_delegate.h"
#include "content/public/browser/web_contents.h"
#include "grit/generated_resources.h"
#include "grit/theme_resources.h"
#include "jni/AutoLoginDelegate_jni.h"
#include "ui/base/l10n/l10n_util.h"
using base::android::ConvertUTF8ToJavaString;
using base::android::ScopedJavaLocalRef;
AutoLoginInfoBarDelegateAndroid::AutoLoginInfoBarDelegateAndroid(
const Params& params,
Profile* profile)
: AutoLoginInfoBarDelegate(params, profile),
params_(params) {
}
AutoLoginInfoBarDelegateAndroid::~AutoLoginInfoBarDelegateAndroid() {
}
bool AutoLoginInfoBarDelegateAndroid::AttachAccount(
JavaObjectWeakGlobalRef weak_java_auto_login_delegate) {
weak_java_auto_login_delegate_ = weak_java_auto_login_delegate;
JNIEnv* env = base::android::AttachCurrentThread();
ScopedJavaLocalRef<jstring> jrealm = ConvertUTF8ToJavaString(env, realm());
ScopedJavaLocalRef<jstring> jaccount =
ConvertUTF8ToJavaString(env, account());
ScopedJavaLocalRef<jstring> jargs = ConvertUTF8ToJavaString(env, args());
DCHECK(!jrealm.is_null());
DCHECK(!jaccount.is_null());
DCHECK(!jargs.is_null());
ScopedJavaLocalRef<jobject> delegate =
weak_java_auto_login_delegate_.get(env);
DCHECK(delegate.obj());
user_ = base::android::ConvertJavaStringToUTF8(
Java_AutoLoginDelegate_initializeAccount(
env, delegate.obj(), reinterpret_cast<intptr_t>(this), jrealm.obj(),
jaccount.obj(), jargs.obj()));
return !user_.empty();
}
base::string16 AutoLoginInfoBarDelegateAndroid::GetMessageText() const {
return l10n_util::GetStringFUTF16(IDS_AUTOLOGIN_INFOBAR_MESSAGE,
base::UTF8ToUTF16(user_));
}
bool AutoLoginInfoBarDelegateAndroid::Accept() {
JNIEnv* env = base::android::AttachCurrentThread();
ScopedJavaLocalRef<jobject> delegate =
weak_java_auto_login_delegate_.get(env);
DCHECK(delegate.obj());
Java_AutoLoginDelegate_logIn(env, delegate.obj(),
reinterpret_cast<intptr_t>(this));
return false;
}
bool AutoLoginInfoBarDelegateAndroid::Cancel() {
JNIEnv* env = base::android::AttachCurrentThread();
ScopedJavaLocalRef<jobject> delegate =
weak_java_auto_login_delegate_.get(env);
DCHECK(delegate.obj());
Java_AutoLoginDelegate_cancelLogIn(env, delegate.obj(),
reinterpret_cast<intptr_t>(this));
return true;
}
void AutoLoginInfoBarDelegateAndroid::LoginSuccess(JNIEnv* env,
jobject obj,
jstring result) {
if (!infobar()->owner())
return;
content::WebContents* contents = web_contents();
contents->Stop();
infobar()->RemoveSelf();
contents->OpenURL(content::OpenURLParams(
GURL(base::android::ConvertJavaStringToUTF8(env, result)),
content::Referrer(), CURRENT_TAB, content::PAGE_TRANSITION_AUTO_BOOKMARK,
false));
}
void AutoLoginInfoBarDelegateAndroid::LoginFailed(JNIEnv* env, jobject obj) {
if (!infobar()->owner())
return;
InfoBarService* infobar_service =
InfoBarService::FromWebContents(web_contents());
DCHECK(infobar_service);
SimpleAlertInfoBarDelegate::Create(
infobar_service, IDR_INFOBAR_WARNING,
l10n_util::GetStringUTF16(IDS_AUTO_LOGIN_FAILED), false);
infobar()->RemoveSelf();
}
void AutoLoginInfoBarDelegateAndroid::LoginDismiss(JNIEnv* env, jobject obj) {
infobar()->RemoveSelf();
}
bool AutoLoginInfoBarDelegateAndroid::Register(JNIEnv* env) {
return RegisterNativesImpl(env);
}