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 "chrome/browser/chromeos/policy/remote_commands/device_command_screensh
ot_job.h" | 5 #include "chrome/browser/chromeos/policy/remote_commands/device_command_screensh
ot_job.h" |
6 | 6 |
7 #include <fstream> | 7 #include <fstream> |
8 | 8 |
9 #include "ash/shell.h" | 9 #include "ash/shell.h" |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
183 } | 183 } |
184 upload_job_->Start(); | 184 upload_job_->Start(); |
185 } | 185 } |
186 | 186 |
187 void DeviceCommandScreenshotJob::RunImpl( | 187 void DeviceCommandScreenshotJob::RunImpl( |
188 const CallbackWithResult& succeeded_callback, | 188 const CallbackWithResult& succeeded_callback, |
189 const CallbackWithResult& failed_callback) { | 189 const CallbackWithResult& failed_callback) { |
190 succeeded_callback_ = succeeded_callback; | 190 succeeded_callback_ = succeeded_callback; |
191 failed_callback_ = failed_callback; | 191 failed_callback_ = failed_callback; |
192 | 192 |
193 upload_job_ = screenshot_delegate_->CreateUploadJob(upload_url_, this); | 193 // Fail if the delegate says screenshots are not allowed in this session. |
194 DCHECK(upload_job_); | 194 if (!screenshot_delegate_->IsScreenshotAllowed()) { |
| 195 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 196 FROM_HERE, |
| 197 base::Bind(failed_callback_, base::Passed(make_scoped_ptr( |
| 198 new Payload(FAILURE_USER_INPUT))))); |
| 199 } |
195 | 200 |
196 aura::Window::Windows root_windows = ash::Shell::GetAllRootWindows(); | 201 aura::Window::Windows root_windows = ash::Shell::GetAllRootWindows(); |
197 | 202 |
198 // Immediately fail if there are no attached screens. | 203 // Immediately fail if there are no attached screens. |
199 if (root_windows.size() == 0) { | 204 if (root_windows.size() == 0) { |
200 base::ThreadTaskRunnerHandle::Get()->PostTask( | 205 base::ThreadTaskRunnerHandle::Get()->PostTask( |
201 FROM_HERE, | 206 FROM_HERE, |
202 base::Bind(failed_callback_, base::Passed(make_scoped_ptr(new Payload( | 207 base::Bind(failed_callback_, base::Passed(make_scoped_ptr(new Payload( |
203 FAILURE_SCREENSHOT_ACQUISITION))))); | 208 FAILURE_SCREENSHOT_ACQUISITION))))); |
204 } | 209 } |
205 | 210 |
| 211 upload_job_ = screenshot_delegate_->CreateUploadJob(upload_url_, this); |
| 212 DCHECK(upload_job_); |
| 213 |
206 // Post tasks to the sequenced worker pool for taking screenshots on each | 214 // Post tasks to the sequenced worker pool for taking screenshots on each |
207 // attached screen. | 215 // attached screen. |
208 num_pending_screenshots_ = root_windows.size(); | 216 num_pending_screenshots_ = root_windows.size(); |
209 for (size_t screen = 0; screen < root_windows.size(); ++screen) { | 217 for (size_t screen = 0; screen < root_windows.size(); ++screen) { |
210 aura::Window* root_window = root_windows[screen]; | 218 aura::Window* root_window = root_windows[screen]; |
211 gfx::Rect rect = root_window->bounds(); | 219 gfx::Rect rect = root_window->bounds(); |
212 screenshot_delegate_->TakeSnapshot( | 220 screenshot_delegate_->TakeSnapshot( |
213 root_window, rect, | 221 root_window, rect, |
214 base::Bind(&RunStoreScreenshotOnTaskRunner, | 222 base::Bind(&RunStoreScreenshotOnTaskRunner, |
215 base::Bind(&DeviceCommandScreenshotJob::StoreScreenshot, | 223 base::Bind(&DeviceCommandScreenshotJob::StoreScreenshot, |
216 weak_ptr_factory_.GetWeakPtr(), screen), | 224 weak_ptr_factory_.GetWeakPtr(), screen), |
217 base::ThreadTaskRunnerHandle::Get())); | 225 base::ThreadTaskRunnerHandle::Get())); |
218 } | 226 } |
219 } | 227 } |
220 | 228 |
221 void DeviceCommandScreenshotJob::TerminateImpl() { | 229 void DeviceCommandScreenshotJob::TerminateImpl() { |
222 weak_ptr_factory_.InvalidateWeakPtrs(); | 230 weak_ptr_factory_.InvalidateWeakPtrs(); |
223 } | 231 } |
224 | 232 |
225 } // namespace policy | 233 } // namespace policy |
OLD | NEW |