Index: chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.h |
diff --git a/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.h b/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.h |
index 454bf4f6122ec15a17f73ffb5f90ceb7a82c0d45..c4c95483c6a5c62a673c712dbd773634f8701403 100644 |
--- a/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.h |
+++ b/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.h |
@@ -5,15 +5,26 @@ |
#ifndef CHROME_BROWSER_EXTENSIONS_API_MEDIA_GALLERIES_PRIVATE_MEDIA_GALLERIES_PRIVATE_API_H_ |
#define CHROME_BROWSER_EXTENSIONS_API_MEDIA_GALLERIES_PRIVATE_MEDIA_GALLERIES_PRIVATE_API_H_ |
+#include <string> |
+ |
#include "base/memory/scoped_ptr.h" |
#include "chrome/browser/extensions/event_router.h" |
+#include "chrome/browser/extensions/extension_function.h" |
+#include "chrome/browser/media_gallery/media_galleries_preferences.h" |
#include "chrome/browser/profiles/profile_keyed_service.h" |
+class FilePath; |
+class Profile; |
+ |
namespace extensions { |
+ |
+class MediaGalleryExtensionNotificationObserver; |
class MediaGalleriesPrivateEventRouter; |
+// The profile-keyed service that manages the media galleries private extension |
+// API. |
class MediaGalleriesPrivateAPI : public ProfileKeyedService, |
- public extensions::EventRouter::Observer { |
+ public EventRouter::Observer { |
public: |
explicit MediaGalleriesPrivateAPI(Profile* profile); |
virtual ~MediaGalleriesPrivateAPI(); |
@@ -22,14 +33,55 @@ class MediaGalleriesPrivateAPI : public ProfileKeyedService, |
virtual void Shutdown() OVERRIDE; |
// EventRouter::Observer implementation. |
- virtual void OnListenerAdded(const extensions::EventListenerInfo& details) |
- OVERRIDE; |
+ virtual void OnListenerAdded(const EventListenerInfo& details) OVERRIDE; |
+ |
+ MediaGalleriesPrivateEventRouter* GetEventRouter(); |
private: |
+ void MaybeInitializeEventRouter(); |
+ |
+ // Current profile. |
Profile* profile_; |
+ scoped_ptr<MediaGalleryExtensionNotificationObserver> |
+ extension_notification_observer_; |
+ |
+ // Created lazily on first access. |
scoped_ptr<MediaGalleriesPrivateEventRouter> |
media_galleries_private_event_router_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(MediaGalleriesPrivateAPI); |
+}; |
+ |
+// Implements the chrome.mediaGalleriesPrivate.addGalleryWatch method. |
+class MediaGalleriesPrivateAddGalleryWatchFunction |
+ : public AsyncExtensionFunction { |
+ public: |
+ DECLARE_EXTENSION_FUNCTION_NAME("mediaGalleriesPrivate.addGalleryWatch"); |
+ |
+ protected: |
+ virtual ~MediaGalleriesPrivateAddGalleryWatchFunction(); |
+ |
+ // AsyncExtensionFunction overrides. |
+ virtual bool RunImpl() OVERRIDE; |
+ |
+ private: |
+ // Gallery watch request handler. |
+ void HandleResponse(chrome::MediaGalleryPrefId gallery_id, |
+ bool success); |
+}; |
+ |
+// Implements the chrome.mediaGalleriesPrivate.removeGalleryWatch method. |
+class MediaGalleriesPrivateRemoveGalleryWatchFunction |
+ : public SyncExtensionFunction { |
+ public: |
+ DECLARE_EXTENSION_FUNCTION_NAME("mediaGalleriesPrivate.removeGalleryWatch"); |
+ |
+ protected: |
+ virtual ~MediaGalleriesPrivateRemoveGalleryWatchFunction(); |
+ |
+ // SyncExtensionFunction overrides. |
+ virtual bool RunImpl() OVERRIDE; |
}; |
} // namespace extensions |