Index: chrome/browser/chromeos/policy/remote_commands/device_command_screenshot_job_unittest.cc |
diff --git a/chrome/browser/chromeos/policy/remote_commands/device_command_screenshot_job_unittest.cc b/chrome/browser/chromeos/policy/remote_commands/device_command_screenshot_job_unittest.cc |
index cc4b51b27cfd898f6e14b3b6214a96fd8cd5b33d..6785dec418ead683b77e505b2b32d9ce3f13055f 100644 |
--- a/chrome/browser/chromeos/policy/remote_commands/device_command_screenshot_job_unittest.cc |
+++ b/chrome/browser/chromeos/policy/remote_commands/device_command_screenshot_job_unittest.cc |
@@ -15,6 +15,7 @@ |
#include "base/time/time.h" |
#include "base/values.h" |
#include "chrome/browser/chromeos/policy/remote_commands/device_command_screenshot_job.h" |
+#include "chrome/browser/chromeos/policy/status_uploader.h" |
#include "content/public/browser/browser_thread.h" |
#include "content/public/test/test_browser_thread_bundle.h" |
#include "policy/proto/device_management_backend.pb.h" |
@@ -179,6 +180,18 @@ scoped_ptr<UploadJob> MockScreenshotDelegate::CreateUploadJob( |
new MockUploadJob(upload_url, delegate, upload_job_error_code_.Pass())); |
} |
+// Mock StatusUploader to test behavior when screenshots are/are not allowed. |
+class MockStatusUploader : public StatusUploader { |
+ public: |
+ explicit MockStatusUploader(bool screenshot_allowed) |
+ : screenshot_allowed_(screenshot_allowed) {} |
+ |
+ bool IsSessionDataUploadAllowed() override { return screenshot_allowed_; } |
+ |
+ private: |
+ bool screenshot_allowed_; |
+}; |
+ |
} // namespace |
class DeviceCommandScreenshotTest : public ash::test::AshTestBase { |
@@ -256,8 +269,9 @@ void DeviceCommandScreenshotTest::VerifyResults( |
} |
TEST_F(DeviceCommandScreenshotTest, Success) { |
+ MockStatusUploader uploader(true); |
scoped_ptr<RemoteCommandJob> job(new DeviceCommandScreenshotJob( |
- make_scoped_ptr(new MockScreenshotDelegate(nullptr)))); |
+ make_scoped_ptr(new MockScreenshotDelegate(nullptr)), &uploader)); |
InitializeScreenshotJob(job.get(), kUniqueID, test_start_time_, |
kMockUploadUrl); |
bool success = job->Run( |
@@ -270,12 +284,31 @@ TEST_F(DeviceCommandScreenshotTest, Success) { |
run_loop_.Run(); |
} |
+TEST_F(DeviceCommandScreenshotTest, FailureUserInput) { |
+ MockStatusUploader uploader(false); |
+ scoped_ptr<RemoteCommandJob> job(new DeviceCommandScreenshotJob( |
+ make_scoped_ptr(new MockScreenshotDelegate(nullptr)), &uploader)); |
+ InitializeScreenshotJob(job.get(), kUniqueID, test_start_time_, |
+ kMockUploadUrl); |
+ bool success = |
+ job->Run(base::TimeTicks::Now(), |
+ base::Bind(&DeviceCommandScreenshotTest::VerifyResults, |
+ base::Unretained(this), base::Unretained(job.get()), |
+ RemoteCommandJob::FAILED, |
+ CreatePayloadFromResultCode( |
+ DeviceCommandScreenshotJob::FAILURE_USER_INPUT))); |
+ EXPECT_TRUE(success); |
+ run_loop_.Run(); |
+} |
+ |
TEST_F(DeviceCommandScreenshotTest, Failure) { |
+ MockStatusUploader uploader(true); |
using ErrorCode = UploadJob::ErrorCode; |
scoped_ptr<ErrorCode> error_code( |
new ErrorCode(UploadJob::AUTHENTICATION_ERROR)); |
scoped_ptr<RemoteCommandJob> job(new DeviceCommandScreenshotJob( |
- make_scoped_ptr(new MockScreenshotDelegate(error_code.Pass())))); |
+ make_scoped_ptr(new MockScreenshotDelegate(error_code.Pass())), |
+ &uploader)); |
InitializeScreenshotJob(job.get(), kUniqueID, test_start_time_, |
kMockUploadUrl); |
bool success = job->Run( |