// 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" 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); ~AwContentBrowserClient() override; // Overriden methods from ContentBrowserClient. void AddCertificate(net::CertificateMimeType cert_type, const void* cert_data, size_t cert_size, int render_process_id, int render_frame_id) override; content::BrowserMainParts* CreateBrowserMainParts( const content::MainFunctionParams& parameters) override; content::WebContentsViewDelegate* GetWebContentsViewDelegate( content::WebContents* web_contents) override; void RenderProcessWillLaunch(content::RenderProcessHost* host) override; net::URLRequestContextGetter* CreateRequestContext( content::BrowserContext* browser_context, content::ProtocolHandlerMap* protocol_handlers, content::URLRequestInterceptorScopedVector request_interceptors) override; net::URLRequestContextGetter* CreateRequestContextForStoragePartition( content::BrowserContext* browser_context, const base::FilePath& partition_path, bool in_memory, content::ProtocolHandlerMap* protocol_handlers, content::URLRequestInterceptorScopedVector request_interceptors) override; std::string GetCanonicalEncodingNameByAliasName( const std::string& alias_name) override; void AppendExtraCommandLineSwitches(base::CommandLine* command_line, int child_process_id) override; std::string GetApplicationLocale() override; std::string GetAcceptLangs(content::BrowserContext* context) override; const gfx::ImageSkia* GetDefaultFavicon() override; bool AllowAppCache(const GURL& manifest_url, const GURL& first_party, content::ResourceContext* context) override; 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; 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; 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; void AllowWorkerFileSystem( const GURL& url, content::ResourceContext* context, const std::vector>& render_frames, base::Callback callback) override; bool AllowWorkerIndexedDB( const GURL& url, const base::string16& name, content::ResourceContext* context, const std::vector>& render_frames) override; content::QuotaPermissionContext* CreateQuotaPermissionContext() override; void AllowCertificateError( int render_process_id, int render_frame_id, int cert_error, const net::SSLInfo& ssl_info, const GURL& request_url, content::ResourceType resource_type, bool overridable, bool strict_enforcement, bool expired_previous_decision, const base::Callback& callback, content::CertificateRequestResultType* result) override; void SelectClientCertificate( int render_process_id, int render_frame_id, net::SSLCertRequestInfo* cert_request_info, const base::Callback& callback) override; void RequestPermission( content::PermissionType permission, content::WebContents* web_contents, int bridge_id, const GURL& requesting_frame, bool user_gesture, const base::Callback& result_callback) override; void CancelPermissionRequest(content::PermissionType permission, content::WebContents* web_contents, int bridge_id, const GURL& origin) override; 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, int opener_id, bool* no_javascript_access) override; void ResourceDispatcherHostCreated() override; net::NetLog* GetNetLog() override; content::AccessTokenStore* CreateAccessTokenStore() override; bool IsFastShutdownPossible() override; void ClearCache(content::RenderViewHost* rvh) override; void ClearCookies(content::RenderViewHost* rvh) override; base::FilePath GetDefaultDownloadDirectory() override; std::string GetDefaultDownloadName() override; void DidCreatePpapiPlugin(content::BrowserPpapiHost* browser_host) override; bool AllowPepperSocketAPI( content::BrowserContext* browser_context, const GURL& url, bool private_api, const content::SocketPermissionRequest* params) override; void OverrideWebkitPrefs(content::RenderViewHost* rvh, content::WebPreferences* web_prefs) override; #if defined(VIDEO_HOLE) content::ExternalVideoSurfaceContainer* OverrideCreateExternalVideoSurfaceContainer( content::WebContents* web_contents) override; #endif content::DevToolsManagerDelegate* GetDevToolsManagerDelegate() 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_