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

Unified Diff: chrome/utility/image_writer/image_writer_handler.cc

Issue 2734773002: ImageWriter: Add ShouldResetImageWriter helper (Closed)
Patch Set: Add comment. Created 3 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/utility/image_writer/image_writer_handler.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « chrome/utility/image_writer/image_writer_handler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698