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.
5 #include "chrome/browser/media_galleries/linux/snapshot_file_details.h"
7 #include "base/numerics/safe_conversions.h"
9 ////////////////////////////////////////////////////////////////////////////////
10 // SnapshotRequestInfo //
11 ////////////////////////////////////////////////////////////////////////////////
13 SnapshotRequestInfo::SnapshotRequestInfo(
15 const base::FilePath
& snapshot_file_path
,
16 const MTPDeviceAsyncDelegate::CreateSnapshotFileSuccessCallback
&
18 const MTPDeviceAsyncDelegate::ErrorCallback
& error_callback
)
20 snapshot_file_path(snapshot_file_path
),
21 success_callback(success_callback
),
22 error_callback(error_callback
) {
25 SnapshotRequestInfo::~SnapshotRequestInfo() {
28 ////////////////////////////////////////////////////////////////////////////////
29 // SnapshotFileDetails //
30 ////////////////////////////////////////////////////////////////////////////////
32 SnapshotFileDetails::SnapshotFileDetails(
33 const SnapshotRequestInfo
& request_info
,
34 const base::File::Info
& file_info
)
35 : request_info_(request_info
),
36 file_info_(file_info
),
38 error_occurred_(false) {
41 SnapshotFileDetails::~SnapshotFileDetails() {
44 void SnapshotFileDetails::set_error_occurred(bool error
) {
45 error_occurred_
= error
;
48 bool SnapshotFileDetails::AddBytesWritten(uint32 bytes_written
) {
49 if ((bytes_written
== 0) ||
50 (bytes_written_
> kuint32max
- bytes_written
) ||
51 (bytes_written_
+ bytes_written
> file_info_
.size
))
54 bytes_written_
+= bytes_written
;
58 bool SnapshotFileDetails::IsSnapshotFileWriteComplete() const {
59 return !error_occurred_
&& (bytes_written_
== file_info_
.size
);
62 uint32
SnapshotFileDetails::BytesToRead() const {
63 // Read data in 1MB chunks.
64 static const uint32 kReadChunkSize
= 1024 * 1024;
67 base::checked_cast
<uint32
>(file_info_
.size
) - bytes_written_
);