| 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 |