Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(163)

Side by Side Diff: headless/lib/browser/headless_browser_impl.cc

Issue 2119063002: Add commands to manage tabs and contexts to Browser Domain (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix name Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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> 7 #include <vector>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 } 98 }
99 99
100 void HeadlessBrowserImpl::Shutdown() { 100 void HeadlessBrowserImpl::Shutdown() {
101 DCHECK(BrowserMainThread()->BelongsToCurrentThread()); 101 DCHECK(BrowserMainThread()->BelongsToCurrentThread());
102 BrowserMainThread()->PostTask(FROM_HERE, 102 BrowserMainThread()->PostTask(FROM_HERE,
103 base::MessageLoop::QuitWhenIdleClosure()); 103 base::MessageLoop::QuitWhenIdleClosure());
104 } 104 }
105 105
106 std::vector<HeadlessWebContents*> HeadlessBrowserImpl::GetAllWebContents() { 106 std::vector<HeadlessWebContents*> HeadlessBrowserImpl::GetAllWebContents() {
107 std::vector<HeadlessWebContents*> result; 107 std::vector<HeadlessWebContents*> result;
108 result.reserve(web_contents_.size()); 108 result.reserve(web_contents_map_.size());
109 109
110 for (const auto& web_contents_pair : web_contents_) { 110 for (const auto& web_contents_pair : web_contents_map_) {
111 result.push_back(web_contents_pair.first); 111 result.push_back(web_contents_pair.second.get());
112 } 112 }
113 113
114 return result; 114 return result;
115 } 115 }
116 116
117 HeadlessBrowserMainParts* HeadlessBrowserImpl::browser_main_parts() const { 117 HeadlessBrowserMainParts* HeadlessBrowserImpl::browser_main_parts() const {
118 DCHECK(BrowserMainThread()->BelongsToCurrentThread()); 118 DCHECK(BrowserMainThread()->BelongsToCurrentThread());
119 return browser_main_parts_; 119 return browser_main_parts_;
120 } 120 }
121 121
(...skipping 15 matching lines...) Expand all
137 new HeadlessWindowTreeClient(window_tree_host_->window())); 137 new HeadlessWindowTreeClient(window_tree_host_->window()));
138 138
139 on_start_callback_.Run(this); 139 on_start_callback_.Run(this);
140 on_start_callback_ = base::Callback<void(HeadlessBrowser*)>(); 140 on_start_callback_ = base::Callback<void(HeadlessBrowser*)>();
141 } 141 }
142 142
143 HeadlessWebContentsImpl* HeadlessBrowserImpl::RegisterWebContents( 143 HeadlessWebContentsImpl* HeadlessBrowserImpl::RegisterWebContents(
144 std::unique_ptr<HeadlessWebContentsImpl> web_contents) { 144 std::unique_ptr<HeadlessWebContentsImpl> web_contents) {
145 DCHECK(web_contents); 145 DCHECK(web_contents);
146 HeadlessWebContentsImpl* unowned_web_contents = web_contents.get(); 146 HeadlessWebContentsImpl* unowned_web_contents = web_contents.get();
147 web_contents_[unowned_web_contents] = std::move(web_contents); 147 web_contents_map_[unowned_web_contents->GetDevtoolsAgentHostId()] =
148 std::move(web_contents);
148 return unowned_web_contents; 149 return unowned_web_contents;
149 } 150 }
150 151
151 void HeadlessBrowserImpl::DestroyWebContents( 152 void HeadlessBrowserImpl::DestroyWebContents(
152 HeadlessWebContentsImpl* web_contents) { 153 HeadlessWebContentsImpl* web_contents) {
153 auto it = web_contents_.find(web_contents); 154 auto it = web_contents_map_.find(web_contents->GetDevtoolsAgentHostId());
154 DCHECK(it != web_contents_.end()); 155 DCHECK(it != web_contents_map_.end());
155 web_contents_.erase(it); 156 web_contents_map_.erase(it);
157 }
158
159 HeadlessWebContents* HeadlessBrowserImpl::GetWebContentsForDevtoolsAgentHostId(
160 const std::string& devtools_agent_host_id) {
161 auto it = web_contents_map_.find(devtools_agent_host_id);
162 if (it == web_contents_map_.end())
163 return nullptr;
164 return it->second.get();
156 } 165 }
157 166
158 void HeadlessBrowserImpl::SetOptionsForTesting( 167 void HeadlessBrowserImpl::SetOptionsForTesting(
159 HeadlessBrowser::Options options) { 168 HeadlessBrowser::Options options) {
160 options_ = std::move(options); 169 options_ = std::move(options);
161 browser_main_parts()->default_browser_context()->SetOptionsForTesting( 170 browser_main_parts()->default_browser_context()->SetOptionsForTesting(
162 &options_); 171 &options_);
163 } 172 }
164 173
165 void RunChildProcessIfNeeded(int argc, const char** argv) { 174 void RunChildProcessIfNeeded(int argc, const char** argv) {
(...skipping 18 matching lines...) Expand all
184 193
185 // Child processes should not end up here. 194 // Child processes should not end up here.
186 base::CommandLine command_line(options.argc, options.argv); 195 base::CommandLine command_line(options.argc, options.argv);
187 DCHECK(!command_line.HasSwitch(switches::kProcessType)); 196 DCHECK(!command_line.HasSwitch(switches::kProcessType));
188 #endif 197 #endif
189 return RunContentMain(std::move(options), 198 return RunContentMain(std::move(options),
190 std::move(on_browser_start_callback)); 199 std::move(on_browser_start_callback));
191 } 200 }
192 201
193 } // namespace headless 202 } // namespace headless
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698