| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/media_galleries/win/mtp_device_operations_util.h" | 5 #include "chrome/browser/media_galleries/win/mtp_device_operations_util.h" |
| 6 | 6 |
| 7 #include <portabledevice.h> | 7 #include <portabledevice.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| (...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 385 // |optimal_transfer_size|). This indicates the end of the stream has been | 385 // |optimal_transfer_size|). This indicates the end of the stream has been |
| 386 // reached. | 386 // reached. |
| 387 if (FAILED(hr)) | 387 if (FAILED(hr)) |
| 388 return 0U; | 388 return 0U; |
| 389 DCHECK_GT(bytes_read, 0U); | 389 DCHECK_GT(bytes_read, 0U); |
| 390 CHECK_LE(bytes_read, buffer.length()); | 390 CHECK_LE(bytes_read, buffer.length()); |
| 391 int data_len = | 391 int data_len = |
| 392 base::checked_cast<int>( | 392 base::checked_cast<int>( |
| 393 std::min(bytes_read, | 393 std::min(bytes_read, |
| 394 base::checked_cast<DWORD>(buffer.length()))); | 394 base::checked_cast<DWORD>(buffer.length()))); |
| 395 if (base::AppendToFile(local_path, buffer.c_str(), data_len) != data_len) | 395 return base::AppendToFile(local_path, buffer.c_str(), data_len) ? data_len |
| 396 return 0U; | 396 : 0; |
| 397 return data_len; | |
| 398 } | 397 } |
| 399 | 398 |
| 400 base::string16 GetObjectIdFromName(IPortableDevice* device, | 399 base::string16 GetObjectIdFromName(IPortableDevice* device, |
| 401 const base::string16& parent_id, | 400 const base::string16& parent_id, |
| 402 const base::string16& object_name) { | 401 const base::string16& object_name) { |
| 403 MTPDeviceObjectEntries object_entries; | 402 MTPDeviceObjectEntries object_entries; |
| 404 if (!GetMTPDeviceObjectEntries(device, parent_id, object_name, | 403 if (!GetMTPDeviceObjectEntries(device, parent_id, object_name, |
| 405 &object_entries) || | 404 &object_entries) || |
| 406 object_entries.empty()) | 405 object_entries.empty()) |
| 407 return base::string16(); | 406 return base::string16(); |
| 408 // TODO(thestig): This DCHECK can fail. Multiple MTP objects can have | 407 // TODO(thestig): This DCHECK can fail. Multiple MTP objects can have |
| 409 // the same name. Handle the situation gracefully. Refer to crbug.com/169930 | 408 // the same name. Handle the situation gracefully. Refer to crbug.com/169930 |
| 410 // for more details. | 409 // for more details. |
| 411 DCHECK_EQ(1U, object_entries.size()); | 410 DCHECK_EQ(1U, object_entries.size()); |
| 412 return object_entries[0].object_id; | 411 return object_entries[0].object_id; |
| 413 } | 412 } |
| 414 | 413 |
| 415 } // namespace media_transfer_protocol | 414 } // namespace media_transfer_protocol |
| OLD | NEW |