| Index: chrome/browser/extensions/api/image_writer_private/test_utils.cc | 
| diff --git a/chrome/browser/extensions/api/image_writer_private/test_utils.cc b/chrome/browser/extensions/api/image_writer_private/test_utils.cc | 
| index 29c5b5cc3e467aabb2f6152bcc89ca7ef7ad2e80..0bbb196cbfa384eb783406f81764a3b2a89c8250 100644 | 
| --- a/chrome/browser/extensions/api/image_writer_private/test_utils.cc | 
| +++ b/chrome/browser/extensions/api/image_writer_private/test_utils.cc | 
| @@ -55,14 +55,65 @@ MockOperationManager::MockOperationManager(Profile* profile) | 
| : OperationManager(profile) {} | 
| MockOperationManager::~MockOperationManager() {} | 
|  | 
| +FakeImageWriterClient::FakeImageWriterClient() {} | 
| +FakeImageWriterClient::~FakeImageWriterClient() {} | 
| + | 
| +void FakeImageWriterClient::Write(const ProgressCallback& progress_callback, | 
| +                                  const SuccessCallback& success_callback, | 
| +                                  const ErrorCallback& error_callback, | 
| +                                  const base::FilePath& source, | 
| +                                  const base::FilePath& target) { | 
| +  progress_callback_ = progress_callback; | 
| +  success_callback_ = success_callback; | 
| +  error_callback_ = error_callback; | 
| +} | 
| + | 
| +void FakeImageWriterClient::Verify(const ProgressCallback& progress_callback, | 
| +                                   const SuccessCallback& success_callback, | 
| +                                   const ErrorCallback& error_callback, | 
| +                                   const base::FilePath& source, | 
| +                                   const base::FilePath& target) { | 
| +  progress_callback_ = progress_callback; | 
| +  success_callback_ = success_callback; | 
| +  error_callback_ = error_callback; | 
| +} | 
| + | 
| +void FakeImageWriterClient::Cancel(const CancelCallback& cancel_callback) { | 
| +  cancel_callback_ = cancel_callback; | 
| +} | 
| + | 
| +void FakeImageWriterClient::Shutdown() { | 
| +  // Clear handlers to not hold any reference to the caller. | 
| +  success_callback_ = base::Closure(); | 
| +  progress_callback_ = base::Callback<void(int64)>(); | 
| +  error_callback_ = base::Callback<void(const std::string&)>(); | 
| +  cancel_callback_ = base::Closure(); | 
| +} | 
| + | 
| +void FakeImageWriterClient::Progress(int64 progress) { | 
| +  progress_callback_.Run(progress); | 
| +} | 
| + | 
| +void FakeImageWriterClient::Success() { success_callback_.Run(); } | 
| + | 
| +void FakeImageWriterClient::Error(const std::string& message) { | 
| +  error_callback_.Run(message); | 
| +} | 
| + | 
| +void FakeImageWriterClient::Cancel() { cancel_callback_.Run(); } | 
| + | 
| +scoped_refptr<FakeImageWriterClient> FakeImageWriterClient::Create() { | 
| +  return scoped_refptr<FakeImageWriterClient>(new FakeImageWriterClient()); | 
| +} | 
| + | 
| ImageWriterUnitTestBase::ImageWriterUnitTestBase() | 
| : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP) {} | 
| ImageWriterUnitTestBase::~ImageWriterUnitTestBase() {} | 
|  | 
| void ImageWriterUnitTestBase::SetUp() { | 
| testing::Test::SetUp(); | 
| -  ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 
|  | 
| +  ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 
| ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 
| &test_image_path_)); | 
| ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 
| @@ -89,6 +140,27 @@ void ImageWriterUnitTestBase::TearDown() { | 
| #endif | 
| } | 
|  | 
| +bool ImageWriterUnitTestBase::ImageWrittenToDevice( | 
| +    const base::FilePath& image_path, | 
| +    const base::FilePath& device_path) { | 
| +  scoped_ptr<char[]> image_buffer(new char[kTestFileSize]); | 
| +  scoped_ptr<char[]> device_buffer(new char[kTestFileSize]); | 
| + | 
| +  int image_bytes_read = | 
| +      ReadFile(image_path, image_buffer.get(), kTestFileSize); | 
| + | 
| +  if (image_bytes_read < 0) | 
| +    return false; | 
| + | 
| +  int device_bytes_read = | 
| +      ReadFile(device_path, device_buffer.get(), kTestFileSize); | 
| + | 
| +  if (image_bytes_read != device_bytes_read) | 
| +    return false; | 
| + | 
| +  return memcmp(image_buffer.get(), device_buffer.get(), image_bytes_read) == 0; | 
| +} | 
| + | 
| bool ImageWriterUnitTestBase::FillFile(const base::FilePath& file, | 
| const int pattern, | 
| const int length) { | 
|  |