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

Side by Side Diff: android_webview/native/aw_contents_client_bridge.h

Issue 235563005: Add client cert support to android_webview (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: code review phase 3 Created 6 years, 8 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef ANDROID_WEBVIEW_NATIVE_AW_CONTENTS_CLIENT_BRIDGE_H_ 5 #ifndef ANDROID_WEBVIEW_NATIVE_AW_CONTENTS_CLIENT_BRIDGE_H_
6 #define ANDROID_WEBVIEW_NATIVE_AW_CONTENTS_CLIENT_BRIDGE_H_ 6 #define ANDROID_WEBVIEW_NATIVE_AW_CONTENTS_CLIENT_BRIDGE_H_
7 7
8 #include <jni.h> 8 #include <jni.h>
9 9
10 #include "android_webview/browser/aw_contents_client_bridge_base.h" 10 #include "android_webview/browser/aw_contents_client_bridge_base.h"
(...skipping 11 matching lines...) Expand all
22 22
23 // A class that handles the Java<->Native communication for the 23 // A class that handles the Java<->Native communication for the
24 // AwContentsClient. AwContentsClientBridge is created and owned by 24 // AwContentsClient. AwContentsClientBridge is created and owned by
25 // native AwContents class and it only has a weak reference to the 25 // native AwContents class and it only has a weak reference to the
26 // its Java peer. Since the Java AwContentsClientBridge can have 26 // its Java peer. Since the Java AwContentsClientBridge can have
27 // indirect refs from the Application (via callbacks) and so can outlive 27 // indirect refs from the Application (via callbacks) and so can outlive
28 // webview, this class notifies it before being destroyed and to nullify 28 // webview, this class notifies it before being destroyed and to nullify
29 // any references. 29 // any references.
30 class AwContentsClientBridge : public AwContentsClientBridgeBase { 30 class AwContentsClientBridge : public AwContentsClientBridgeBase {
31 public: 31 public:
32
33 AwContentsClientBridge(JNIEnv* env, jobject obj); 32 AwContentsClientBridge(JNIEnv* env, jobject obj);
34 virtual ~AwContentsClientBridge(); 33 virtual ~AwContentsClientBridge();
35 34
36 // AwContentsClientBridgeBase implementation 35 // AwContentsClientBridgeBase implementation
37 virtual void AllowCertificateError(int cert_error, 36 virtual void AllowCertificateError(int cert_error,
38 net::X509Certificate* cert, 37 net::X509Certificate* cert,
39 const GURL& request_url, 38 const GURL& request_url,
40 const base::Callback<void(bool)>& callback, 39 const base::Callback<void(bool)>& callback,
41 bool* cancel_request) OVERRIDE; 40 bool* cancel_request) OVERRIDE;
41 virtual void SelectClientCertificate(
42 net::SSLCertRequestInfo* cert_request_info,
43 const SelectCertificateCallback& callback) OVERRIDE;
42 44
43 virtual void RunJavaScriptDialog( 45 virtual void RunJavaScriptDialog(
44 content::JavaScriptMessageType message_type, 46 content::JavaScriptMessageType message_type,
45 const GURL& origin_url, 47 const GURL& origin_url,
46 const base::string16& message_text, 48 const base::string16& message_text,
47 const base::string16& default_prompt_text, 49 const base::string16& default_prompt_text,
48 const content::JavaScriptDialogManager::DialogClosedCallback& callback) 50 const content::JavaScriptDialogManager::DialogClosedCallback& callback)
49 OVERRIDE; 51 OVERRIDE;
50 virtual void RunBeforeUnloadDialog( 52 virtual void RunBeforeUnloadDialog(
51 const GURL& origin_url, 53 const GURL& origin_url,
52 const base::string16& message_text, 54 const base::string16& message_text,
53 const content::JavaScriptDialogManager::DialogClosedCallback& callback) 55 const content::JavaScriptDialogManager::DialogClosedCallback& callback)
54 OVERRIDE; 56 OVERRIDE;
55 virtual bool ShouldOverrideUrlLoading(const base::string16& url) OVERRIDE; 57 virtual bool ShouldOverrideUrlLoading(const base::string16& url) OVERRIDE;
56 58
57 // Methods called from Java. 59 // Methods called from Java.
58 void ProceedSslError(JNIEnv* env, jobject obj, jboolean proceed, jint id); 60 void ProceedSslError(JNIEnv* env, jobject obj, jboolean proceed, jint id);
61 void ProvideClientCertificateResponse(JNIEnv* env, jobject object,
62 jint request_id, jobjectArray encoded_chain_ref,
63 jobject private_key_ref);
59 void ConfirmJsResult(JNIEnv*, jobject, int id, jstring prompt); 64 void ConfirmJsResult(JNIEnv*, jobject, int id, jstring prompt);
60 void CancelJsResult(JNIEnv*, jobject, int id); 65 void CancelJsResult(JNIEnv*, jobject, int id);
61 66
62 private: 67 private:
68 void HandleErrorInClientCertificateResponse(int id);
69
63 JavaObjectWeakGlobalRef java_ref_; 70 JavaObjectWeakGlobalRef java_ref_;
64 71
65 typedef const base::Callback<void(bool)> CertErrorCallback; 72 typedef const base::Callback<void(bool)> CertErrorCallback;
66 IDMap<CertErrorCallback, IDMapOwnPointer> pending_cert_error_callbacks_; 73 IDMap<CertErrorCallback, IDMapOwnPointer> pending_cert_error_callbacks_;
67 IDMap<content::JavaScriptDialogManager::DialogClosedCallback, IDMapOwnPointer> 74 IDMap<content::JavaScriptDialogManager::DialogClosedCallback, IDMapOwnPointer>
68 pending_js_dialog_callbacks_; 75 pending_js_dialog_callbacks_;
76 IDMap<SelectCertificateCallback, IDMapOwnPointer>
77 pending_client_cert_request_callbacks_;
69 }; 78 };
70 79
71 bool RegisterAwContentsClientBridge(JNIEnv* env); 80 bool RegisterAwContentsClientBridge(JNIEnv* env);
72 81
73 } // namespace android_webview 82 } // namespace android_webview
74 83
75 #endif // ANDROID_WEBVIEW_NATIVE_AW_CONTENTS_CLIENT_BRIDGE_H_ 84 #endif // ANDROID_WEBVIEW_NATIVE_AW_CONTENTS_CLIENT_BRIDGE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698