| Index: chrome/utility/image_writer/image_writer_handler.cc
|
| diff --git a/chrome/utility/image_writer/image_writer_handler.cc b/chrome/utility/image_writer/image_writer_handler.cc
|
| index d63edb7705fc684abbba908d632d5d104be4ee4b..437f50c581f26aff37a05c586e31416dee2f2447 100644
|
| --- a/chrome/utility/image_writer/image_writer_handler.cc
|
| +++ b/chrome/utility/image_writer/image_writer_handler.cc
|
| @@ -42,11 +42,8 @@ void ImageWriterHandler::Write(
|
| if (test_mode)
|
| target_device = MakeTestDevicePath(image);
|
|
|
| - // https://crbug.com/352442
|
| - if (!image_writer_.get() || image != image_writer_->GetImagePath() ||
|
| - target_device != image_writer_->GetDevicePath()) {
|
| + if (ShouldResetImageWriter(image, target_device))
|
| image_writer_.reset(new ImageWriter(this, image, target_device));
|
| - }
|
|
|
| if (image_writer_->IsRunning()) {
|
| SendFailed(error::kOperationAlreadyInProgress);
|
| @@ -80,11 +77,8 @@ void ImageWriterHandler::Verify(
|
| if (test_mode)
|
| target_device = MakeTestDevicePath(image);
|
|
|
| - // https://crbug.com/352442
|
| - if (!image_writer_.get() || image != image_writer_->GetImagePath() ||
|
| - target_device != image_writer_->GetDevicePath()) {
|
| + if (ShouldResetImageWriter(image, target_device))
|
| image_writer_.reset(new ImageWriter(this, image, target_device));
|
| - }
|
|
|
| if (image_writer_->IsRunning()) {
|
| SendFailed(error::kOperationAlreadyInProgress);
|
| @@ -124,4 +118,19 @@ void ImageWriterHandler::Cancel() {
|
| client_.reset();
|
| }
|
|
|
| +bool ImageWriterHandler::ShouldResetImageWriter(const base::FilePath& image,
|
| + const base::FilePath& device) {
|
| + if (!image_writer_)
|
| + return true;
|
| + if (image != image_writer_->GetImagePath())
|
| + return true;
|
| + if (device != image_writer_->GetDevicePath())
|
| + return true;
|
| +
|
| + // When writing and verifying the same file on the same device, keep
|
| + // the file handles open; do not reset them since that can cause the
|
| + // operation to fail in unexpected ways: crbug.com/352442#c7
|
| + return false;
|
| +}
|
| +
|
| } // namespace image_writer
|
|
|