1 // Copyright (c) 2013 Intel Corporation. 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 XWALK_RUNTIME_BROWSER_XWALK_CONTENT_BROWSER_CLIENT_H_
6 #define XWALK_RUNTIME_BROWSER_XWALK_CONTENT_BROWSER_CLIENT_H_
11 #include "base/compiler_specific.h"
12 #include "content/public/browser/content_browser_client.h"
13 #include "content/public/common/main_function_params.h"
14 #include "xwalk/runtime/browser/runtime_geolocation_permission_context.h"
15 #include "xwalk/runtime/browser/runtime_resource_dispatcher_host_delegate.h"
19 class ResourceContext;
20 class QuotaPermissionContext;
21 class SpeechRecognitionManagerDelegate;
23 class WebContentsViewDelegate;
27 class URLRequestContextGetter;
32 class XWalkBrowserContext;
33 class XWalkBrowserMainParts;
36 class XWalkContentBrowserClient : public content::ContentBrowserClient {
38 static XWalkContentBrowserClient* Get();
40 explicit XWalkContentBrowserClient(XWalkRunner* xwalk_runner);
41 virtual ~XWalkContentBrowserClient();
43 // ContentBrowserClient overrides.
44 content::BrowserMainParts* CreateBrowserMainParts(
45 const content::MainFunctionParams& parameters) override;
46 net::URLRequestContextGetter* CreateRequestContext(
47 content::BrowserContext* browser_context,
48 content::ProtocolHandlerMap* protocol_handlers,
49 content::URLRequestInterceptorScopedVector request_interceptors) override;
50 net::URLRequestContextGetter* CreateRequestContextForStoragePartition(
51 content::BrowserContext* browser_context,
52 const base::FilePath& partition_path,
54 content::ProtocolHandlerMap* protocol_handlers,
55 content::URLRequestInterceptorScopedVector request_interceptors) override;
56 void AppendExtraCommandLineSwitches(CommandLine* command_line,
57 int child_process_id) override;
58 content::QuotaPermissionContext*
59 CreateQuotaPermissionContext() override;
60 content::AccessTokenStore* CreateAccessTokenStore() override;
61 content::WebContentsViewDelegate* GetWebContentsViewDelegate(
62 content::WebContents* web_contents) override;
63 void RenderProcessWillLaunch(
64 content::RenderProcessHost* host) override;
65 content::MediaObserver* GetMediaObserver() override;
67 bool AllowGetCookie(const GURL& url,
68 const GURL& first_party,
69 const net::CookieList& cookie_list,
70 content::ResourceContext* context,
71 int render_process_id,
72 int render_frame_id) override;
73 bool AllowSetCookie(const GURL& url,
74 const GURL& first_party,
75 const std::string& cookie_line,
76 content::ResourceContext* context,
77 int render_process_id,
79 net::CookieOptions* options) override;
81 void AllowCertificateError(
82 int render_process_id,
85 const net::SSLInfo& ssl_info,
86 const GURL& request_url,
87 content::ResourceType resource_type,
89 bool strict_enforcement,
90 bool expired_previous_decision,
91 const base::Callback<void(bool)>& callback, // NOLINT
92 content::CertificateRequestResultType* result) override;
94 content::SpeechRecognitionManagerDelegate*
95 GetSpeechRecognitionManagerDelegate() override;
97 blink::WebNotificationPermission
98 CheckDesktopNotificationPermission(
99 const GURL& source_url,
100 content::ResourceContext* context,
101 int render_process_id) override;
102 void ShowDesktopNotification(
103 const content::ShowDesktopNotificationHostMsgParams& params,
104 content::BrowserContext* browser_context,
105 int render_process_id,
106 scoped_ptr<content::DesktopNotificationDelegate> delegate,
107 base::Closure* cancel_callback) override;
108 void RequestPermission(
109 content::PermissionType permission,
110 content::WebContents* web_contents,
112 const GURL& requesting_frame,
114 const base::Callback<void(bool)>& result_callback) override;
115 void CancelPermissionRequest(
116 content::PermissionType permission,
117 content::WebContents* web_contents,
119 const GURL& requesting_frame) override;
120 #if !defined(OS_ANDROID)
121 bool CanCreateWindow(const GURL& opener_url,
122 const GURL& opener_top_level_frame_url,
123 const GURL& source_origin,
124 WindowContainerType container_type,
125 const GURL& target_url,
126 const content::Referrer& referrer,
127 WindowOpenDisposition disposition,
128 const blink::WebWindowFeatures& features,
130 bool opener_suppressed,
131 content::ResourceContext* context,
132 int render_process_id,
134 bool* no_javascript_access) override;
137 void DidCreatePpapiPlugin(
138 content::BrowserPpapiHost* browser_host) override;
139 content::BrowserPpapiHost* GetExternalBrowserPpapiHost(
140 int plugin_process_id) override;
142 #if defined(OS_ANDROID) || defined(OS_TIZEN) || defined(OS_LINUX)
143 void ResourceDispatcherHostCreated() override;
146 content::LocationProvider* OverrideSystemLocationProvider() override;
148 void GetStoragePartitionConfigForSite(
149 content::BrowserContext* browser_context,
152 std::string* partition_domain,
153 std::string* partition_name,
154 bool* in_memory) override;
156 content::DevToolsManagerDelegate*
157 GetDevToolsManagerDelegate() override;
159 XWalkBrowserMainParts* main_parts() { return main_parts_; }
161 #if defined(OS_ANDROID)
162 RuntimeResourceDispatcherHostDelegate* resource_dispatcher_host_delegate() {
163 return resource_dispatcher_host_delegate_.get();
168 XWalkRunner* xwalk_runner_;
169 net::URLRequestContextGetter* url_request_context_getter_;
170 scoped_refptr<RuntimeGeolocationPermissionContext>
171 geolocation_permission_context_;
172 XWalkBrowserMainParts* main_parts_;
173 XWalkBrowserContext* browser_context_;
175 scoped_ptr<RuntimeResourceDispatcherHostDelegate>
176 resource_dispatcher_host_delegate_;
178 DISALLOW_COPY_AND_ASSIGN(XWalkContentBrowserClient);
183 #endif // XWALK_RUNTIME_BROWSER_XWALK_CONTENT_BROWSER_CLIENT_H_