1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/media_galleries/win/snapshot_file_details.h" 6 7 #include "base/basictypes.h" 8 9 /////////////////////////////////////////////////////////////////////////////// 10 // SnapshotRequestInfo // 11 /////////////////////////////////////////////////////////////////////////////// 12 13 SnapshotRequestInfo::SnapshotRequestInfo( 14 const base::FilePath& device_file_path, 15 const base::FilePath& snapshot_file_path, 16 const MTPDeviceAsyncDelegate::CreateSnapshotFileSuccessCallback& 17 success_callback, 18 const MTPDeviceAsyncDelegate::ErrorCallback& error_callback) 19 : device_file_path(device_file_path), 20 snapshot_file_path(snapshot_file_path), 21 success_callback(success_callback), 22 error_callback(error_callback) { 23 } 24 25 /////////////////////////////////////////////////////////////////////////////// 26 // SnapshotFileDetails // 27 /////////////////////////////////////////////////////////////////////////////// 28 29 SnapshotFileDetails::SnapshotFileDetails( 30 const SnapshotRequestInfo& request_info) 31 : request_info_(request_info), 32 optimal_transfer_size_(0), 33 bytes_written_(0) { 34 } 35 36 SnapshotFileDetails::~SnapshotFileDetails() { 37 file_stream_.Release(); 38 } 39 40 void SnapshotFileDetails::set_file_info( 41 const base::PlatformFileInfo& file_info) { 42 file_info_ = file_info; 43 } 44 45 void SnapshotFileDetails::set_device_file_stream( 46 IStream* file_stream) { 47 file_stream_ = file_stream; 48 } 49 50 void SnapshotFileDetails::set_optimal_transfer_size( 51 DWORD optimal_transfer_size) { 52 optimal_transfer_size_ = optimal_transfer_size; 53 } 54 55 bool SnapshotFileDetails::IsSnapshotFileWriteComplete() const { 56 return bytes_written_ == file_info_.size; 57 } 58 59 bool SnapshotFileDetails::AddBytesWritten(DWORD bytes_written) { 60 if ((bytes_written == 0) || 61 (bytes_written_ > kuint64max - bytes_written) || 62 (bytes_written_ + bytes_written > file_info_.size)) 63 return false; 64 65 bytes_written_ += bytes_written; 66 return true; 67 } 68