| Index: chrome/browser/extensions/api/media_galleries_private/gallery_watch_manager.h
|
| diff --git a/chrome/browser/extensions/api/media_galleries_private/gallery_watch_manager.h b/chrome/browser/extensions/api/media_galleries_private/gallery_watch_manager.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..14cbe322fe942c73545468ff3378244543834414
|
| --- /dev/null
|
| +++ b/chrome/browser/extensions/api/media_galleries_private/gallery_watch_manager.h
|
| @@ -0,0 +1,80 @@
|
| +// 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.
|
| +
|
| +// Manages all the gallery file watchers for the associated profile. This class
|
| +// lives on the file thread. This class is instantiated per profile. This
|
| +// is temporary and will be moved to a permanent, public place in the near
|
| +// future.
|
| +
|
| +#ifndef CHROME_BROWSER_EXTENSIONS_API_MEDIA_GALLERIES_PRIVATE_GALLERY_WATCH_MANAGER_H_
|
| +#define CHROME_BROWSER_EXTENSIONS_API_MEDIA_GALLERIES_PRIVATE_GALLERY_WATCH_MANAGER_H_
|
| +
|
| +#include <map>
|
| +#include <string>
|
| +
|
| +#include "base/file_path.h"
|
| +#include "chrome/browser/media_gallery/media_galleries_preferences.h"
|
| +
|
| +class Profile;
|
| +
|
| +namespace extensions {
|
| +
|
| +class GalleryWatchManager {
|
| + public:
|
| + // Returns the GalleryWatchManager for |profile|, creating it if it is not
|
| + // yet created.
|
| + static GalleryWatchManager* GetForProfile(Profile* profile);
|
| +
|
| + // Returns true if an GalleryWatchManager already exists for the specified
|
| + // |profile|.
|
| + static bool HasForProfile(Profile* profile);
|
| +
|
| + // Notifies about the |profile| shutdown event.
|
| + static void OnProfileShutdown(Profile* profile);
|
| +
|
| + // Initiates a gallery watch operation for the extension specified by
|
| + // the |extension_id|. |gallery_id| specifies the gallery identifier and
|
| + // |watch_path| specifies the absolute path of the gallery. Returns true,
|
| + // if the watch was set successfully.
|
| + bool StartGalleryWatch(chrome::MediaGalleryPrefId gallery_id,
|
| + const FilePath& watch_path,
|
| + const std::string& extension_id);
|
| +
|
| + // Cancels the gallery watch operation for the extension specified by the
|
| + // |extension_id|. |watch_path| specifies the absolute path of the gallery.
|
| + void StopGalleryWatch(const FilePath& watch_path,
|
| + const std::string& extension_id);
|
| +
|
| + // Handles the extension unloaded/uninstalled/destroyed event.
|
| + void OnExtensionDestroyed(const std::string& extension_id);
|
| +
|
| + private:
|
| + class GalleryFilePathWatcher;
|
| + typedef std::map<FilePath, GalleryFilePathWatcher* > WatcherMap;
|
| +
|
| + // Use GetForProfile().
|
| + explicit GalleryWatchManager(Profile* profile);
|
| + ~GalleryWatchManager();
|
| +
|
| + // Deletes the gallery watchers.
|
| + void DeleteAllWatchers();
|
| +
|
| + // Removes the GalleryFilePathWatcher entry associated with the given
|
| + // |watch_path|.
|
| + void RemoveGalleryFilePathWatcherEntry(const FilePath& watch_path);
|
| +
|
| + // Current profile.
|
| + Profile* profile_;
|
| +
|
| + // Map to manage the gallery file path watchers.
|
| + // Key: Gallery watch path.
|
| + // Value: GalleryFilePathWatcher*.
|
| + WatcherMap gallery_watchers_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(GalleryWatchManager);
|
| +};
|
| +
|
| +} // namespace extensions
|
| +
|
| +#endif // CHROME_BROWSER_EXTENSIONS_API_MEDIA_GALLERIES_PRIVATE_GALLERY_WATCH_MANAGER_H_
|
|
|