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

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

Issue 175423004: Revert 252466 "In order to support writing on windows we need to..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 10 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
Index: trunk/src/chrome/utility/image_writer/image_writer_handler.cc
===================================================================
--- trunk/src/chrome/utility/image_writer/image_writer_handler.cc (revision 252594)
+++ trunk/src/chrome/utility/image_writer/image_writer_handler.cc (working copy)
@@ -1,151 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "base/files/file_path.h"
-#include "chrome/common/chrome_utility_messages.h"
-#include "chrome/utility/image_writer/error_messages.h"
-#include "chrome/utility/image_writer/image_writer_handler.h"
-#include "content/public/utility/utility_thread.h"
-
-#if defined(OS_WIN)
-#include <windows.h>
-#include <setupapi.h>
-#include <winioctl.h>
-#endif
-
-namespace image_writer {
-
-#if defined(OS_WIN)
-const size_t kStorageQueryBufferSize = 1024;
-#endif
-
-ImageWriterHandler::ImageWriterHandler() : image_writer_(this) {}
-ImageWriterHandler::~ImageWriterHandler() {}
-
-void ImageWriterHandler::SendSucceeded() {
- Send(new ChromeUtilityHostMsg_ImageWriter_Succeeded());
- content::UtilityThread::Get()->ReleaseProcessIfNeeded();
-}
-
-void ImageWriterHandler::SendCancelled() {
- Send(new ChromeUtilityHostMsg_ImageWriter_Cancelled());
- content::UtilityThread::Get()->ReleaseProcessIfNeeded();
-}
-
-void ImageWriterHandler::SendFailed(const std::string& message) {
- Send(new ChromeUtilityHostMsg_ImageWriter_Failed(message));
- content::UtilityThread::Get()->ReleaseProcessIfNeeded();
-}
-
-void ImageWriterHandler::SendProgress(int64 progress) {
- Send(new ChromeUtilityHostMsg_ImageWriter_Progress(progress));
-}
-
-void ImageWriterHandler::Send(IPC::Message* msg) {
- content::UtilityThread::Get()->Send(msg);
-}
-
-bool ImageWriterHandler::OnMessageReceived(const IPC::Message& message) {
- bool handled = true;
- IPC_BEGIN_MESSAGE_MAP(ImageWriterHandler, message)
- IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ImageWriter_Write, OnWriteStart)
- IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ImageWriter_Verify, OnVerifyStart)
- IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ImageWriter_Cancel, OnCancel)
- IPC_MESSAGE_UNHANDLED(handled = false)
- IPC_END_MESSAGE_MAP()
- return handled;
-}
-
-void ImageWriterHandler::OnWriteStart(const base::FilePath& image,
- const base::FilePath& device) {
- if (!IsValidDevice(device)) {
- Send(new ChromeUtilityHostMsg_ImageWriter_Failed(error::kInvalidDevice));
- return;
- }
-
- if (image_writer_.IsRunning()) {
- Send(new ChromeUtilityHostMsg_ImageWriter_Failed(
- error::kOperationAlreadyInProgress));
- return;
- }
- image_writer_.Write(image, device);
-}
-
-void ImageWriterHandler::OnVerifyStart(const base::FilePath& image,
- const base::FilePath& device) {
- if (!IsValidDevice(device)) {
- Send(new ChromeUtilityHostMsg_ImageWriter_Failed(error::kInvalidDevice));
- return;
- }
-
- if (image_writer_.IsRunning()) {
- Send(new ChromeUtilityHostMsg_ImageWriter_Failed(
- error::kOperationAlreadyInProgress));
- return;
- }
- image_writer_.Verify(image, device);
-}
-
-void ImageWriterHandler::OnCancel() {
- if (image_writer_.IsRunning()) {
- image_writer_.Cancel();
- } else {
- SendCancelled();
- }
-}
-
-bool ImageWriterHandler::IsValidDevice(const base::FilePath& device) {
-#if defined(OS_WIN)
- base::win::ScopedHandle device_handle(
- CreateFile(device.value().c_str(),
- // Desired access, which is none as we only need metadata.
- 0,
- // Required to be read + write for devices.
- FILE_SHARE_READ | FILE_SHARE_WRITE,
- NULL, // Optional security attributes.
- OPEN_EXISTING, // Devices already exist.
- 0, // No optional flags.
- NULL)); // No template file.
-
- if (!device_handle) {
- PLOG(ERROR) << "Opening device handle failed.";
- return false;
- }
-
- STORAGE_PROPERTY_QUERY query = STORAGE_PROPERTY_QUERY();
- query.PropertyId = StorageDeviceProperty;
- query.QueryType = PropertyStandardQuery;
- DWORD bytes_returned;
-
- scoped_ptr<char[]> output_buf(new char[kStorageQueryBufferSize]);
- BOOL status = DeviceIoControl(
- device_handle, // Device handle.
- IOCTL_STORAGE_QUERY_PROPERTY, // Flag to request device properties.
- &query, // Query parameters.
- sizeof(STORAGE_PROPERTY_QUERY), // query parameters size.
- output_buf.get(), // output buffer.
- kStorageQueryBufferSize, // Size of buffer.
- &bytes_returned, // Number of bytes returned.
- // Must not be null.
- NULL); // Optional unused overlapped perameter.
-
- if (status == FALSE) {
- PLOG(ERROR) << "Storage property query failed.";
- return false;
- }
-
- STORAGE_DEVICE_DESCRIPTOR* device_descriptor =
- reinterpret_cast<STORAGE_DEVICE_DESCRIPTOR*>(output_buf.get());
-
- if (device_descriptor->RemovableMedia)
- return true;
-
-#else
- // Other platforms will have to be added as they are supported.
- NOTIMPLEMENTED();
-#endif
- return false;
-}
-
-} // namespace image_writer

Powered by Google App Engine
This is Rietveld 408576698