• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_BROWSER_CONTEXT_H_
6 #define CHROMECAST_SHELL_BROWSER_CAST_BROWSER_CONTEXT_H_
7 
8 #include "base/files/file_path.h"
9 #include "base/macros.h"
10 #include "content/public/browser/browser_context.h"
11 #include "content/public/browser/content_browser_client.h"
12 
13 namespace chromecast {
14 namespace shell {
15 
16 class CastDownloadManagerDelegate;
17 class URLRequestContextFactory;
18 
19 // Chromecast does not currently support multiple profiles.  So there is a
20 // single BrowserContext for all chromecast renderers.
21 // There is no support for PartitionStorage.
22 class CastBrowserContext : public content::BrowserContext {
23  public:
24   explicit CastBrowserContext(
25       URLRequestContextFactory* url_request_context_factory);
26   virtual ~CastBrowserContext();
27 
28   // BrowserContext implementation:
29   virtual base::FilePath GetPath() const OVERRIDE;
30   virtual bool IsOffTheRecord() const OVERRIDE;
31   virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE;
32   virtual net::URLRequestContextGetter* GetRequestContextForRenderProcess(
33       int renderer_child_id) OVERRIDE;
34   virtual net::URLRequestContextGetter* GetMediaRequestContext() OVERRIDE;
35   virtual net::URLRequestContextGetter* GetMediaRequestContextForRenderProcess(
36       int renderer_child_id) OVERRIDE;
37   virtual net::URLRequestContextGetter*
38       GetMediaRequestContextForStoragePartition(
39           const base::FilePath& partition_path,
40           bool in_memory) OVERRIDE;
41   virtual content::ResourceContext* GetResourceContext() OVERRIDE;
42   virtual content::DownloadManagerDelegate*
43       GetDownloadManagerDelegate() OVERRIDE;
44   virtual content::BrowserPluginGuestManager* GetGuestManager() OVERRIDE;
45   virtual storage::SpecialStoragePolicy* GetSpecialStoragePolicy() OVERRIDE;
46   virtual content::PushMessagingService* GetPushMessagingService() OVERRIDE;
47   virtual content::SSLHostStateDelegate* GetSSLHostStateDelegate() OVERRIDE;
48 
49  private:
50   class CastResourceContext;
51 
52   // Performs initialization of the CastBrowserContext while IO is still
53   // allowed on the current thread.
54   void InitWhileIOAllowed();
55 
56   URLRequestContextFactory* const url_request_context_factory_;
57   base::FilePath path_;
58   scoped_ptr<CastResourceContext> resource_context_;
59   scoped_ptr<CastDownloadManagerDelegate> download_manager_delegate_;
60 
61   DISALLOW_COPY_AND_ASSIGN(CastBrowserContext);
62 };
63 
64 }  // namespace shell
65 }  // namespace chromecast
66 
67 #endif  // CHROMECAST_SHELL_BROWSER_CAST_BROWSER_CONTEXT_H_
68