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 #include "content/public/browser/content_browser_client.h"
6
7 #include "base/files/file_path.h"
8 #include "ui/gfx/image/image_skia.h"
9 #include "url/gurl.h"
10
11 namespace content {
12
CreateBrowserMainParts(const MainFunctionParams & parameters)13 BrowserMainParts* ContentBrowserClient::CreateBrowserMainParts(
14 const MainFunctionParams& parameters) {
15 return NULL;
16 }
17
GetWebContentsViewDelegate(WebContents * web_contents)18 WebContentsViewDelegate* ContentBrowserClient::GetWebContentsViewDelegate(
19 WebContents* web_contents) {
20 return NULL;
21 }
22
GetEffectiveURL(BrowserContext * browser_context,const GURL & url)23 GURL ContentBrowserClient::GetEffectiveURL(BrowserContext* browser_context,
24 const GURL& url) {
25 return url;
26 }
27
ShouldUseProcessPerSite(BrowserContext * browser_context,const GURL & effective_url)28 bool ContentBrowserClient::ShouldUseProcessPerSite(
29 BrowserContext* browser_context, const GURL& effective_url) {
30 return false;
31 }
32
CreateRequestContext(BrowserContext * browser_context,ProtocolHandlerMap * protocol_handlers,URLRequestInterceptorScopedVector request_interceptors)33 net::URLRequestContextGetter* ContentBrowserClient::CreateRequestContext(
34 BrowserContext* browser_context,
35 ProtocolHandlerMap* protocol_handlers,
36 URLRequestInterceptorScopedVector request_interceptors) {
37 return NULL;
38 }
39
40 net::URLRequestContextGetter*
CreateRequestContextForStoragePartition(BrowserContext * browser_context,const base::FilePath & partition_path,bool in_memory,ProtocolHandlerMap * protocol_handlers,URLRequestInterceptorScopedVector request_interceptors)41 ContentBrowserClient::CreateRequestContextForStoragePartition(
42 BrowserContext* browser_context,
43 const base::FilePath& partition_path,
44 bool in_memory,
45 ProtocolHandlerMap* protocol_handlers,
46 URLRequestInterceptorScopedVector request_interceptors) {
47 return NULL;
48 }
49
IsHandledURL(const GURL & url)50 bool ContentBrowserClient::IsHandledURL(const GURL& url) {
51 return false;
52 }
53
CanCommitURL(RenderProcessHost * process_host,const GURL & site_url)54 bool ContentBrowserClient::CanCommitURL(RenderProcessHost* process_host,
55 const GURL& site_url) {
56 return true;
57 }
58
ShouldAllowOpenURL(SiteInstance * site_instance,const GURL & url)59 bool ContentBrowserClient::ShouldAllowOpenURL(SiteInstance* site_instance,
60 const GURL& url) {
61 return true;
62 }
63
IsSuitableHost(RenderProcessHost * process_host,const GURL & site_url)64 bool ContentBrowserClient::IsSuitableHost(RenderProcessHost* process_host,
65 const GURL& site_url) {
66 return true;
67 }
68
MayReuseHost(RenderProcessHost * process_host)69 bool ContentBrowserClient::MayReuseHost(RenderProcessHost* process_host) {
70 return true;
71 }
72
ShouldTryToUseExistingProcessHost(BrowserContext * browser_context,const GURL & url)73 bool ContentBrowserClient::ShouldTryToUseExistingProcessHost(
74 BrowserContext* browser_context, const GURL& url) {
75 return false;
76 }
77
ShouldSwapBrowsingInstancesForNavigation(SiteInstance * site_instance,const GURL & current_url,const GURL & new_url)78 bool ContentBrowserClient::ShouldSwapBrowsingInstancesForNavigation(
79 SiteInstance* site_instance,
80 const GURL& current_url,
81 const GURL& new_url) {
82 return false;
83 }
84
ShouldSwapProcessesForRedirect(ResourceContext * resource_context,const GURL & current_url,const GURL & new_url)85 bool ContentBrowserClient::ShouldSwapProcessesForRedirect(
86 ResourceContext* resource_context, const GURL& current_url,
87 const GURL& new_url) {
88 return false;
89 }
90
ShouldAssignSiteForURL(const GURL & url)91 bool ContentBrowserClient::ShouldAssignSiteForURL(const GURL& url) {
92 return true;
93 }
94
GetCanonicalEncodingNameByAliasName(const std::string & alias_name)95 std::string ContentBrowserClient::GetCanonicalEncodingNameByAliasName(
96 const std::string& alias_name) {
97 return std::string();
98 }
99
GetApplicationLocale()100 std::string ContentBrowserClient::GetApplicationLocale() {
101 return "en-US";
102 }
103
GetAcceptLangs(BrowserContext * context)104 std::string ContentBrowserClient::GetAcceptLangs(BrowserContext* context) {
105 return std::string();
106 }
107
GetDefaultFavicon()108 const gfx::ImageSkia* ContentBrowserClient::GetDefaultFavicon() {
109 static gfx::ImageSkia* empty = new gfx::ImageSkia();
110 return empty;
111 }
112
AllowAppCache(const GURL & manifest_url,const GURL & first_party,ResourceContext * context)113 bool ContentBrowserClient::AllowAppCache(const GURL& manifest_url,
114 const GURL& first_party,
115 ResourceContext* context) {
116 return true;
117 }
118
AllowGetCookie(const GURL & url,const GURL & first_party,const net::CookieList & cookie_list,ResourceContext * context,int render_process_id,int render_frame_id)119 bool ContentBrowserClient::AllowGetCookie(const GURL& url,
120 const GURL& first_party,
121 const net::CookieList& cookie_list,
122 ResourceContext* context,
123 int render_process_id,
124 int render_frame_id) {
125 return true;
126 }
127
AllowSetCookie(const GURL & url,const GURL & first_party,const std::string & cookie_line,ResourceContext * context,int render_process_id,int render_frame_id,net::CookieOptions * options)128 bool ContentBrowserClient::AllowSetCookie(const GURL& url,
129 const GURL& first_party,
130 const std::string& cookie_line,
131 ResourceContext* context,
132 int render_process_id,
133 int render_frame_id,
134 net::CookieOptions* options) {
135 return true;
136 }
137
AllowSaveLocalState(ResourceContext * context)138 bool ContentBrowserClient::AllowSaveLocalState(ResourceContext* context) {
139 return true;
140 }
141
AllowWorkerDatabase(const GURL & url,const base::string16 & name,const base::string16 & display_name,unsigned long estimated_size,ResourceContext * context,const std::vector<std::pair<int,int>> & render_frames)142 bool ContentBrowserClient::AllowWorkerDatabase(
143 const GURL& url,
144 const base::string16& name,
145 const base::string16& display_name,
146 unsigned long estimated_size,
147 ResourceContext* context,
148 const std::vector<std::pair<int, int> >& render_frames) {
149 return true;
150 }
151
AllowWorkerFileSystem(const GURL & url,ResourceContext * context,const std::vector<std::pair<int,int>> & render_frames)152 bool ContentBrowserClient::AllowWorkerFileSystem(
153 const GURL& url,
154 ResourceContext* context,
155 const std::vector<std::pair<int, int> >& render_frames) {
156 return true;
157 }
158
AllowWorkerIndexedDB(const GURL & url,const base::string16 & name,ResourceContext * context,const std::vector<std::pair<int,int>> & render_frames)159 bool ContentBrowserClient::AllowWorkerIndexedDB(
160 const GURL& url,
161 const base::string16& name,
162 ResourceContext* context,
163 const std::vector<std::pair<int, int> >& render_frames) {
164 return true;
165 }
166
CreateQuotaPermissionContext()167 QuotaPermissionContext* ContentBrowserClient::CreateQuotaPermissionContext() {
168 return NULL;
169 }
170
OverrideRequestContextForURL(const GURL & url,ResourceContext * context)171 net::URLRequestContext* ContentBrowserClient::OverrideRequestContextForURL(
172 const GURL& url, ResourceContext* context) {
173 return NULL;
174 }
175
GetStoragePartitionIdForSite(BrowserContext * browser_context,const GURL & site)176 std::string ContentBrowserClient::GetStoragePartitionIdForSite(
177 BrowserContext* browser_context,
178 const GURL& site) {
179 return std::string();
180 }
181
IsValidStoragePartitionId(BrowserContext * browser_context,const std::string & partition_id)182 bool ContentBrowserClient::IsValidStoragePartitionId(
183 BrowserContext* browser_context,
184 const std::string& partition_id) {
185 // Since the GetStoragePartitionIdForChildProcess() only generates empty
186 // strings, we should only ever see empty strings coming back.
187 return partition_id.empty();
188 }
189
GetStoragePartitionConfigForSite(BrowserContext * browser_context,const GURL & site,bool can_be_default,std::string * partition_domain,std::string * partition_name,bool * in_memory)190 void ContentBrowserClient::GetStoragePartitionConfigForSite(
191 BrowserContext* browser_context,
192 const GURL& site,
193 bool can_be_default,
194 std::string* partition_domain,
195 std::string* partition_name,
196 bool* in_memory) {
197 partition_domain->clear();
198 partition_name->clear();
199 *in_memory = false;
200 }
201
GetMediaObserver()202 MediaObserver* ContentBrowserClient::GetMediaObserver() {
203 return NULL;
204 }
205
206 blink::WebNotificationPresenter::Permission
CheckDesktopNotificationPermission(const GURL & source_origin,ResourceContext * context,int render_process_id)207 ContentBrowserClient::CheckDesktopNotificationPermission(
208 const GURL& source_origin,
209 ResourceContext* context,
210 int render_process_id) {
211 return blink::WebNotificationPresenter::PermissionAllowed;
212 }
213
RequestGeolocationPermission(WebContents * web_contents,int bridge_id,const GURL & requesting_frame,bool user_gesture,base::Callback<void (bool)> result_callback,base::Closure * cancel_callback)214 void ContentBrowserClient::RequestGeolocationPermission(
215 WebContents* web_contents,
216 int bridge_id,
217 const GURL& requesting_frame,
218 bool user_gesture,
219 base::Callback<void(bool)> result_callback,
220 base::Closure* cancel_callback) {
221 result_callback.Run(true);
222 }
223
RequestMidiSysExPermission(WebContents * web_contents,int bridge_id,const GURL & requesting_frame,bool user_gesture,base::Callback<void (bool)> result_callback,base::Closure * cancel_callback)224 void ContentBrowserClient::RequestMidiSysExPermission(
225 WebContents* web_contents,
226 int bridge_id,
227 const GURL& requesting_frame,
228 bool user_gesture,
229 base::Callback<void(bool)> result_callback,
230 base::Closure* cancel_callback) {
231 result_callback.Run(true);
232 }
233
RequestProtectedMediaIdentifierPermission(WebContents * web_contents,const GURL & origin,base::Callback<void (bool)> result_callback,base::Closure * cancel_callback)234 void ContentBrowserClient::RequestProtectedMediaIdentifierPermission(
235 WebContents* web_contents,
236 const GURL& origin,
237 base::Callback<void(bool)> result_callback,
238 base::Closure* cancel_callback) {
239 result_callback.Run(true);
240 }
241
CanCreateWindow(const GURL & opener_url,const GURL & opener_top_level_frame_url,const GURL & source_origin,WindowContainerType container_type,const GURL & target_url,const Referrer & referrer,WindowOpenDisposition disposition,const blink::WebWindowFeatures & features,bool user_gesture,bool opener_suppressed,ResourceContext * context,int render_process_id,int opener_id,bool * no_javascript_access)242 bool ContentBrowserClient::CanCreateWindow(
243 const GURL& opener_url,
244 const GURL& opener_top_level_frame_url,
245 const GURL& source_origin,
246 WindowContainerType container_type,
247 const GURL& target_url,
248 const Referrer& referrer,
249 WindowOpenDisposition disposition,
250 const blink::WebWindowFeatures& features,
251 bool user_gesture,
252 bool opener_suppressed,
253 ResourceContext* context,
254 int render_process_id,
255 int opener_id,
256 bool* no_javascript_access) {
257 *no_javascript_access = false;
258 return true;
259 }
260
GetWorkerProcessTitle(const GURL & url,ResourceContext * context)261 std::string ContentBrowserClient::GetWorkerProcessTitle(
262 const GURL& url, ResourceContext* context) {
263 return std::string();
264 }
265
266 SpeechRecognitionManagerDelegate*
GetSpeechRecognitionManagerDelegate()267 ContentBrowserClient::GetSpeechRecognitionManagerDelegate() {
268 return NULL;
269 }
270
GetNetLog()271 net::NetLog* ContentBrowserClient::GetNetLog() {
272 return NULL;
273 }
274
CreateAccessTokenStore()275 AccessTokenStore* ContentBrowserClient::CreateAccessTokenStore() {
276 return NULL;
277 }
278
IsFastShutdownPossible()279 bool ContentBrowserClient::IsFastShutdownPossible() {
280 return true;
281 }
282
GetDefaultDownloadDirectory()283 base::FilePath ContentBrowserClient::GetDefaultDownloadDirectory() {
284 return base::FilePath();
285 }
286
GetDefaultDownloadName()287 std::string ContentBrowserClient::GetDefaultDownloadName() {
288 return std::string();
289 }
290
291 BrowserPpapiHost*
GetExternalBrowserPpapiHost(int plugin_process_id)292 ContentBrowserClient::GetExternalBrowserPpapiHost(int plugin_process_id) {
293 return NULL;
294 }
295
AllowPepperSocketAPI(BrowserContext * browser_context,const GURL & url,bool private_api,const SocketPermissionRequest * params)296 bool ContentBrowserClient::AllowPepperSocketAPI(
297 BrowserContext* browser_context,
298 const GURL& url,
299 bool private_api,
300 const SocketPermissionRequest* params) {
301 return false;
302 }
303
CreateSelectFilePolicy(WebContents * web_contents)304 ui::SelectFilePolicy* ContentBrowserClient::CreateSelectFilePolicy(
305 WebContents* web_contents) {
306 return NULL;
307 }
308
OverrideSystemLocationProvider()309 LocationProvider* ContentBrowserClient::OverrideSystemLocationProvider() {
310 return NULL;
311 }
312
OverrideVibrationProvider()313 VibrationProvider* ContentBrowserClient::OverrideVibrationProvider() {
314 return NULL;
315 }
316
GetDevToolsManagerDelegate()317 DevToolsManagerDelegate* ContentBrowserClient::GetDevToolsManagerDelegate() {
318 return NULL;
319 }
320
IsPluginAllowedToCallRequestOSFileHandle(BrowserContext * browser_context,const GURL & url)321 bool ContentBrowserClient::IsPluginAllowedToCallRequestOSFileHandle(
322 BrowserContext* browser_context,
323 const GURL& url) {
324 return false;
325 }
326
IsPluginAllowedToUseDevChannelAPIs(BrowserContext * browser_context,const GURL & url)327 bool ContentBrowserClient::IsPluginAllowedToUseDevChannelAPIs(
328 BrowserContext* browser_context,
329 const GURL& url) {
330 return false;
331 }
332
OverrideCookieStoreForRenderProcess(int render_process_id)333 net::CookieStore* ContentBrowserClient::OverrideCookieStoreForRenderProcess(
334 int render_process_id) {
335 return NULL;
336 }
337
338 #if defined(OS_WIN)
GetResourceDllName()339 const wchar_t* ContentBrowserClient::GetResourceDllName() {
340 return NULL;
341 }
342 #endif
343
344 #if defined(VIDEO_HOLE)
345 ExternalVideoSurfaceContainer*
OverrideCreateExternalVideoSurfaceContainer(WebContents * web_contents)346 ContentBrowserClient::OverrideCreateExternalVideoSurfaceContainer(
347 WebContents* web_contents) {
348 return NULL;
349 }
350 #endif
351
352 } // namespace content
353