// 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. // MediaFileSystemRegistry registers pictures directories as File API // filesystems and keeps track of the path to filesystem ID mappings. // In the near future, MediaFileSystemRegistry will also support media devices. #ifndef CHROME_BROWSER_MEDIA_GALLERY_MEDIA_FILE_SYSTEM_REGISTRY_H_ #define CHROME_BROWSER_MEDIA_GALLERY_MEDIA_FILE_SYSTEM_REGISTRY_H_ #pragma once #include #include #include #include #include "base/basictypes.h" #include "base/lazy_instance.h" class FilePath; namespace fileapi { class IsolatedContext; } namespace chrome { class MediaFileSystemRegistry { public: // (Filesystem ID, path) typedef std::pair MediaFSIDAndPath; // The instance is lazily created per browser process. static MediaFileSystemRegistry* GetInstance(); // Returns the list of media filesystem IDs and paths. // Called on the UI thread. std::vector GetMediaFileSystems() const; private: friend struct base::DefaultLazyInstanceTraits; // Mapping of media directories to filesystem IDs. typedef std::map MediaPathToFSIDMap; // Obtain an instance of this class via GetInstance(). MediaFileSystemRegistry(); virtual ~MediaFileSystemRegistry(); // Registers a path as a media file system. void RegisterPathAsFileSystem(const FilePath& path); // Only accessed on the UI thread. MediaPathToFSIDMap media_fs_map_; DISALLOW_COPY_AND_ASSIGN(MediaFileSystemRegistry); }; } // namespace chrome #endif // CHROME_BROWSER_MEDIA_GALLERY_MEDIA_FILE_SYSTEM_REGISTRY_H_