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   // BrowserContext implementation.
     33   virtual base::FilePath GetPath() const OVERRIDE;
     34   virtual bool IsOffTheRecord() const OVERRIDE;
     35   virtual DownloadManagerDelegate* GetDownloadManagerDelegate() OVERRIDE;
     36   virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE;
     37   virtual net::URLRequestContextGetter* GetRequestContextForRenderProcess(
     38       int renderer_child_id) OVERRIDE;
     39   virtual net::URLRequestContextGetter* GetMediaRequestContext() OVERRIDE;
     40   virtual net::URLRequestContextGetter* GetMediaRequestContextForRenderProcess(
     41       int renderer_child_id) OVERRIDE;
     42   virtual net::URLRequestContextGetter*
     43       GetMediaRequestContextForStoragePartition(
     44           const base::FilePath& partition_path,
     45           bool in_memory) OVERRIDE;
     46   virtual void RequestMIDISysExPermission(
     47       int render_process_id,
     48       int render_view_id,
     49       int bridge_id,
     50       const GURL& requesting_frame,
     51       const MIDISysExPermissionCallback& callback) OVERRIDE;
     52   virtual void CancelMIDISysExPermissionRequest(
     53       int render_process_id,
     54       int render_view_id,
     55       int bridge_id,
     56       const GURL& requesting_frame) OVERRIDE;
     57   virtual ResourceContext* GetResourceContext() OVERRIDE;
     58   virtual GeolocationPermissionContext*
     59       GetGeolocationPermissionContext() OVERRIDE;
     60   virtual quota::SpecialStoragePolicy* GetSpecialStoragePolicy() OVERRIDE;
     61 
     62   net::URLRequestContextGetter* CreateRequestContext(
     63       ProtocolHandlerMap* protocol_handlers);
     64   net::URLRequestContextGetter* CreateRequestContextForStoragePartition(
     65       const base::FilePath& partition_path,
     66       bool in_memory,
     67       ProtocolHandlerMap* protocol_handlers);
     68 
     69  private:
     70   class ShellResourceContext;
     71 
     72   // Performs initialization of the ShellBrowserContext while IO is still
     73   // allowed on the current thread.
     74   void InitWhileIOAllowed();
     75 
     76   bool off_the_record_;
     77   net::NetLog* net_log_;
     78   bool ignore_certificate_errors_;
     79   base::FilePath path_;
     80   scoped_ptr<ShellResourceContext> resource_context_;
     81   scoped_refptr<ShellDownloadManagerDelegate> download_manager_delegate_;
     82   scoped_refptr<ShellURLRequestContextGetter> url_request_getter_;
     83 
     84   DISALLOW_COPY_AND_ASSIGN(ShellBrowserContext);
     85 };
     86 
     87 }  // namespace content
     88 
     89 #endif  // CONTENT_SHELL_BROWSER_SHELL_BROWSER_CONTEXT_H_
     90