Chromium Code Reviews| Index: chrome/browser/chromeos/mtp/media_transfer_protocol_manager.h |
| =================================================================== |
| --- chrome/browser/chromeos/mtp/media_transfer_protocol_manager.h (revision 0) |
| +++ chrome/browser/chromeos/mtp/media_transfer_protocol_manager.h (revision 0) |
| @@ -0,0 +1,132 @@ |
| +// Copyright (c) 2012 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. |
| + |
| +#ifndef CHROME_BROWSER_CHROMEOS_MTP_MEDIA_TRANSFER_PROTOCOL_MANAGER_H_ |
| +#define CHROME_BROWSER_CHROMEOS_MTP_MEDIA_TRANSFER_PROTOCOL_MANAGER_H_ |
| + |
| +#include <string> |
| +#include <vector> |
| + |
| +#include "chromeos/dbus/media_transfer_protocol_daemon_client.h" |
| + |
| +namespace chromeos { |
| +namespace mtp { |
| + |
| +// This class handles the interaction with mtpd. |
| +// Other classes can add themselves as observers. |
| +class MediaTransferProtocolManager { |
| + public: |
| + // A callback to handle the result of OpenStorage. |
| + // The first argument is the returned handle. |
| + // The second argument is true if there was an error. |
| + typedef base::Callback<void(const std::string& handle, |
| + bool error)> OpenStorageCallback; |
| + |
| + // A callback to handle the result of CloseStorage. |
| + // The argument is true if there was an error. |
| + typedef base::Callback<void(bool error)> CloseStorageCallback; |
| + |
| + // A callback to handle the result of ReadDirectoryByPath/Id. |
| + // The first argument is a vector of file entries. |
| + // The second argument is true if there was an error. |
| + typedef base::Callback<void(const std::vector<FileEntry>& file_entries, |
| + bool error)> ReadDirectoryCallback; |
| + |
| + // A callback to handle the result of ReadFileByPath/Id. |
| + // The first argument is a string containing the file data. |
| + // The second argument is true if there was an error. |
| + // TODO(thestig) Consider using a file descriptor instead of the data. |
| + typedef base::Callback<void(const std::string& data, |
| + bool error)> ReadFileCallback; |
| + |
| + // A callback to handle the result of GetFileInfoByPath/Id. |
| + // The first argument is a file entry. |
| + // The second argument is true if there was an error. |
| + typedef base::Callback<void(const FileEntry& file_entry, |
| + bool error)> GetFileInfoCallback; |
| + |
| + // Implement this interface to be notified about MTP storage |
| + // attachment / detachment events. |
| + class Observer { |
| + public: |
| + virtual ~Observer() {} |
| + |
| + // A function called after a MTP storage has been attached / detached. |
| + virtual void StorageChanged(bool is_attached, |
| + const std::string& storage_name) = 0; |
| + }; |
| + |
| + virtual ~MediaTransferProtocolManager() {} |
|
tbarzic
2012/08/29 19:52:27
should ctor/dtor be protected (afaik they should o
Lei Zhang
2012/08/30 01:32:00
There are lots of pure classes that have a public
|
| + |
| + // Adds an observer. |
| + virtual void AddObserver(Observer* observer) = 0; |
| + |
| + // Removes an observer. |
| + virtual void RemoveObserver(Observer* observer) = 0; |
| + |
| + // Returns a vector of available MTP storages. |
| + virtual const std::vector<std::string> GetStorages() const = 0; |
| + |
| + // On success, returns true and fills |info| with the metadata for |
| + // |storage_name|. |
| + virtual bool GetStorageInfo(const std::string& storage_name, |
| + StorageInfo* info) const = 0; |
| + |
| + // Opens |storage_name| in |mode| and runs |callback|. |
| + virtual void OpenStorage(const std::string& storage_name, |
| + OpenStorageMode mode, |
| + const OpenStorageCallback& callback) = 0; |
| + |
| + // Close |storage_handle| and runs |callback|. |
| + virtual void CloseStorage(const std::string& storage_handle, |
| + const CloseStorageCallback& callback) = 0; |
| + |
| + // Reads directory entries from |path| on |storage_handle| and runs |
| + // |callback|. |
| + virtual void ReadDirectoryByPath(const std::string& storage_handle, |
| + const std::string& path, |
| + const ReadDirectoryCallback& callback) = 0; |
| + |
| + // Reads directory entries from |file_id| on |storage_handle| and runs |
| + // |callback|. |
| + virtual void ReadDirectoryById(const std::string& storage_handle, |
| + uint32 file_id, |
| + const ReadDirectoryCallback& callback) = 0; |
| + |
| + // Reads file data from |path| on |storage_handle| and runs |callback|. |
| + virtual void ReadFileByPath(const std::string& storage_handle, |
| + const std::string& path, |
| + const ReadFileCallback& callback) = 0; |
| + |
| + // Reads file data from |file_id| on |storage_handle| and runs |callback|. |
| + virtual void ReadFileById(const std::string& storage_handle, |
| + uint32 file_id, |
| + const ReadFileCallback& callback) = 0; |
| + |
| + // Gets the file metadata for |path| on |storage_handle| and runs |callback|. |
| + virtual void GetFileInfoByPath(const std::string& storage_handle, |
| + const std::string& path, |
| + const GetFileInfoCallback& callback) = 0; |
| + |
| + // Gets the file metadata for |file_id| on |storage_handle| and runs |
| + // |callback|. |
| + virtual void GetFileInfoById(const std::string& storage_handle, |
| + uint32 file_id, |
| + const GetFileInfoCallback& callback) = 0; |
| + |
| + // Creates the global MediaTransferProtocolManager instance. |
| + static void Initialize(); |
| + |
| + // Destroys the global MediaTransferProtocolManager instance if it exists. |
| + static void Shutdown(); |
| + |
| + // Returns a pointer to the global MediaTransferProtocolManager instance. |
| + // Initialize() should already have been called. |
| + static MediaTransferProtocolManager* GetInstance(); |
| +}; |
| + |
| +} // namespace mtp |
| +} // namespace chromeos |
| + |
| +#endif // CHROME_BROWSER_CHROMEOS_MTP_MEDIA_TRANSFER_PROTOCOL_MANAGER_H_ |
| Property changes on: chrome/browser/chromeos/mtp/media_transfer_protocol_manager.h |
| ___________________________________________________________________ |
| Added: svn:eol-style |
| + LF |