// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef ANDROID_WEBVIEW_LIB_AW_CONTENT_BROWSER_CLIENT_H_ #define ANDROID_WEBVIEW_LIB_AW_CONTENT_BROWSER_CLIENT_H_ #include "android_webview/browser/aw_web_preferences_populater.h" #include "base/basictypes.h" #include "base/compiler_specific.h" #include "base/memory/scoped_ptr.h" #include "content/public/browser/content_browser_client.h" #include "net/url_request/url_request_job_factory.h" struct WebPreferences; namespace android_webview { class AwBrowserContext; class JniDependencyFactory; class AwContentBrowserClient : public content::ContentBrowserClient { public: // This is what AwContentBrowserClient::GetAcceptLangs uses. static std::string GetAcceptLangsImpl(); // Deprecated: use AwBrowserContext::GetDefault() instead. static AwBrowserContext* GetAwBrowserContext(); AwContentBrowserClient(JniDependencyFactory* native_factory); virtual ~AwContentBrowserClient(); // Overriden methods from ContentBrowserClient. virtual void AddCertificate(net::URLRequest* request, net::CertificateMimeType cert_type, const void* cert_data, size_t cert_size, int render_process_id, int render_view_id) OVERRIDE; virtual content::BrowserMainParts* CreateBrowserMainParts( const content::MainFunctionParams& parameters) OVERRIDE; virtual content::WebContentsViewDelegate* GetWebContentsViewDelegate( content::WebContents* web_contents) OVERRIDE; virtual void RenderProcessWillLaunch( content::RenderProcessHost* host) OVERRIDE; virtual net::URLRequestContextGetter* CreateRequestContext( content::BrowserContext* browser_context, content::ProtocolHandlerMap* protocol_handlers, content::ProtocolHandlerScopedVector protocol_interceptors) OVERRIDE; virtual net::URLRequestContextGetter* CreateRequestContextForStoragePartition( content::BrowserContext* browser_context, const base::FilePath& partition_path, bool in_memory, content::ProtocolHandlerMap* protocol_handlers, content::ProtocolHandlerScopedVector protocol_interceptors) OVERRIDE; virtual std::string GetCanonicalEncodingNameByAliasName( const std::string& alias_name) OVERRIDE; virtual void AppendExtraCommandLineSwitches(base::CommandLine* command_line, int child_process_id) OVERRIDE; virtual std::string GetApplicationLocale() OVERRIDE; virtual std::string GetAcceptLangs(content::BrowserContext* context) OVERRIDE; virtual gfx::ImageSkia* GetDefaultFavicon() OVERRIDE; virtual bool AllowAppCache(const GURL& manifest_url, const GURL& first_party, content::ResourceContext* context) OVERRIDE; virtual bool AllowGetCookie(const GURL& url, const GURL& first_party, const net::CookieList& cookie_list, content::ResourceContext* context, int render_process_id, int render_frame_id) OVERRIDE; virtual bool AllowSetCookie(const GURL& url, const GURL& first_party, const std::string& cookie_line, content::ResourceContext* context, int render_process_id, int render_frame_id, net::CookieOptions* options) OVERRIDE; virtual bool AllowWorkerDatabase( const GURL& url, const base::string16& name, const base::string16& display_name, unsigned long estimated_size, content::ResourceContext* context, const std::vector >& render_frames) OVERRIDE; virtual bool AllowWorkerFileSystem( const GURL& url, content::ResourceContext* context, const std::vector >& render_frames) OVERRIDE; virtual bool AllowWorkerIndexedDB( const GURL& url, const base::string16& name, content::ResourceContext* context, const std::vector >& render_frames) OVERRIDE; virtual content::QuotaPermissionContext* CreateQuotaPermissionContext() OVERRIDE; virtual void AllowCertificateError( int render_process_id, int render_frame_id, int cert_error, const net::SSLInfo& ssl_info, const GURL& request_url, ResourceType::Type resource_type, bool overridable, bool strict_enforcement, const base::Callback& callback, content::CertificateRequestResultType* result) OVERRIDE; virtual void SelectClientCertificate( int render_process_id, int render_frame_id, const net::HttpNetworkSession* network_session, net::SSLCertRequestInfo* cert_request_info, const base::Callback& callback) OVERRIDE; virtual blink::WebNotificationPresenter::Permission CheckDesktopNotificationPermission( const GURL& source_url, content::ResourceContext* context, int render_process_id) OVERRIDE; virtual void ShowDesktopNotification( const content::ShowDesktopNotificationHostMsgParams& params, int render_process_id, int render_view_id, bool worker) OVERRIDE; virtual void CancelDesktopNotification( int render_process_id, int render_view_id, int notification_id) OVERRIDE; virtual bool CanCreateWindow(const GURL& opener_url, const GURL& opener_top_level_frame_url, const GURL& source_origin, WindowContainerType container_type, const GURL& target_url, const content::Referrer& referrer, WindowOpenDisposition disposition, const blink::WebWindowFeatures& features, bool user_gesture, bool opener_suppressed, content::ResourceContext* context, int render_process_id, bool is_guest, int opener_id, bool* no_javascript_access) OVERRIDE; virtual std::string GetWorkerProcessTitle( const GURL& url, content::ResourceContext* context) OVERRIDE; virtual void ResourceDispatcherHostCreated() OVERRIDE; virtual net::NetLog* GetNetLog() OVERRIDE; virtual content::AccessTokenStore* CreateAccessTokenStore() OVERRIDE; virtual bool IsFastShutdownPossible() OVERRIDE; virtual void UpdateInspectorSetting(content::RenderViewHost* rvh, const std::string& key, const std::string& value) OVERRIDE; virtual void ClearCache(content::RenderViewHost* rvh) OVERRIDE; virtual void ClearCookies(content::RenderViewHost* rvh) OVERRIDE; virtual base::FilePath GetDefaultDownloadDirectory() OVERRIDE; virtual std::string GetDefaultDownloadName() OVERRIDE; virtual void DidCreatePpapiPlugin( content::BrowserPpapiHost* browser_host) OVERRIDE; virtual bool AllowPepperSocketAPI( content::BrowserContext* browser_context, const GURL& url, bool private_api, const content::SocketPermissionRequest* params) OVERRIDE; virtual void OverrideWebkitPrefs(content::RenderViewHost* rvh, const GURL& url, WebPreferences* web_prefs) OVERRIDE; private: // Android WebView currently has a single global (non-off-the-record) browser // context. scoped_ptr browser_context_; scoped_ptr preferences_populater_; JniDependencyFactory* native_factory_; DISALLOW_COPY_AND_ASSIGN(AwContentBrowserClient); }; } // namespace android_webview #endif // ANDROID_WEBVIEW_LIB_AW_CONTENT_BROWSER_CLIENT_H_