Home | History | Annotate | Download | only in browser
      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_LIB_AW_CONTENT_BROWSER_CLIENT_H_
      6 #define ANDROID_WEBVIEW_LIB_AW_CONTENT_BROWSER_CLIENT_H_
      7 
      8 #include "android_webview/browser/aw_web_preferences_populater.h"
      9 #include "base/basictypes.h"
     10 #include "base/compiler_specific.h"
     11 #include "base/memory/scoped_ptr.h"
     12 #include "content/public/browser/content_browser_client.h"
     13 
     14 namespace android_webview {
     15 
     16 class AwBrowserContext;
     17 class JniDependencyFactory;
     18 
     19 class AwContentBrowserClient : public content::ContentBrowserClient {
     20  public:
     21   // This is what AwContentBrowserClient::GetAcceptLangs uses.
     22   static std::string GetAcceptLangsImpl();
     23 
     24   // Deprecated: use AwBrowserContext::GetDefault() instead.
     25   static AwBrowserContext* GetAwBrowserContext();
     26 
     27   AwContentBrowserClient(JniDependencyFactory* native_factory);
     28   virtual ~AwContentBrowserClient();
     29 
     30   // Overriden methods from ContentBrowserClient.
     31   virtual void AddCertificate(net::CertificateMimeType cert_type,
     32                               const void* cert_data,
     33                               size_t cert_size,
     34                               int render_process_id,
     35                               int render_frame_id) OVERRIDE;
     36   virtual content::BrowserMainParts* CreateBrowserMainParts(
     37       const content::MainFunctionParams& parameters) OVERRIDE;
     38   virtual content::WebContentsViewDelegate* GetWebContentsViewDelegate(
     39       content::WebContents* web_contents) OVERRIDE;
     40   virtual void RenderProcessWillLaunch(
     41       content::RenderProcessHost* host) OVERRIDE;
     42   virtual net::URLRequestContextGetter* CreateRequestContext(
     43       content::BrowserContext* browser_context,
     44       content::ProtocolHandlerMap* protocol_handlers,
     45       content::URLRequestInterceptorScopedVector request_interceptors) OVERRIDE;
     46   virtual net::URLRequestContextGetter* CreateRequestContextForStoragePartition(
     47       content::BrowserContext* browser_context,
     48       const base::FilePath& partition_path,
     49       bool in_memory,
     50       content::ProtocolHandlerMap* protocol_handlers,
     51       content::URLRequestInterceptorScopedVector request_interceptors) OVERRIDE;
     52   virtual std::string GetCanonicalEncodingNameByAliasName(
     53       const std::string& alias_name) OVERRIDE;
     54   virtual void AppendExtraCommandLineSwitches(base::CommandLine* command_line,
     55                                               int child_process_id) OVERRIDE;
     56   virtual std::string GetApplicationLocale() OVERRIDE;
     57   virtual std::string GetAcceptLangs(content::BrowserContext* context) OVERRIDE;
     58   virtual const gfx::ImageSkia* GetDefaultFavicon() OVERRIDE;
     59   virtual bool AllowAppCache(const GURL& manifest_url,
     60                              const GURL& first_party,
     61                              content::ResourceContext* context) OVERRIDE;
     62   virtual bool AllowGetCookie(const GURL& url,
     63                               const GURL& first_party,
     64                               const net::CookieList& cookie_list,
     65                               content::ResourceContext* context,
     66                               int render_process_id,
     67                               int render_frame_id) OVERRIDE;
     68   virtual bool AllowSetCookie(const GURL& url,
     69                               const GURL& first_party,
     70                               const std::string& cookie_line,
     71                               content::ResourceContext* context,
     72                               int render_process_id,
     73                               int render_frame_id,
     74                               net::CookieOptions* options) OVERRIDE;
     75   virtual bool AllowWorkerDatabase(
     76       const GURL& url,
     77       const base::string16& name,
     78       const base::string16& display_name,
     79       unsigned long estimated_size,
     80       content::ResourceContext* context,
     81       const std::vector<std::pair<int, int> >& render_frames) OVERRIDE;
     82   virtual void AllowWorkerFileSystem(
     83       const GURL& url,
     84       content::ResourceContext* context,
     85       const std::vector<std::pair<int, int> >& render_frames,
     86       base::Callback<void(bool)> callback) OVERRIDE;
     87   virtual bool AllowWorkerIndexedDB(
     88       const GURL& url,
     89       const base::string16& name,
     90       content::ResourceContext* context,
     91       const std::vector<std::pair<int, int> >& render_frames) OVERRIDE;
     92   virtual content::QuotaPermissionContext*
     93       CreateQuotaPermissionContext() OVERRIDE;
     94   virtual void AllowCertificateError(
     95       int render_process_id,
     96       int render_frame_id,
     97       int cert_error,
     98       const net::SSLInfo& ssl_info,
     99       const GURL& request_url,
    100       content::ResourceType resource_type,
    101       bool overridable,
    102       bool strict_enforcement,
    103       bool expired_previous_decision,
    104       const base::Callback<void(bool)>& callback,
    105       content::CertificateRequestResultType* result) OVERRIDE;
    106   virtual void SelectClientCertificate(
    107       int render_process_id,
    108       int render_frame_id,
    109       const net::HttpNetworkSession* network_session,
    110       net::SSLCertRequestInfo* cert_request_info,
    111       const base::Callback<void(net::X509Certificate*)>& callback) OVERRIDE;
    112   virtual blink::WebNotificationPermission
    113       CheckDesktopNotificationPermission(
    114           const GURL& source_url,
    115           content::ResourceContext* context,
    116           int render_process_id) OVERRIDE;
    117   virtual void ShowDesktopNotification(
    118       const content::ShowDesktopNotificationHostMsgParams& params,
    119       content::RenderFrameHost* render_frame_host,
    120       scoped_ptr<content::DesktopNotificationDelegate> delegate,
    121       base::Closure* cancel_callback) OVERRIDE;
    122   virtual void RequestGeolocationPermission(
    123       content::WebContents* web_contents,
    124       int bridge_id,
    125       const GURL& requesting_frame,
    126       bool user_gesture,
    127       base::Callback<void(bool)> result_callback,
    128       base::Closure* cancel_callback) OVERRIDE;
    129   virtual void RequestMidiSysExPermission(
    130       content::WebContents* web_contents,
    131       int bridge_id,
    132       const GURL& requesting_frame,
    133       bool user_gesture,
    134       base::Callback<void(bool)> result_callback,
    135       base::Closure* cancel_callback) OVERRIDE;
    136   virtual void RequestProtectedMediaIdentifierPermission(
    137     content::WebContents* web_contents,
    138     const GURL& origin,
    139     base::Callback<void(bool)> result_callback,
    140     base::Closure* cancel_callback) OVERRIDE;
    141   virtual bool CanCreateWindow(const GURL& opener_url,
    142                                const GURL& opener_top_level_frame_url,
    143                                const GURL& source_origin,
    144                                WindowContainerType container_type,
    145                                const GURL& target_url,
    146                                const content::Referrer& referrer,
    147                                WindowOpenDisposition disposition,
    148                                const blink::WebWindowFeatures& features,
    149                                bool user_gesture,
    150                                bool opener_suppressed,
    151                                content::ResourceContext* context,
    152                                int render_process_id,
    153                                int opener_id,
    154                                bool* no_javascript_access) OVERRIDE;
    155   virtual void ResourceDispatcherHostCreated() OVERRIDE;
    156   virtual net::NetLog* GetNetLog() OVERRIDE;
    157   virtual content::AccessTokenStore* CreateAccessTokenStore() OVERRIDE;
    158   virtual bool IsFastShutdownPossible() OVERRIDE;
    159   virtual void ClearCache(content::RenderViewHost* rvh) OVERRIDE;
    160   virtual void ClearCookies(content::RenderViewHost* rvh) OVERRIDE;
    161   virtual base::FilePath GetDefaultDownloadDirectory() OVERRIDE;
    162   virtual std::string GetDefaultDownloadName() OVERRIDE;
    163   virtual void DidCreatePpapiPlugin(
    164       content::BrowserPpapiHost* browser_host) OVERRIDE;
    165   virtual bool AllowPepperSocketAPI(
    166       content::BrowserContext* browser_context,
    167       const GURL& url,
    168       bool private_api,
    169       const content::SocketPermissionRequest* params) OVERRIDE;
    170   virtual void OverrideWebkitPrefs(content::RenderViewHost* rvh,
    171                                    const GURL& url,
    172                                    content::WebPreferences* web_prefs) OVERRIDE;
    173 #if defined(VIDEO_HOLE)
    174   virtual content::ExternalVideoSurfaceContainer*
    175       OverrideCreateExternalVideoSurfaceContainer(
    176           content::WebContents* web_contents) OVERRIDE;
    177 #endif
    178   virtual content::DevToolsManagerDelegate*
    179       GetDevToolsManagerDelegate() OVERRIDE;
    180 
    181  private:
    182   // Android WebView currently has a single global (non-off-the-record) browser
    183   // context.
    184   scoped_ptr<AwBrowserContext> browser_context_;
    185   scoped_ptr<AwWebPreferencesPopulater> preferences_populater_;
    186 
    187   JniDependencyFactory* native_factory_;
    188 
    189   DISALLOW_COPY_AND_ASSIGN(AwContentBrowserClient);
    190 };
    191 
    192 }  // namespace android_webview
    193 
    194 #endif  // ANDROID_WEBVIEW_LIB_AW_CONTENT_BROWSER_CLIENT_H_
    195