| Index: android_webview/native/aw_http_auth_handler.cc
|
| diff --git a/android_webview/native/aw_http_auth_handler.cc b/android_webview/native/aw_http_auth_handler.cc
|
| index be696dedcb5ea12f07f5fa9f88b7edf7a2c836d3..b926a6a31276cc0b115cd99730437f6052266568 100644
|
| --- a/android_webview/native/aw_http_auth_handler.cc
|
| +++ b/android_webview/native/aw_http_auth_handler.cc
|
| @@ -8,6 +8,7 @@
|
| #include "android_webview/native/aw_contents.h"
|
| #include "base/android/jni_android.h"
|
| #include "base/android/jni_string.h"
|
| +#include "content/public/browser/browser_thread.h"
|
| #include "jni/AwHttpAuthHandler_jni.h"
|
| #include "net/base/auth.h"
|
| #include "content/public/browser/web_contents.h"
|
| @@ -19,9 +20,10 @@ namespace android_webview {
|
| AwHttpAuthHandler::AwHttpAuthHandler(AwLoginDelegate* login_delegate,
|
| net::AuthChallengeInfo* auth_info,
|
| bool first_auth_attempt)
|
| - : login_delegate_(make_scoped_refptr(login_delegate)),
|
| + : login_delegate_(login_delegate),
|
| host_(auth_info->challenger.host()),
|
| realm_(auth_info->realm) {
|
| + DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
|
| JNIEnv* env = base::android::AttachCurrentThread();
|
| http_auth_handler_.Reset(
|
| Java_AwHttpAuthHandler_create(
|
| @@ -29,23 +31,34 @@ AwHttpAuthHandler::AwHttpAuthHandler(AwLoginDelegate* login_delegate,
|
| }
|
|
|
| AwHttpAuthHandler:: ~AwHttpAuthHandler() {
|
| - // TODO(joth): tell java counterpart, so it can null its native back-pointer.
|
| + DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
|
| + Java_AwHttpAuthHandler_handlerDestroyed(base::android::AttachCurrentThread(),
|
| + http_auth_handler_.obj());
|
| }
|
|
|
| void AwHttpAuthHandler::Proceed(JNIEnv* env,
|
| jobject obj,
|
| jstring user,
|
| jstring password) {
|
| - login_delegate_->Proceed(ConvertJavaStringToUTF16(env, user),
|
| - ConvertJavaStringToUTF16(env, password));
|
| + DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
|
| + if (login_delegate_) {
|
| + login_delegate_->Proceed(ConvertJavaStringToUTF16(env, user),
|
| + ConvertJavaStringToUTF16(env, password));
|
| + login_delegate_ = NULL;
|
| + }
|
| }
|
|
|
| void AwHttpAuthHandler::Cancel(JNIEnv* env, jobject obj) {
|
| - login_delegate_->Cancel();
|
| + DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
|
| + if (login_delegate_) {
|
| + login_delegate_->Cancel();
|
| + login_delegate_ = NULL;
|
| + }
|
| }
|
|
|
| void AwHttpAuthHandler::HandleOnUIThread(content::WebContents* web_contents) {
|
| DCHECK(web_contents);
|
| + DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
|
| AwContents* aw_contents = AwContents::FromWebContents(web_contents);
|
|
|
| aw_contents->onReceivedHttpAuthRequest(
|
|
|