13551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#ifndef CONTENT_SHELL_BROWSER_SHELL_BROWSER_CONTEXT_H_
63551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#define CONTENT_SHELL_BROWSER_SHELL_BROWSER_CONTEXT_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h"
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/file_path.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/browser_context.h"
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/content_browser_client.h"
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "net/url_request/url_request_job_factory.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace net {
17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass NetLog;
18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DownloadManagerDelegate;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ResourceContext;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ShellDownloadManagerDelegate;
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ShellURLRequestContextGetter;
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ShellBrowserContext : public BrowserContext {
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ShellBrowserContext(bool off_the_record, net::NetLog* net_log);
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~ShellBrowserContext();
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  void set_guest_manager_for_testing(
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      BrowserPluginGuestManager* guest_manager) {
34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    guest_manager_ = guest_manager;
35010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  }
36010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // BrowserContext implementation.
387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  virtual base::FilePath GetPath() const OVERRIDE;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsOffTheRecord() const OVERRIDE;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual DownloadManagerDelegate* GetDownloadManagerDelegate() OVERRIDE;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE;
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual net::URLRequestContextGetter* GetRequestContextForRenderProcess(
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int renderer_child_id) OVERRIDE;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual net::URLRequestContextGetter* GetMediaRequestContext() OVERRIDE;
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual net::URLRequestContextGetter* GetMediaRequestContextForRenderProcess(
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int renderer_child_id) OVERRIDE;
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual net::URLRequestContextGetter*
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      GetMediaRequestContextForStoragePartition(
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          const base::FilePath& partition_path,
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          bool in_memory) OVERRIDE;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ResourceContext* GetResourceContext() OVERRIDE;
52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual BrowserPluginGuestManager* GetGuestManager() OVERRIDE;
5303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual storage::SpecialStoragePolicy* GetSpecialStoragePolicy() OVERRIDE;
54f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  virtual PushMessagingService* GetPushMessagingService() OVERRIDE;
555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual SSLHostStateDelegate* GetSSLHostStateDelegate() OVERRIDE;
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  net::URLRequestContextGetter* CreateRequestContext(
58a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      ProtocolHandlerMap* protocol_handlers,
59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      URLRequestInterceptorScopedVector request_interceptors);
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  net::URLRequestContextGetter* CreateRequestContextForStoragePartition(
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const base::FilePath& partition_path,
622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      bool in_memory,
63a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      ProtocolHandlerMap* protocol_handlers,
64cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      URLRequestInterceptorScopedVector request_interceptors);
652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  class ShellResourceContext;
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Performs initialization of the ShellBrowserContext while IO is still
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // allowed on the current thread.
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void InitWhileIOAllowed();
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool off_the_record_;
74eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  net::NetLog* net_log_;
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool ignore_certificate_errors_;
762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  base::FilePath path_;
77cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  BrowserPluginGuestManager* guest_manager_;
782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<ShellResourceContext> resource_context_;
795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  scoped_ptr<ShellDownloadManagerDelegate> download_manager_delegate_;
802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_refptr<ShellURLRequestContextGetter> url_request_getter_;
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ShellBrowserContext);
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
873551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#endif  // CONTENT_SHELL_BROWSER_SHELL_BROWSER_CONTEXT_H_
88