Home | History | Annotate | Download | only in browser
      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.
      4 
      5 #ifndef ANDROID_WEBVIEW_BROWSER_AW_CONTENTS_CLIENT_BRIDGE_BASE_H_
      6 #define ANDROID_WEBVIEW_BROWSER_AW_CONTENTS_CLIENT_BRIDGE_BASE_H_
      7 
      8 #include "base/callback_forward.h"
      9 #include "base/supports_user_data.h"
     10 #include "content/public/browser/javascript_dialog_manager.h"
     11 
     12 class GURL;
     13 
     14 namespace content {
     15 class WebContents;
     16 }
     17 
     18 namespace net {
     19 class SSLCertRequestInfo;
     20 class X509Certificate;
     21 }
     22 
     23 namespace android_webview {
     24 
     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 {
     31  public:
     32   typedef base::Callback<void(net::X509Certificate*)> SelectCertificateCallback;
     33 
     34   // Adds the handler to the UserData registry.
     35   static void Associate(content::WebContents* web_contents,
     36                         AwContentsClientBridgeBase* handler);
     37   static void Disassociate(content::WebContents* web_contents);
     38   static AwContentsClientBridgeBase* FromWebContents(
     39       content::WebContents* web_contents);
     40   static AwContentsClientBridgeBase* FromID(int render_process_id,
     41                                             int render_frame_id);
     42 
     43   virtual ~AwContentsClientBridgeBase();
     44 
     45   virtual void AllowCertificateError(int cert_error,
     46                                      net::X509Certificate* cert,
     47                                      const GURL& request_url,
     48                                      const base::Callback<void(bool)>& callback,
     49                                      bool* cancel_request) = 0;
     50   virtual void SelectClientCertificate(
     51       net::SSLCertRequestInfo* cert_request_info,
     52       const SelectCertificateCallback& callback) = 0;
     53 
     54   virtual void RunJavaScriptDialog(
     55       content::JavaScriptMessageType message_type,
     56       const GURL& origin_url,
     57       const base::string16& message_text,
     58       const base::string16& default_prompt_text,
     59       const content::JavaScriptDialogManager::DialogClosedCallback& callback)
     60       = 0;
     61 
     62   virtual void RunBeforeUnloadDialog(
     63       const GURL& origin_url,
     64       const base::string16& message_text,
     65       const content::JavaScriptDialogManager::DialogClosedCallback& callback)
     66       = 0;
     67 
     68   virtual bool ShouldOverrideUrlLoading(const base::string16& url) = 0;
     69 };
     70 
     71 }  // namespace android_webview
     72 
     73 #endif  // ANDROID_WEBVIEW_BROWSER_AW_CONTENTS_CLIENT_BRIDGE_BASE_H_
     74