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

Side by Side Diff: chrome/browser/chromeos/policy/remote_commands/device_command_screenshot_job_unittest.cc

Issue 1135413002: Disable screenshot uploading if there has been user input. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed leak in test. Created 5 years, 7 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 <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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698