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/screenshot_delegate.h" | 5 #include "chrome/browser/chromeos/policy/remote_commands/screenshot_delegate.h" |
6 | 6 |
7 #include "chrome/browser/browser_process.h" | 7 #include "chrome/browser/browser_process.h" |
| 8 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" |
| 9 #include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h" |
| 10 #include "chrome/browser/chromeos/policy/status_uploader.h" |
8 #include "chrome/browser/chromeos/policy/upload_job_impl.h" | 11 #include "chrome/browser/chromeos/policy/upload_job_impl.h" |
9 #include "chrome/browser/chromeos/settings/device_oauth2_token_service.h" | 12 #include "chrome/browser/chromeos/settings/device_oauth2_token_service.h" |
10 #include "chrome/browser/chromeos/settings/device_oauth2_token_service_factory.h
" | 13 #include "chrome/browser/chromeos/settings/device_oauth2_token_service_factory.h
" |
11 #include "content/public/browser/browser_thread.h" | 14 #include "content/public/browser/browser_thread.h" |
12 | 15 |
13 namespace policy { | 16 namespace policy { |
14 | 17 |
15 ScreenshotDelegate::ScreenshotDelegate( | 18 ScreenshotDelegate::ScreenshotDelegate( |
16 scoped_refptr<base::TaskRunner> blocking_task_runner) | 19 scoped_refptr<base::TaskRunner> blocking_task_runner) |
17 : blocking_task_runner_(blocking_task_runner), weak_ptr_factory_(this) { | 20 : blocking_task_runner_(blocking_task_runner), weak_ptr_factory_(this) { |
18 } | 21 } |
19 | 22 |
20 ScreenshotDelegate::~ScreenshotDelegate() { | 23 ScreenshotDelegate::~ScreenshotDelegate() { |
21 } | 24 } |
22 | 25 |
| 26 bool ScreenshotDelegate::IsScreenshotAllowed() { |
| 27 BrowserPolicyConnectorChromeOS* connector = |
| 28 g_browser_process->platform_part()->browser_policy_connector_chromeos(); |
| 29 DeviceCloudPolicyManagerChromeOS* manager = |
| 30 connector->GetDeviceCloudPolicyManager(); |
| 31 // DeviceCloudPolicyManagerChromeOS and StatusUploader can be null during |
| 32 // shutdown (and unit tests) - don't allow screenshots unless we have a |
| 33 // StatusUploader that can confirm that screenshots are allowed. |
| 34 return manager && manager->GetStatusUploader() && |
| 35 manager->GetStatusUploader()->IsSessionDataUploadAllowed(); |
| 36 } |
| 37 |
23 void ScreenshotDelegate::TakeSnapshot( | 38 void ScreenshotDelegate::TakeSnapshot( |
24 gfx::NativeWindow window, | 39 gfx::NativeWindow window, |
25 const gfx::Rect& source_rect, | 40 const gfx::Rect& source_rect, |
26 const ui::GrabWindowSnapshotAsyncPNGCallback& callback) { | 41 const ui::GrabWindowSnapshotAsyncPNGCallback& callback) { |
27 ui::GrabWindowSnapshotAsync( | 42 ui::GrabWindowSnapshotAsync( |
28 window, source_rect, blocking_task_runner_, | 43 window, source_rect, blocking_task_runner_, |
29 base::Bind(&ScreenshotDelegate::StoreScreenshot, | 44 base::Bind(&ScreenshotDelegate::StoreScreenshot, |
30 weak_ptr_factory_.GetWeakPtr(), callback)); | 45 weak_ptr_factory_.GetWeakPtr(), callback)); |
31 } | 46 } |
32 | 47 |
(...skipping 13 matching lines...) Expand all Loading... |
46 make_scoped_ptr(new UploadJobImpl::RandomMimeBoundaryGenerator))); | 61 make_scoped_ptr(new UploadJobImpl::RandomMimeBoundaryGenerator))); |
47 } | 62 } |
48 | 63 |
49 void ScreenshotDelegate::StoreScreenshot( | 64 void ScreenshotDelegate::StoreScreenshot( |
50 const ui::GrabWindowSnapshotAsyncPNGCallback& callback, | 65 const ui::GrabWindowSnapshotAsyncPNGCallback& callback, |
51 scoped_refptr<base::RefCountedBytes> png_data) { | 66 scoped_refptr<base::RefCountedBytes> png_data) { |
52 callback.Run(png_data); | 67 callback.Run(png_data); |
53 } | 68 } |
54 | 69 |
55 } // namespace policy | 70 } // namespace policy |
OLD | NEW |