1// Copyright 2014 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 CHROMECAST_SHELL_BROWSER_CAST_CONTENT_BROWSER_CLIENT_H_
6#define CHROMECAST_SHELL_BROWSER_CAST_CONTENT_BROWSER_CLIENT_H_
7
8#include "base/macros.h"
9#include "base/memory/scoped_ptr.h"
10#include "content/public/browser/content_browser_client.h"
11
12namespace chromecast {
13namespace shell {
14
15class CastBrowserMainParts;
16class URLRequestContextFactory;
17
18class CastContentBrowserClient: public content::ContentBrowserClient {
19 public:
20  CastContentBrowserClient();
21  virtual ~CastContentBrowserClient();
22
23  // content::ContentBrowserClient implementation:
24  virtual content::BrowserMainParts* CreateBrowserMainParts(
25      const content::MainFunctionParams& parameters) OVERRIDE;
26  virtual void RenderProcessWillLaunch(
27      content::RenderProcessHost* host) OVERRIDE;
28  virtual net::URLRequestContextGetter* CreateRequestContext(
29      content::BrowserContext* browser_context,
30      content::ProtocolHandlerMap* protocol_handlers,
31      content::URLRequestInterceptorScopedVector request_interceptors)
32      OVERRIDE;
33  virtual bool IsHandledURL(const GURL& url) OVERRIDE;
34  virtual void AppendExtraCommandLineSwitches(base::CommandLine* command_line,
35                                              int child_process_id) OVERRIDE;
36  virtual content::AccessTokenStore* CreateAccessTokenStore() OVERRIDE;
37  virtual void OverrideWebkitPrefs(content::RenderViewHost* render_view_host,
38                                   const GURL& url,
39                                   content::WebPreferences* prefs) OVERRIDE;
40  virtual std::string GetApplicationLocale() OVERRIDE;
41  virtual void AllowCertificateError(
42      int render_process_id,
43      int render_view_id,
44      int cert_error,
45      const net::SSLInfo& ssl_info,
46      const GURL& request_url,
47      content::ResourceType resource_type,
48      bool overridable,
49      bool strict_enforcement,
50      bool expired_previous_decision,
51      const base::Callback<void(bool)>& callback,
52      content::CertificateRequestResultType* result) OVERRIDE;
53  virtual bool CanCreateWindow(
54      const GURL& opener_url,
55      const GURL& opener_top_level_frame_url,
56      const GURL& source_origin,
57      WindowContainerType container_type,
58      const GURL& target_url,
59      const content::Referrer& referrer,
60      WindowOpenDisposition disposition,
61      const blink::WebWindowFeatures& features,
62      bool user_gesture,
63      bool opener_suppressed,
64      content::ResourceContext* context,
65      int render_process_id,
66      int opener_id,
67      bool* no_javascript_access) OVERRIDE;
68  virtual content::DevToolsManagerDelegate*
69      GetDevToolsManagerDelegate() OVERRIDE;
70  virtual void GetAdditionalMappedFilesForChildProcess(
71      const base::CommandLine& command_line,
72      int child_process_id,
73      std::vector<content::FileDescriptorInfo>* mappings) OVERRIDE;
74
75 private:
76  scoped_ptr<URLRequestContextFactory> url_request_context_factory_;
77
78  DISALLOW_COPY_AND_ASSIGN(CastContentBrowserClient);
79};
80
81}  // namespace shell
82}  // namespace chromecast
83
84#endif  // CHROMECAST_SHELL_BROWSER_CAST_CONTENT_BROWSER_CLIENT_H_
85