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
3 // found in the LICENSE file.
5 #ifndef ANDROID_WEBVIEW_BROWSER_AW_CONTENTS_CLIENT_BRIDGE_BASE_H_
6 #define ANDROID_WEBVIEW_BROWSER_AW_CONTENTS_CLIENT_BRIDGE_BASE_H_
8 #include "base/callback_forward.h"
9 #include "base/supports_user_data.h"
10 #include "content/public/browser/javascript_dialog_manager.h"
19 class SSLCertRequestInfo
;
20 class X509Certificate
;
23 namespace android_webview
{
25 // browser/ layer interface for AwContensClientBridge, as DEPS prevents this
26 // layer from depending on native/ where the implementation lives. The
27 // implementor of the base class plumbs the request to the Java side and
28 // eventually to the webviewclient. This layering hides the details of
29 // native/ from browser/ layer.
30 class AwContentsClientBridgeBase
{
32 typedef base::Callback
<void(net::X509Certificate
*)> SelectCertificateCallback
;
34 // Adds the handler to the UserData registry.
35 static void Associate(content::WebContents
* web_contents
,
36 AwContentsClientBridgeBase
* handler
);
37 static AwContentsClientBridgeBase
* FromWebContents(
38 content::WebContents
* web_contents
);
39 static AwContentsClientBridgeBase
* FromID(int render_process_id
,
42 virtual ~AwContentsClientBridgeBase();
44 virtual void AllowCertificateError(int cert_error
,
45 net::X509Certificate
* cert
,
46 const GURL
& request_url
,
47 const base::Callback
<void(bool)>& callback
,
48 bool* cancel_request
) = 0;
49 virtual void SelectClientCertificate(
50 net::SSLCertRequestInfo
* cert_request_info
,
51 const SelectCertificateCallback
& callback
) = 0;
53 virtual void RunJavaScriptDialog(
54 content::JavaScriptMessageType message_type
,
55 const GURL
& origin_url
,
56 const base::string16
& message_text
,
57 const base::string16
& default_prompt_text
,
58 const content::JavaScriptDialogManager::DialogClosedCallback
& callback
)
61 virtual void RunBeforeUnloadDialog(
62 const GURL
& origin_url
,
63 const base::string16
& message_text
,
64 const content::JavaScriptDialogManager::DialogClosedCallback
& callback
)
67 virtual bool ShouldOverrideUrlLoading(const base::string16
& url
) = 0;
70 } // namespace android_webview
72 #endif // ANDROID_WEBVIEW_BROWSER_AW_CONTENTS_CLIENT_BRIDGE_BASE_H_