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 #include "headless/lib/browser/headless_browser_impl.h" | 5 #include "headless/lib/browser/headless_browser_impl.h" |
6 | 6 |
| 7 #include <vector> |
| 8 |
7 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
8 #include "base/threading/thread_task_runner_handle.h" | 10 #include "base/threading/thread_task_runner_handle.h" |
9 #include "content/public/app/content_main.h" | 11 #include "content/public/app/content_main.h" |
10 #include "content/public/browser/browser_thread.h" | 12 #include "content/public/browser/browser_thread.h" |
11 #include "content/public/browser/web_contents.h" | 13 #include "content/public/browser/web_contents.h" |
12 #include "headless/lib/browser/headless_browser_context.h" | 14 #include "headless/lib/browser/headless_browser_context.h" |
13 #include "headless/lib/browser/headless_browser_main_parts.h" | 15 #include "headless/lib/browser/headless_browser_main_parts.h" |
14 #include "headless/lib/browser/headless_web_contents_impl.h" | 16 #include "headless/lib/browser/headless_web_contents_impl.h" |
15 #include "headless/lib/browser/headless_window_tree_client.h" | 17 #include "headless/lib/browser/headless_window_tree_client.h" |
16 #include "headless/lib/headless_content_main_delegate.h" | 18 #include "headless/lib/headless_content_main_delegate.h" |
(...skipping 27 matching lines...) Expand all Loading... |
44 | 46 |
45 return RegisterWebContents(std::move(headless_web_contents)); | 47 return RegisterWebContents(std::move(headless_web_contents)); |
46 } | 48 } |
47 | 49 |
48 scoped_refptr<base::SingleThreadTaskRunner> | 50 scoped_refptr<base::SingleThreadTaskRunner> |
49 HeadlessBrowserImpl::BrowserMainThread() const { | 51 HeadlessBrowserImpl::BrowserMainThread() const { |
50 return content::BrowserThread::GetMessageLoopProxyForThread( | 52 return content::BrowserThread::GetMessageLoopProxyForThread( |
51 content::BrowserThread::UI); | 53 content::BrowserThread::UI); |
52 } | 54 } |
53 | 55 |
| 56 scoped_refptr<base::SingleThreadTaskRunner> |
| 57 HeadlessBrowserImpl::BrowserFileThread() const { |
| 58 return content::BrowserThread::GetMessageLoopProxyForThread( |
| 59 content::BrowserThread::FILE); |
| 60 } |
| 61 |
54 void HeadlessBrowserImpl::Shutdown() { | 62 void HeadlessBrowserImpl::Shutdown() { |
55 DCHECK(BrowserMainThread()->BelongsToCurrentThread()); | 63 DCHECK(BrowserMainThread()->BelongsToCurrentThread()); |
56 BrowserMainThread()->PostTask(FROM_HERE, | 64 BrowserMainThread()->PostTask(FROM_HERE, |
57 base::MessageLoop::QuitWhenIdleClosure()); | 65 base::MessageLoop::QuitWhenIdleClosure()); |
58 } | 66 } |
59 | 67 |
60 std::vector<HeadlessWebContents*> HeadlessBrowserImpl::GetAllWebContents() { | 68 std::vector<HeadlessWebContents*> HeadlessBrowserImpl::GetAllWebContents() { |
61 std::vector<HeadlessWebContents*> result; | 69 std::vector<HeadlessWebContents*> result; |
62 result.reserve(web_contents_.size()); | 70 result.reserve(web_contents_.size()); |
63 | 71 |
(...skipping 16 matching lines...) Expand all Loading... |
80 } | 88 } |
81 | 89 |
82 void HeadlessBrowserImpl::set_browser_main_parts( | 90 void HeadlessBrowserImpl::set_browser_main_parts( |
83 HeadlessBrowserMainParts* browser_main_parts) { | 91 HeadlessBrowserMainParts* browser_main_parts) { |
84 DCHECK(!browser_main_parts_); | 92 DCHECK(!browser_main_parts_); |
85 browser_main_parts_ = browser_main_parts; | 93 browser_main_parts_ = browser_main_parts; |
86 } | 94 } |
87 | 95 |
88 void HeadlessBrowserImpl::RunOnStartCallback() { | 96 void HeadlessBrowserImpl::RunOnStartCallback() { |
89 DCHECK(aura::Env::GetInstance()); | 97 DCHECK(aura::Env::GetInstance()); |
90 window_tree_host_.reset(aura::WindowTreeHost::Create(gfx::Rect())); | 98 // TODO(eseckler): allow configuration of window (viewport) size by embedder. |
| 99 const gfx::Size kDefaultSize(800, 600); |
| 100 window_tree_host_.reset( |
| 101 aura::WindowTreeHost::Create(gfx::Rect(kDefaultSize))); |
91 window_tree_host_->InitHost(); | 102 window_tree_host_->InitHost(); |
92 | 103 |
93 window_tree_client_.reset( | 104 window_tree_client_.reset( |
94 new HeadlessWindowTreeClient(window_tree_host_->window())); | 105 new HeadlessWindowTreeClient(window_tree_host_->window())); |
95 | 106 |
96 on_start_callback_.Run(this); | 107 on_start_callback_.Run(this); |
97 on_start_callback_ = base::Callback<void(HeadlessBrowser*)>(); | 108 on_start_callback_ = base::Callback<void(HeadlessBrowser*)>(); |
98 } | 109 } |
99 | 110 |
100 HeadlessWebContentsImpl* HeadlessBrowserImpl::RegisterWebContents( | 111 HeadlessWebContentsImpl* HeadlessBrowserImpl::RegisterWebContents( |
(...skipping 27 matching lines...) Expand all Loading... |
128 DCHECK(!options.message_pump); | 139 DCHECK(!options.message_pump); |
129 | 140 |
130 std::unique_ptr<HeadlessBrowserImpl> browser( | 141 std::unique_ptr<HeadlessBrowserImpl> browser( |
131 new HeadlessBrowserImpl(on_browser_start_callback, std::move(options))); | 142 new HeadlessBrowserImpl(on_browser_start_callback, std::move(options))); |
132 headless::HeadlessContentMainDelegate delegate(std::move(browser)); | 143 headless::HeadlessContentMainDelegate delegate(std::move(browser)); |
133 params.delegate = &delegate; | 144 params.delegate = &delegate; |
134 return content::ContentMain(params); | 145 return content::ContentMain(params); |
135 } | 146 } |
136 | 147 |
137 } // namespace headless | 148 } // namespace headless |
OLD | NEW |