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_IMPL_H_ | 5 #ifndef HEADLESS_LIB_BROWSER_HEADLESS_BROWSER_IMPL_H_ |
6 #define HEADLESS_LIB_BROWSER_HEADLESS_BROWSER_IMPL_H_ | 6 #define HEADLESS_LIB_BROWSER_HEADLESS_BROWSER_IMPL_H_ |
7 | 7 |
8 #include "headless/public/headless_browser.h" | 8 #include "headless/public/headless_browser.h" |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
11 #include <string> | 11 #include <string> |
12 #include <unordered_map> | 12 #include <unordered_map> |
13 #include <vector> | 13 #include <vector> |
14 | 14 |
15 #include "base/memory/weak_ptr.h" | 15 #include "base/memory/weak_ptr.h" |
16 #include "content/public/browser/web_contents.h" | 16 #include "content/public/browser/web_contents.h" |
17 #include "headless/lib/browser/headless_devtools_manager_delegate.h" | 17 #include "headless/lib/browser/headless_devtools_manager_delegate.h" |
18 #include "headless/lib/browser/headless_web_contents_impl.h" | 18 #include "headless/lib/browser/headless_web_contents_impl.h" |
19 #include "headless/public/headless_export.h" | 19 #include "headless/public/headless_export.h" |
20 | 20 |
21 namespace headless { | 21 namespace headless { |
22 | 22 |
23 class HeadlessBrowserContextImpl; | 23 class HeadlessBrowserContextImpl; |
24 class HeadlessBrowserMainParts; | 24 class HeadlessBrowserMainParts; |
25 | 25 |
26 // Exported for tests. | 26 // Exported for tests. |
27 class HEADLESS_EXPORT HeadlessBrowserImpl : public HeadlessBrowser { | 27 class HEADLESS_EXPORT HeadlessBrowserImpl : public HeadlessBrowser, |
| 28 public HeadlessDevToolsTarget { |
28 public: | 29 public: |
29 HeadlessBrowserImpl( | 30 HeadlessBrowserImpl( |
30 const base::Callback<void(HeadlessBrowser*)>& on_start_callback, | 31 const base::Callback<void(HeadlessBrowser*)>& on_start_callback, |
31 HeadlessBrowser::Options options); | 32 HeadlessBrowser::Options options); |
32 ~HeadlessBrowserImpl() override; | 33 ~HeadlessBrowserImpl() override; |
33 | 34 |
34 // HeadlessBrowser implementation: | 35 // HeadlessBrowser implementation: |
35 HeadlessBrowserContext::Builder CreateBrowserContextBuilder() override; | 36 HeadlessBrowserContext::Builder CreateBrowserContextBuilder() override; |
36 scoped_refptr<base::SingleThreadTaskRunner> BrowserFileThread() | 37 scoped_refptr<base::SingleThreadTaskRunner> BrowserFileThread() |
37 const override; | 38 const override; |
38 scoped_refptr<base::SingleThreadTaskRunner> BrowserIOThread() const override; | 39 scoped_refptr<base::SingleThreadTaskRunner> BrowserIOThread() const override; |
39 scoped_refptr<base::SingleThreadTaskRunner> BrowserMainThread() | 40 scoped_refptr<base::SingleThreadTaskRunner> BrowserMainThread() |
40 const override; | 41 const override; |
41 | 42 |
42 void Shutdown() override; | 43 void Shutdown() override; |
43 | 44 |
44 std::vector<HeadlessBrowserContext*> GetAllBrowserContexts() override; | 45 std::vector<HeadlessBrowserContext*> GetAllBrowserContexts() override; |
45 HeadlessWebContents* GetWebContentsForDevToolsAgentHostId( | 46 HeadlessWebContents* GetWebContentsForDevToolsAgentHostId( |
46 const std::string& devtools_agent_host_id) override; | 47 const std::string& devtools_agent_host_id) override; |
47 HeadlessBrowserContext* GetBrowserContextForId( | 48 HeadlessBrowserContext* GetBrowserContextForId( |
48 const std::string& id) override; | 49 const std::string& id) override; |
49 void SetDefaultBrowserContext( | 50 void SetDefaultBrowserContext( |
50 HeadlessBrowserContext* browser_context) override; | 51 HeadlessBrowserContext* browser_context) override; |
51 HeadlessBrowserContext* GetDefaultBrowserContext() override; | 52 HeadlessBrowserContext* GetDefaultBrowserContext() override; |
| 53 HeadlessDevToolsTarget* GetDevToolsTarget() override; |
| 54 |
| 55 // HeadlessDevToolsTarget implementation: |
| 56 bool AttachClient(HeadlessDevToolsClient* client) override; |
| 57 void ForceAttachClient(HeadlessDevToolsClient* client) override; |
| 58 void DetachClient(HeadlessDevToolsClient* client) override; |
| 59 bool IsAttached() override; |
52 | 60 |
53 void set_browser_main_parts(HeadlessBrowserMainParts* browser_main_parts); | 61 void set_browser_main_parts(HeadlessBrowserMainParts* browser_main_parts); |
54 HeadlessBrowserMainParts* browser_main_parts() const; | 62 HeadlessBrowserMainParts* browser_main_parts() const; |
55 | 63 |
56 void RunOnStartCallback(); | 64 void RunOnStartCallback(); |
57 | 65 |
58 HeadlessBrowser::Options* options() { return &options_; } | 66 HeadlessBrowser::Options* options() { return &options_; } |
59 | 67 |
60 HeadlessBrowserContext* CreateBrowserContext( | 68 HeadlessBrowserContext* CreateBrowserContext( |
61 HeadlessBrowserContext::Builder* builder); | 69 HeadlessBrowserContext::Builder* builder); |
(...skipping 13 matching lines...) Expand all Loading... |
75 | 83 |
76 protected: | 84 protected: |
77 base::Callback<void(HeadlessBrowser*)> on_start_callback_; | 85 base::Callback<void(HeadlessBrowser*)> on_start_callback_; |
78 HeadlessBrowser::Options options_; | 86 HeadlessBrowser::Options options_; |
79 HeadlessBrowserMainParts* browser_main_parts_; // Not owned. | 87 HeadlessBrowserMainParts* browser_main_parts_; // Not owned. |
80 | 88 |
81 std::unordered_map<std::string, std::unique_ptr<HeadlessBrowserContextImpl>> | 89 std::unordered_map<std::string, std::unique_ptr<HeadlessBrowserContextImpl>> |
82 browser_contexts_; | 90 browser_contexts_; |
83 HeadlessBrowserContext* default_browser_context_; // Not owned. | 91 HeadlessBrowserContext* default_browser_context_; // Not owned. |
84 | 92 |
| 93 scoped_refptr<content::DevToolsAgentHost> agent_host_; |
| 94 |
85 base::WeakPtrFactory<HeadlessBrowserImpl> weak_ptr_factory_; | 95 base::WeakPtrFactory<HeadlessBrowserImpl> weak_ptr_factory_; |
86 | 96 |
87 private: | 97 private: |
88 DISALLOW_COPY_AND_ASSIGN(HeadlessBrowserImpl); | 98 DISALLOW_COPY_AND_ASSIGN(HeadlessBrowserImpl); |
89 }; | 99 }; |
90 | 100 |
91 } // namespace headless | 101 } // namespace headless |
92 | 102 |
93 #endif // HEADLESS_LIB_BROWSER_HEADLESS_BROWSER_IMPL_H_ | 103 #endif // HEADLESS_LIB_BROWSER_HEADLESS_BROWSER_IMPL_H_ |
OLD | NEW |