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 <map> | 5 #include <map> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "ash/test/ash_test_base.h" | 8 #include "ash/test/ash_test_base.h" |
9 #include "base/json/json_writer.h" | 9 #include "base/json/json_writer.h" |
10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
11 #include "base/single_thread_task_runner.h" | 11 #include "base/single_thread_task_runner.h" |
12 #include "base/test/test_mock_time_task_runner.h" | 12 #include "base/test/test_mock_time_task_runner.h" |
13 #include "base/thread_task_runner_handle.h" | 13 #include "base/thread_task_runner_handle.h" |
14 #include "base/threading/sequenced_worker_pool.h" | 14 #include "base/threading/sequenced_worker_pool.h" |
15 #include "base/time/time.h" | 15 #include "base/time/time.h" |
16 #include "base/values.h" | 16 #include "base/values.h" |
17 #include "chrome/browser/chromeos/policy/remote_commands/device_command_screensh
ot_job.h" | 17 #include "chrome/browser/chromeos/policy/remote_commands/device_command_screensh
ot_job.h" |
| 18 #include "chrome/browser/chromeos/policy/status_uploader.h" |
18 #include "content/public/browser/browser_thread.h" | 19 #include "content/public/browser/browser_thread.h" |
19 #include "content/public/test/test_browser_thread_bundle.h" | 20 #include "content/public/test/test_browser_thread_bundle.h" |
20 #include "policy/proto/device_management_backend.pb.h" | 21 #include "policy/proto/device_management_backend.pb.h" |
21 #include "testing/gtest/include/gtest/gtest.h" | 22 #include "testing/gtest/include/gtest/gtest.h" |
22 #include "third_party/skia/include/core/SkBitmap.h" | 23 #include "third_party/skia/include/core/SkBitmap.h" |
23 #include "ui/gfx/codec/png_codec.h" | 24 #include "ui/gfx/codec/png_codec.h" |
24 | 25 |
25 namespace policy { | 26 namespace policy { |
26 | 27 |
27 namespace em = enterprise_management; | 28 namespace em = enterprise_management; |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 base::Bind(callback, test_png)); | 173 base::Bind(callback, test_png)); |
173 } | 174 } |
174 | 175 |
175 scoped_ptr<UploadJob> MockScreenshotDelegate::CreateUploadJob( | 176 scoped_ptr<UploadJob> MockScreenshotDelegate::CreateUploadJob( |
176 const GURL& upload_url, | 177 const GURL& upload_url, |
177 UploadJob::Delegate* delegate) { | 178 UploadJob::Delegate* delegate) { |
178 return make_scoped_ptr( | 179 return make_scoped_ptr( |
179 new MockUploadJob(upload_url, delegate, upload_job_error_code_.Pass())); | 180 new MockUploadJob(upload_url, delegate, upload_job_error_code_.Pass())); |
180 } | 181 } |
181 | 182 |
| 183 // Mock StatusUploader to test behavior when screenshots are/are not allowed. |
| 184 class MockStatusUploader : public StatusUploader { |
| 185 public: |
| 186 explicit MockStatusUploader(bool screenshot_allowed) |
| 187 : screenshot_allowed_(screenshot_allowed) {} |
| 188 |
| 189 bool IsSessionDataUploadAllowed() override { return screenshot_allowed_; } |
| 190 |
| 191 private: |
| 192 bool screenshot_allowed_; |
| 193 }; |
| 194 |
182 } // namespace | 195 } // namespace |
183 | 196 |
184 class DeviceCommandScreenshotTest : public ash::test::AshTestBase { | 197 class DeviceCommandScreenshotTest : public ash::test::AshTestBase { |
185 public: | 198 public: |
186 void VerifyResults(RemoteCommandJob* job, | 199 void VerifyResults(RemoteCommandJob* job, |
187 RemoteCommandJob::Status expected_status, | 200 RemoteCommandJob::Status expected_status, |
188 std::string expected_payload); | 201 std::string expected_payload); |
189 | 202 |
190 protected: | 203 protected: |
191 DeviceCommandScreenshotTest(); | 204 DeviceCommandScreenshotTest(); |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
249 EXPECT_EQ(expected_status, job->status()); | 262 EXPECT_EQ(expected_status, job->status()); |
250 if (job->status() == RemoteCommandJob::SUCCEEDED) { | 263 if (job->status() == RemoteCommandJob::SUCCEEDED) { |
251 scoped_ptr<std::string> payload = job->GetResultPayload(); | 264 scoped_ptr<std::string> payload = job->GetResultPayload(); |
252 EXPECT_TRUE(payload); | 265 EXPECT_TRUE(payload); |
253 EXPECT_EQ(expected_payload, *payload); | 266 EXPECT_EQ(expected_payload, *payload); |
254 } | 267 } |
255 run_loop_.Quit(); | 268 run_loop_.Quit(); |
256 } | 269 } |
257 | 270 |
258 TEST_F(DeviceCommandScreenshotTest, Success) { | 271 TEST_F(DeviceCommandScreenshotTest, Success) { |
| 272 MockStatusUploader uploader(true); |
259 scoped_ptr<RemoteCommandJob> job(new DeviceCommandScreenshotJob( | 273 scoped_ptr<RemoteCommandJob> job(new DeviceCommandScreenshotJob( |
260 make_scoped_ptr(new MockScreenshotDelegate(nullptr)))); | 274 make_scoped_ptr(new MockScreenshotDelegate(nullptr)), &uploader)); |
261 InitializeScreenshotJob(job.get(), kUniqueID, test_start_time_, | 275 InitializeScreenshotJob(job.get(), kUniqueID, test_start_time_, |
262 kMockUploadUrl); | 276 kMockUploadUrl); |
263 bool success = job->Run( | 277 bool success = job->Run( |
264 base::TimeTicks::Now(), | 278 base::TimeTicks::Now(), |
265 base::Bind( | 279 base::Bind( |
266 &DeviceCommandScreenshotTest::VerifyResults, base::Unretained(this), | 280 &DeviceCommandScreenshotTest::VerifyResults, base::Unretained(this), |
267 base::Unretained(job.get()), RemoteCommandJob::SUCCEEDED, | 281 base::Unretained(job.get()), RemoteCommandJob::SUCCEEDED, |
268 CreatePayloadFromResultCode(DeviceCommandScreenshotJob::SUCCESS))); | 282 CreatePayloadFromResultCode(DeviceCommandScreenshotJob::SUCCESS))); |
269 EXPECT_TRUE(success); | 283 EXPECT_TRUE(success); |
270 run_loop_.Run(); | 284 run_loop_.Run(); |
271 } | 285 } |
272 | 286 |
| 287 TEST_F(DeviceCommandScreenshotTest, FailureUserInput) { |
| 288 MockStatusUploader uploader(false); |
| 289 scoped_ptr<RemoteCommandJob> job(new DeviceCommandScreenshotJob( |
| 290 make_scoped_ptr(new MockScreenshotDelegate(nullptr)), &uploader)); |
| 291 InitializeScreenshotJob(job.get(), kUniqueID, test_start_time_, |
| 292 kMockUploadUrl); |
| 293 bool success = |
| 294 job->Run(base::TimeTicks::Now(), |
| 295 base::Bind(&DeviceCommandScreenshotTest::VerifyResults, |
| 296 base::Unretained(this), base::Unretained(job.get()), |
| 297 RemoteCommandJob::FAILED, |
| 298 CreatePayloadFromResultCode( |
| 299 DeviceCommandScreenshotJob::FAILURE_USER_INPUT))); |
| 300 EXPECT_TRUE(success); |
| 301 run_loop_.Run(); |
| 302 } |
| 303 |
273 TEST_F(DeviceCommandScreenshotTest, Failure) { | 304 TEST_F(DeviceCommandScreenshotTest, Failure) { |
| 305 MockStatusUploader uploader(true); |
274 using ErrorCode = UploadJob::ErrorCode; | 306 using ErrorCode = UploadJob::ErrorCode; |
275 scoped_ptr<ErrorCode> error_code( | 307 scoped_ptr<ErrorCode> error_code( |
276 new ErrorCode(UploadJob::AUTHENTICATION_ERROR)); | 308 new ErrorCode(UploadJob::AUTHENTICATION_ERROR)); |
277 scoped_ptr<RemoteCommandJob> job(new DeviceCommandScreenshotJob( | 309 scoped_ptr<RemoteCommandJob> job(new DeviceCommandScreenshotJob( |
278 make_scoped_ptr(new MockScreenshotDelegate(error_code.Pass())))); | 310 make_scoped_ptr(new MockScreenshotDelegate(error_code.Pass())), |
| 311 &uploader)); |
279 InitializeScreenshotJob(job.get(), kUniqueID, test_start_time_, | 312 InitializeScreenshotJob(job.get(), kUniqueID, test_start_time_, |
280 kMockUploadUrl); | 313 kMockUploadUrl); |
281 bool success = job->Run( | 314 bool success = job->Run( |
282 base::TimeTicks::Now(), | 315 base::TimeTicks::Now(), |
283 base::Bind(&DeviceCommandScreenshotTest::VerifyResults, | 316 base::Bind(&DeviceCommandScreenshotTest::VerifyResults, |
284 base::Unretained(this), base::Unretained(job.get()), | 317 base::Unretained(this), base::Unretained(job.get()), |
285 RemoteCommandJob::FAILED, | 318 RemoteCommandJob::FAILED, |
286 CreatePayloadFromResultCode( | 319 CreatePayloadFromResultCode( |
287 DeviceCommandScreenshotJob::FAILURE_AUTHENTICATION))); | 320 DeviceCommandScreenshotJob::FAILURE_AUTHENTICATION))); |
288 EXPECT_TRUE(success); | 321 EXPECT_TRUE(success); |
289 run_loop_.Run(); | 322 run_loop_.Run(); |
290 } | 323 } |
291 | 324 |
292 } // namespace policy | 325 } // namespace policy |
OLD | NEW |