1// Copyright (c) 2012 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#ifndef ANDROID_WEBVIEW_NATIVE_AW_HTTP_AUTH_HANDLER_H_
6#define ANDROID_WEBVIEW_NATIVE_AW_HTTP_AUTH_HANDLER_H_
7
8#include <jni.h>
9#include <string>
10
11#include "android_webview/browser/aw_login_delegate.h"
12#include "android_webview/browser/aw_http_auth_handler_base.h"
13#include "base/android/jni_android.h"
14#include "base/android/scoped_java_ref.h"
15#include "base/memory/ref_counted.h"
16
17namespace content {
18class WebContents;
19};
20
21namespace net {
22class AuthChallengeInfo;
23};
24
25namespace android_webview {
26
27// Native class for Java class of same name and owns an instance
28// of that Java object.
29// One instance of this class is created per underlying AwLoginDelegate.
30class AwHttpAuthHandler : public AwHttpAuthHandlerBase {
31 public:
32  AwHttpAuthHandler(AwLoginDelegate* login_delegate,
33                    net::AuthChallengeInfo* auth_info,
34                    bool first_auth_attempt);
35  virtual ~AwHttpAuthHandler();
36
37  // from AwHttpAuthHandler
38  virtual bool HandleOnUIThread(content::WebContents* web_contents) OVERRIDE;
39
40  void Proceed(JNIEnv* env, jobject obj, jstring username, jstring password);
41  void Cancel(JNIEnv* env, jobject obj);
42
43 private:
44  scoped_refptr<AwLoginDelegate> login_delegate_;
45  base::android::ScopedJavaGlobalRef<jobject> http_auth_handler_;
46  std::string host_;
47  std::string realm_;
48};
49
50bool RegisterAwHttpAuthHandler(JNIEnv* env);
51
52}  // namespace android_webview
53
54#endif  // ANDROID_WEBVIEW_NATIVE_AW_HTTP_AUTH_HANDLER_H_
55