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.
5 #include "chromecast/browser/cast_browser_context.h"
7 #include "base/command_line.h"
8 #include "base/files/file_util.h"
9 #include "base/macros.h"
10 #include "base/path_service.h"
11 #include "chromecast/base/cast_paths.h"
12 #include "chromecast/browser/cast_download_manager_delegate.h"
13 #include "chromecast/browser/cast_permission_manager.h"
14 #include "chromecast/browser/url_request_context_factory.h"
15 #include "content/public/browser/browser_thread.h"
16 #include "content/public/browser/resource_context.h"
17 #include "content/public/browser/storage_partition.h"
18 #include "content/public/common/content_switches.h"
19 #include "net/url_request/url_request_context.h"
20 #include "net/url_request/url_request_context_getter.h"
22 namespace chromecast
{
25 class CastBrowserContext::CastResourceContext
:
26 public content::ResourceContext
{
28 explicit CastResourceContext(
29 URLRequestContextFactory
* url_request_context_factory
) :
30 url_request_context_factory_(url_request_context_factory
) {}
31 ~CastResourceContext() override
{}
33 // ResourceContext implementation:
34 net::HostResolver
* GetHostResolver() override
{
35 return url_request_context_factory_
->GetMainGetter()->
36 GetURLRequestContext()->host_resolver();
39 net::URLRequestContext
* GetRequestContext() override
{
40 return url_request_context_factory_
->GetMainGetter()->
41 GetURLRequestContext();
45 URLRequestContextFactory
* url_request_context_factory_
;
47 DISALLOW_COPY_AND_ASSIGN(CastResourceContext
);
50 CastBrowserContext::CastBrowserContext(
51 URLRequestContextFactory
* url_request_context_factory
)
52 : url_request_context_factory_(url_request_context_factory
),
53 resource_context_(new CastResourceContext(url_request_context_factory
)),
54 download_manager_delegate_(new CastDownloadManagerDelegate()) {
58 CastBrowserContext::~CastBrowserContext() {
59 content::BrowserThread::DeleteSoon(
60 content::BrowserThread::IO
,
62 resource_context_
.release());
65 void CastBrowserContext::InitWhileIOAllowed() {
66 #if defined(OS_ANDROID)
67 CHECK(PathService::Get(base::DIR_ANDROID_APP_DATA
, &path_
));
68 path_
= path_
.Append(FILE_PATH_LITERAL("cast_shell"));
70 if (!base::PathExists(path_
))
71 base::CreateDirectory(path_
);
73 // Chromecast doesn't support user profiles nor does it have
74 // incognito mode. This means that all of the persistent
75 // data (currently only cookies and local storage) will be
76 // shared in a single location as defined here.
77 CHECK(PathService::Get(DIR_CAST_HOME
, &path_
));
78 #endif // defined(OS_ANDROID)
81 scoped_ptr
<content::ZoomLevelDelegate
>
82 CastBrowserContext::CreateZoomLevelDelegate(
83 const base::FilePath
& partition_path
) {
87 base::FilePath
CastBrowserContext::GetPath() const {
91 bool CastBrowserContext::IsOffTheRecord() const {
95 net::URLRequestContextGetter
* CastBrowserContext::GetRequestContext() {
96 return GetDefaultStoragePartition(this)->GetURLRequestContext();
99 net::URLRequestContextGetter
*
100 CastBrowserContext::GetRequestContextForRenderProcess(int renderer_child_id
) {
101 return GetRequestContext();
104 net::URLRequestContextGetter
* CastBrowserContext::GetMediaRequestContext() {
105 return url_request_context_factory_
->GetMediaGetter();
108 net::URLRequestContextGetter
*
109 CastBrowserContext::GetMediaRequestContextForRenderProcess(
110 int renderer_child_id
) {
111 return GetMediaRequestContext();
114 net::URLRequestContextGetter
*
115 CastBrowserContext::GetMediaRequestContextForStoragePartition(
116 const base::FilePath
& partition_path
, bool in_memory
) {
117 return GetMediaRequestContext();
120 net::URLRequestContextGetter
* CastBrowserContext::GetSystemRequestContext() {
121 return url_request_context_factory_
->GetSystemGetter();
124 content::ResourceContext
* CastBrowserContext::GetResourceContext() {
125 return resource_context_
.get();
128 content::DownloadManagerDelegate
*
129 CastBrowserContext::GetDownloadManagerDelegate() {
130 return download_manager_delegate_
.get();
133 content::BrowserPluginGuestManager
* CastBrowserContext::GetGuestManager() {
138 storage::SpecialStoragePolicy
* CastBrowserContext::GetSpecialStoragePolicy() {
143 content::PushMessagingService
* CastBrowserContext::GetPushMessagingService() {
148 content::SSLHostStateDelegate
* CastBrowserContext::GetSSLHostStateDelegate() {
153 content::PermissionManager
* CastBrowserContext::GetPermissionManager() {
154 if (!permission_manager_
.get())
155 permission_manager_
.reset(new CastPermissionManager());
156 return permission_manager_
.get();
160 } // namespace chromecast