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.
5 #ifndef CHROME_BROWSER_UI_ANDROID_CHROME_HTTP_AUTH_HANDLER_H_
6 #define CHROME_BROWSER_UI_ANDROID_CHROME_HTTP_AUTH_HANDLER_H_
10 #include "base/android/scoped_java_ref.h"
11 #include "base/strings/string16.h"
12 #include "chrome/browser/ui/login/login_prompt.h"
14 // This class facilitates communication between a native LoginHandler
15 // and a Java land ChromeHttpAuthHandler, which is passed to a
16 // ContentViewClient to allow it to respond to HTTP authentication requests
17 // by, e.g., showing the user a login dialog.
18 class ChromeHttpAuthHandler
{
20 ChromeHttpAuthHandler(const base::string16
& explanation
);
21 ~ChromeHttpAuthHandler();
23 // This must be called before using the object.
24 // Constructs a corresponding Java land ChromeHttpAuthHandler.
27 // Registers an observer to receive callbacks when SetAuth() and CancelAuth()
28 // are called. |observer| may be NULL in which case the callbacks are skipped.
29 void SetObserver(LoginHandler
* observer
);
31 // Returns a reference to the Java land ChromeHttpAuthHandler. This
32 // reference must not be released, and remains valid until the native
33 // ChromeHttpAuthHandler is destructed.
34 jobject
GetJavaObject();
36 // Forwards the autofill data to the Java land object.
37 void OnAutofillDataAvailable(
38 const base::string16
& username
,
39 const base::string16
& password
);
41 // --------------------------------------------------------------
43 // --------------------------------------------------------------
45 // Submits the username and password to the observer.
46 void SetAuth(JNIEnv
* env
, jobject
, jstring username
, jstring password
);
48 // Cancels the authentication attempt of the observer.
49 void CancelAuth(JNIEnv
* env
, jobject
);
51 // These functions return the strings needed to display a login form.
52 base::android::ScopedJavaLocalRef
<jstring
> GetMessageTitle(
53 JNIEnv
* env
, jobject
);
54 base::android::ScopedJavaLocalRef
<jstring
> GetMessageBody(
55 JNIEnv
* env
, jobject
);
56 base::android::ScopedJavaLocalRef
<jstring
> GetUsernameLabelText(
57 JNIEnv
* env
, jobject
);
58 base::android::ScopedJavaLocalRef
<jstring
> GetPasswordLabelText(
59 JNIEnv
* env
, jobject
);
60 base::android::ScopedJavaLocalRef
<jstring
> GetOkButtonText(
61 JNIEnv
* env
, jobject
);
62 base::android::ScopedJavaLocalRef
<jstring
> GetCancelButtonText(
63 JNIEnv
* env
, jobject
);
64 // Registers the ChromeHttpAuthHandler native methods.
65 static bool RegisterChromeHttpAuthHandler(JNIEnv
* env
);
67 LoginHandler
* observer_
;
68 base::android::ScopedJavaGlobalRef
<jobject
> java_chrome_http_auth_handler_
;
69 // e.g. "The server example.com:80 requires a username and password."
70 base::string16 explanation_
;
72 DISALLOW_COPY_AND_ASSIGN(ChromeHttpAuthHandler
);
75 #endif // CHROME_BROWSER_UI_ANDROID_CHROME_HTTP_AUTH_HANDLER_H_