Home | History | Annotate | Download | only in browser
      1 // Copyright 2013 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 CONTENT_SHELL_BROWSER_SHELL_BROWSER_CONTEXT_H_
      6 #define CONTENT_SHELL_BROWSER_SHELL_BROWSER_CONTEXT_H_
      7 
      8 #include "base/compiler_specific.h"
      9 #include "base/files/file_path.h"
     10 #include "base/memory/ref_counted.h"
     11 #include "base/memory/scoped_ptr.h"
     12 #include "content/public/browser/browser_context.h"
     13 #include "content/public/browser/content_browser_client.h"
     14 #include "net/url_request/url_request_job_factory.h"
     15 
     16 namespace net {
     17 class NetLog;
     18 }
     19 
     20 namespace content {
     21 
     22 class DownloadManagerDelegate;
     23 class ResourceContext;
     24 class ShellDownloadManagerDelegate;
     25 class ShellURLRequestContextGetter;
     26 
     27 class ShellBrowserContext : public BrowserContext {
     28  public:
     29   ShellBrowserContext(bool off_the_record, net::NetLog* net_log);
     30   virtual ~ShellBrowserContext();
     31 
     32   void set_guest_manager_for_testing(
     33       BrowserPluginGuestManager* guest_manager) {
     34     guest_manager_ = guest_manager;
     35   }
     36 
     37   // BrowserContext implementation.
     38   virtual base::FilePath GetPath() const OVERRIDE;
     39   virtual bool IsOffTheRecord() const OVERRIDE;
     40   virtual DownloadManagerDelegate* GetDownloadManagerDelegate() OVERRIDE;
     41   virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE;
     42   virtual net::URLRequestContextGetter* GetRequestContextForRenderProcess(
     43       int renderer_child_id) OVERRIDE;
     44   virtual net::URLRequestContextGetter* GetMediaRequestContext() OVERRIDE;
     45   virtual net::URLRequestContextGetter* GetMediaRequestContextForRenderProcess(
     46       int renderer_child_id) OVERRIDE;
     47   virtual net::URLRequestContextGetter*
     48       GetMediaRequestContextForStoragePartition(
     49           const base::FilePath& partition_path,
     50           bool in_memory) OVERRIDE;
     51   virtual ResourceContext* GetResourceContext() OVERRIDE;
     52   virtual BrowserPluginGuestManager* GetGuestManager() OVERRIDE;
     53   virtual storage::SpecialStoragePolicy* GetSpecialStoragePolicy() OVERRIDE;
     54   virtual PushMessagingService* GetPushMessagingService() OVERRIDE;
     55   virtual SSLHostStateDelegate* GetSSLHostStateDelegate() OVERRIDE;
     56 
     57   net::URLRequestContextGetter* CreateRequestContext(
     58       ProtocolHandlerMap* protocol_handlers,
     59       URLRequestInterceptorScopedVector request_interceptors);
     60   net::URLRequestContextGetter* CreateRequestContextForStoragePartition(
     61       const base::FilePath& partition_path,
     62       bool in_memory,
     63       ProtocolHandlerMap* protocol_handlers,
     64       URLRequestInterceptorScopedVector request_interceptors);
     65 
     66  private:
     67   class ShellResourceContext;
     68 
     69   // Performs initialization of the ShellBrowserContext while IO is still
     70   // allowed on the current thread.
     71   void InitWhileIOAllowed();
     72 
     73   bool off_the_record_;
     74   net::NetLog* net_log_;
     75   bool ignore_certificate_errors_;
     76   base::FilePath path_;
     77   BrowserPluginGuestManager* guest_manager_;
     78   scoped_ptr<ShellResourceContext> resource_context_;
     79   scoped_ptr<ShellDownloadManagerDelegate> download_manager_delegate_;
     80   scoped_refptr<ShellURLRequestContextGetter> url_request_getter_;
     81 
     82   DISALLOW_COPY_AND_ASSIGN(ShellBrowserContext);
     83 };
     84 
     85 }  // namespace content
     86 
     87 #endif  // CONTENT_SHELL_BROWSER_SHELL_BROWSER_CONTEXT_H_
     88