OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef HEADLESS_LIB_BROWSER_HEADLESS_BROWSER_CONTEXT_IMPL_H_ | 5 #ifndef HEADLESS_LIB_BROWSER_HEADLESS_BROWSER_CONTEXT_IMPL_H_ |
6 #define HEADLESS_LIB_BROWSER_HEADLESS_BROWSER_CONTEXT_IMPL_H_ | 6 #define HEADLESS_LIB_BROWSER_HEADLESS_BROWSER_CONTEXT_IMPL_H_ |
7 | 7 |
8 #include <memory> | 8 #include <memory> |
| 9 #include <string> |
| 10 #include <unordered_map> |
| 11 #include <vector> |
9 | 12 |
10 #include "base/files/file_path.h" | 13 #include "base/files/file_path.h" |
11 #include "content/public/browser/browser_context.h" | 14 #include "content/public/browser/browser_context.h" |
12 #include "content/public/browser/content_browser_client.h" | 15 #include "content/public/browser/content_browser_client.h" |
13 #include "content/public/browser/resource_context.h" | 16 #include "content/public/browser/resource_context.h" |
| 17 #include "headless/lib/browser/headless_browser_context_options.h" |
14 #include "headless/lib/browser/headless_url_request_context_getter.h" | 18 #include "headless/lib/browser/headless_url_request_context_getter.h" |
15 #include "headless/public/headless_browser.h" | 19 #include "headless/public/headless_browser.h" |
16 #include "headless/public/headless_browser_context.h" | 20 #include "headless/public/headless_browser_context.h" |
17 | 21 |
18 namespace headless { | 22 namespace headless { |
| 23 class HeadlessBrowserImpl; |
19 class HeadlessResourceContext; | 24 class HeadlessResourceContext; |
| 25 class HeadlessWebContentsImpl; |
20 | 26 |
21 class HeadlessBrowserContextImpl : public HeadlessBrowserContext, | 27 class HeadlessBrowserContextImpl : public HeadlessBrowserContext, |
22 public content::BrowserContext { | 28 public content::BrowserContext { |
23 public: | 29 public: |
24 explicit HeadlessBrowserContextImpl(ProtocolHandlerMap protocol_handlers, | 30 HeadlessBrowserContextImpl(HeadlessBrowserImpl* browser, |
25 HeadlessBrowser::Options* options); | 31 HeadlessBrowserContextOptions context_options); |
26 ~HeadlessBrowserContextImpl() override; | 32 ~HeadlessBrowserContextImpl() override; |
27 | 33 |
28 static HeadlessBrowserContextImpl* From( | 34 static HeadlessBrowserContextImpl* From( |
29 HeadlessBrowserContext* browser_context); | 35 HeadlessBrowserContext* browser_context); |
30 | 36 |
| 37 // HeadlessBrowserContext implementation: |
| 38 HeadlessWebContents::Builder CreateWebContentsBuilder() override; |
| 39 std::vector<HeadlessWebContents*> GetAllWebContents() override; |
| 40 |
31 // BrowserContext implementation: | 41 // BrowserContext implementation: |
32 std::unique_ptr<content::ZoomLevelDelegate> CreateZoomLevelDelegate( | 42 std::unique_ptr<content::ZoomLevelDelegate> CreateZoomLevelDelegate( |
33 const base::FilePath& partition_path) override; | 43 const base::FilePath& partition_path) override; |
34 base::FilePath GetPath() const override; | 44 base::FilePath GetPath() const override; |
35 bool IsOffTheRecord() const override; | 45 bool IsOffTheRecord() const override; |
36 content::ResourceContext* GetResourceContext() override; | 46 content::ResourceContext* GetResourceContext() override; |
37 content::DownloadManagerDelegate* GetDownloadManagerDelegate() override; | 47 content::DownloadManagerDelegate* GetDownloadManagerDelegate() override; |
38 content::BrowserPluginGuestManager* GetGuestManager() override; | 48 content::BrowserPluginGuestManager* GetGuestManager() override; |
39 storage::SpecialStoragePolicy* GetSpecialStoragePolicy() override; | 49 storage::SpecialStoragePolicy* GetSpecialStoragePolicy() override; |
40 content::PushMessagingService* GetPushMessagingService() override; | 50 content::PushMessagingService* GetPushMessagingService() override; |
41 content::SSLHostStateDelegate* GetSSLHostStateDelegate() override; | 51 content::SSLHostStateDelegate* GetSSLHostStateDelegate() override; |
42 content::PermissionManager* GetPermissionManager() override; | 52 content::PermissionManager* GetPermissionManager() override; |
43 content::BackgroundSyncController* GetBackgroundSyncController() override; | 53 content::BackgroundSyncController* GetBackgroundSyncController() override; |
44 net::URLRequestContextGetter* CreateRequestContext( | 54 net::URLRequestContextGetter* CreateRequestContext( |
45 content::ProtocolHandlerMap* protocol_handlers, | 55 content::ProtocolHandlerMap* protocol_handlers, |
46 content::URLRequestInterceptorScopedVector request_interceptors) override; | 56 content::URLRequestInterceptorScopedVector request_interceptors) override; |
47 net::URLRequestContextGetter* CreateRequestContextForStoragePartition( | 57 net::URLRequestContextGetter* CreateRequestContextForStoragePartition( |
48 const base::FilePath& partition_path, | 58 const base::FilePath& partition_path, |
49 bool in_memory, | 59 bool in_memory, |
50 content::ProtocolHandlerMap* protocol_handlers, | 60 content::ProtocolHandlerMap* protocol_handlers, |
51 content::URLRequestInterceptorScopedVector request_interceptors) override; | 61 content::URLRequestInterceptorScopedVector request_interceptors) override; |
52 net::URLRequestContextGetter* CreateMediaRequestContext() override; | 62 net::URLRequestContextGetter* CreateMediaRequestContext() override; |
53 net::URLRequestContextGetter* CreateMediaRequestContextForStoragePartition( | 63 net::URLRequestContextGetter* CreateMediaRequestContextForStoragePartition( |
54 const base::FilePath& partition_path, | 64 const base::FilePath& partition_path, |
55 bool in_memory) override; | 65 bool in_memory) override; |
56 | 66 |
57 HeadlessBrowser::Options* options() const { return options_; } | 67 void RegisterWebContents(HeadlessWebContentsImpl*); |
58 void SetOptionsForTesting(HeadlessBrowser::Options* options); | 68 void UnregisterWebContents(HeadlessWebContentsImpl*); |
| 69 |
| 70 HeadlessBrowserImpl* browser() const; |
| 71 const HeadlessBrowserContextOptions* options() const; |
59 | 72 |
60 private: | 73 private: |
61 // Performs initialization of the HeadlessBrowserContextImpl while IO is still | 74 // Performs initialization of the HeadlessBrowserContextImpl while IO is still |
62 // allowed on the current thread. | 75 // allowed on the current thread. |
63 void InitWhileIOAllowed(); | 76 void InitWhileIOAllowed(); |
64 | 77 |
65 ProtocolHandlerMap protocol_handlers_; | 78 HeadlessBrowserImpl* browser_; // Not owned. |
66 HeadlessBrowser::Options* options_; // Not owned. | 79 HeadlessBrowserContextOptions context_options_; |
67 std::unique_ptr<HeadlessResourceContext> resource_context_; | 80 std::unique_ptr<HeadlessResourceContext> resource_context_; |
68 base::FilePath path_; | 81 base::FilePath path_; |
69 | 82 |
| 83 // Web contents are owned by |HeadlessBrowser|, here we are keeping track of |
| 84 // contents corresponding to this context to delete them when context goes |
| 85 // away. |
| 86 std::unordered_map<std::string, HeadlessWebContents*> web_contents_map_; |
| 87 |
70 DISALLOW_COPY_AND_ASSIGN(HeadlessBrowserContextImpl); | 88 DISALLOW_COPY_AND_ASSIGN(HeadlessBrowserContextImpl); |
71 }; | 89 }; |
72 | 90 |
73 } // namespace headless | 91 } // namespace headless |
74 | 92 |
75 #endif // HEADLESS_LIB_BROWSER_HEADLESS_BROWSER_CONTEXT_IMPL_H_ | 93 #endif // HEADLESS_LIB_BROWSER_HEADLESS_BROWSER_CONTEXT_IMPL_H_ |
OLD | NEW |