mtp_device_object_enumerator.h revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
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 3// found in the LICENSE file. 4// 5// This class enumerates the media transfer protocol (MTP) device objects from 6// a given object entry list. 7 8#ifndef CHROME_BROWSER_MEDIA_GALLERIES_WIN_MTP_DEVICE_OBJECT_ENUMERATOR_H_ 9#define CHROME_BROWSER_MEDIA_GALLERIES_WIN_MTP_DEVICE_OBJECT_ENUMERATOR_H_ 10 11#include "base/files/file_path.h" 12#include "base/threading/thread_checker.h" 13#include "base/time/time.h" 14#include "chrome/browser/media_galleries/win/mtp_device_object_entry.h" 15 16// MTPDeviceObjectEnumerator is used to enumerate the media transfer protocol 17// (MTP) device objects from a given object entry list. 18// MTPDeviceObjectEnumerator supports MTP device file operations. 19// MTPDeviceObjectEnumerator may only be used on a single thread. 20class MTPDeviceObjectEnumerator { 21 public: 22 explicit MTPDeviceObjectEnumerator(const MTPDeviceObjectEntries& entries); 23 ~MTPDeviceObjectEnumerator(); 24 25 base::FilePath Next(); 26 int64 Size(); 27 bool IsDirectory(); 28 base::Time LastModifiedTime(); 29 30 // If the current file object entry is valid, returns an non-empty object id. 31 // Returns an empty string otherwise. 32 base::string16 GetObjectId() const; 33 34 private: 35 // Returns true if the enumerator has more entries to traverse, false 36 // otherwise. 37 bool HasMoreEntries() const; 38 39 // Returns true if Next() has been called at least once, and the enumerator 40 // has more entries to traverse. 41 bool IsIndexReadyAndInRange() const; 42 43 // List of directory file object entries. 44 MTPDeviceObjectEntries object_entries_; 45 46 // Index into |object_entries_|. 47 // Should only be used when |is_index_ready_| is true. 48 size_t index_; 49 50 // Initially false. Set to true after Next() has been called. 51 bool is_index_ready_; 52 53 base::ThreadChecker thread_checker_; 54 55 DISALLOW_COPY_AND_ASSIGN(MTPDeviceObjectEnumerator); 56}; 57 58#endif // CHROME_BROWSER_MEDIA_GALLERIES_WIN_MTP_DEVICE_OBJECT_ENUMERATOR_H_ 59