diff options
-rw-r--r-- | chrome/browser/chromeos/extensions/media_player_api.cc (renamed from chrome/browser/chromeos/media/media_player_extension_api.cc) | 39 | ||||
-rw-r--r-- | chrome/browser/chromeos/extensions/media_player_api.h (renamed from chrome/browser/chromeos/media/media_player_extension_api.h) | 44 | ||||
-rw-r--r-- | chrome/browser/chromeos/extensions/media_player_event_router.cc | 24 | ||||
-rw-r--r-- | chrome/browser/chromeos/extensions/media_player_event_router.h | 16 | ||||
-rw-r--r-- | chrome/browser/chromeos/media/media_player.cc | 7 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_function_registry.cc | 10 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_service.cc | 6 | ||||
-rw-r--r-- | chrome/browser/profiles/profile_dependency_manager.cc | 4 | ||||
-rw-r--r-- | chrome/browser/ui/ash/chrome_shell_delegate.cc | 10 | ||||
-rw-r--r-- | chrome/chrome_browser_chromeos.gypi | 8 |
10 files changed, 124 insertions, 44 deletions
diff --git a/chrome/browser/chromeos/media/media_player_extension_api.cc b/chrome/browser/chromeos/extensions/media_player_api.cc index 1f8449f..5e7d7a5 100644 --- a/chrome/browser/chromeos/media/media_player_extension_api.cc +++ b/chrome/browser/chromeos/extensions/media_player_api.cc @@ -2,13 +2,22 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "chrome/browser/chromeos/extensions/media_player_api.h" + +#include "base/lazy_instance.h" #include "base/values.h" +#include "chrome/browser/chromeos/extensions/media_player_event_router.h" #include "chrome/browser/chromeos/media/media_player.h" -#include "chrome/browser/chromeos/media/media_player_extension_api.h" + +namespace { static const char kPropertyItems[] = "items"; static const char kPropertyPosition[] = "position"; +} // namespace + +namespace extensions { + bool PlayMediaplayerFunction::RunImpl() { if (args_->GetSize() < 2) { return false; @@ -76,3 +85,31 @@ bool CloseWindowMediaplayerFunction::RunImpl() { MediaPlayer::GetInstance()->CloseWindow(); return true; } + +MediaPlayerAPI::MediaPlayerAPI(Profile* profile) + : profile_(profile) { +} + +MediaPlayerAPI::~MediaPlayerAPI() { +} + +// static +MediaPlayerAPI* MediaPlayerAPI::Get(Profile* profile) { + return ProfileKeyedAPIFactory<MediaPlayerAPI>::GetForProfile(profile); +} + +MediaPlayerEventRouter* MediaPlayerAPI::media_player_event_router() { + if (!media_player_event_router_) + media_player_event_router_.reset(new MediaPlayerEventRouter(profile_)); + return media_player_event_router_.get(); +} + +static base::LazyInstance<ProfileKeyedAPIFactory<MediaPlayerAPI> > +g_factory = LAZY_INSTANCE_INITIALIZER; + +// static +ProfileKeyedAPIFactory<MediaPlayerAPI>* MediaPlayerAPI::GetFactoryInstance() { + return &g_factory.Get(); +} + +} // namespace extensions diff --git a/chrome/browser/chromeos/media/media_player_extension_api.h b/chrome/browser/chromeos/extensions/media_player_api.h index 54b60a2..17b012c 100644 --- a/chrome/browser/chromeos/media/media_player_extension_api.h +++ b/chrome/browser/chromeos/extensions/media_player_api.h @@ -2,15 +2,22 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_CHROMEOS_MEDIA_MEDIA_PLAYER_EXTENSION_API_H_ -#define CHROME_BROWSER_CHROMEOS_MEDIA_MEDIA_PLAYER_EXTENSION_API_H_ +#ifndef CHROME_BROWSER_CHROMEOS_EXTENSIONS_MEDIA_PLAYER_API_H_ +#define CHROME_BROWSER_CHROMEOS_EXTENSIONS_MEDIA_PLAYER_API_H_ #include <map> #include <string> #include <vector> +#include "base/memory/scoped_ptr.h" +#include "chrome/browser/extensions/api/profile_keyed_api_factory.h" #include "chrome/browser/extensions/extension_function.h" +class Profile; + +namespace extensions { +class MediaPlayerEventRouter; + // Implements the chrome.mediaPlayerPrivate.play method. class PlayMediaplayerFunction : public SyncExtensionFunction { public: @@ -59,4 +66,35 @@ class CloseWindowMediaplayerFunction : public SyncExtensionFunction { virtual bool RunImpl() OVERRIDE; }; -#endif // CHROME_BROWSER_CHROMEOS_MEDIA_MEDIA_PLAYER_EXTENSION_API_H_ +class MediaPlayerAPI : public ProfileKeyedAPI { + public: + explicit MediaPlayerAPI(Profile* profile); + virtual ~MediaPlayerAPI(); + + // Convenience method to get the MediaPlayerAPI for a profile. + static MediaPlayerAPI* Get(Profile* profile); + + MediaPlayerEventRouter* media_player_event_router(); + + // ProfileKeyedAPI implementation. + static ProfileKeyedAPIFactory<MediaPlayerAPI>* GetFactoryInstance(); + + private: + friend class ProfileKeyedAPIFactory<MediaPlayerAPI>; + + Profile* const profile_; + + // ProfileKeyedAPI implementation. + static const char* service_name() { + return "MediaPlayerAPI"; + } + static const bool kServiceIsNULLWhileTesting = true; + + scoped_ptr<MediaPlayerEventRouter> media_player_event_router_; + + DISALLOW_COPY_AND_ASSIGN(MediaPlayerAPI); +}; + +} // namespace extensions + +#endif // CHROME_BROWSER_CHROMEOS_EXTENSIONS_MEDIA_PLAYER_API_H_ diff --git a/chrome/browser/chromeos/extensions/media_player_event_router.cc b/chrome/browser/chromeos/extensions/media_player_event_router.cc index 667a02b..619535c 100644 --- a/chrome/browser/chromeos/extensions/media_player_event_router.cc +++ b/chrome/browser/chromeos/extensions/media_player_event_router.cc @@ -9,6 +9,8 @@ #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/profiles/profile.h" +namespace extensions { + static void BroadcastEvent(Profile* profile, const std::string& event_name) { if (profile && extensions::ExtensionSystem::Get(profile)->event_router()) { scoped_ptr<ListValue> args(new ListValue()); @@ -19,31 +21,27 @@ static void BroadcastEvent(Profile* profile, const std::string& event_name) { } } -ExtensionMediaPlayerEventRouter::ExtensionMediaPlayerEventRouter() - : profile_(NULL) { -} - -ExtensionMediaPlayerEventRouter* - ExtensionMediaPlayerEventRouter::GetInstance() { - return Singleton<ExtensionMediaPlayerEventRouter>::get(); +MediaPlayerEventRouter::MediaPlayerEventRouter(Profile* profile) + : profile_(profile) { } -void ExtensionMediaPlayerEventRouter::Init(Profile* profile) { - profile_ = profile; +MediaPlayerEventRouter::~MediaPlayerEventRouter() { } -void ExtensionMediaPlayerEventRouter::NotifyNextTrack() { +void MediaPlayerEventRouter::NotifyNextTrack() { BroadcastEvent(profile_, "mediaPlayerPrivate.onNextTrack"); } -void ExtensionMediaPlayerEventRouter::NotifyPlaylistChanged() { +void MediaPlayerEventRouter::NotifyPlaylistChanged() { BroadcastEvent(profile_, "mediaPlayerPrivate.onPlaylistChanged"); } -void ExtensionMediaPlayerEventRouter::NotifyPrevTrack() { +void MediaPlayerEventRouter::NotifyPrevTrack() { BroadcastEvent(profile_, "mediaPlayerPrivate.onPrevTrack"); } -void ExtensionMediaPlayerEventRouter::NotifyTogglePlayState() { +void MediaPlayerEventRouter::NotifyTogglePlayState() { BroadcastEvent(profile_, "mediaPlayerPrivate.onTogglePlayState"); } + +} // namespace extensions diff --git a/chrome/browser/chromeos/extensions/media_player_event_router.h b/chrome/browser/chromeos/extensions/media_player_event_router.h index 6fb76ef..2fcbe7d 100644 --- a/chrome/browser/chromeos/extensions/media_player_event_router.h +++ b/chrome/browser/chromeos/extensions/media_player_event_router.h @@ -8,14 +8,14 @@ #include "base/basictypes.h" class Profile; -template <typename T> struct DefaultSingletonTraits; + +namespace extensions { // Event router class for events related to Mediaplayer. -class ExtensionMediaPlayerEventRouter { +class MediaPlayerEventRouter { public: - static ExtensionMediaPlayerEventRouter* GetInstance(); - - void Init(Profile* profile); + explicit MediaPlayerEventRouter(Profile* profile); + virtual ~MediaPlayerEventRouter(); // Send notification that next-track shortcut key was pressed. void NotifyNextTrack(); @@ -32,9 +32,9 @@ class ExtensionMediaPlayerEventRouter { private: Profile* profile_; - ExtensionMediaPlayerEventRouter(); - friend struct DefaultSingletonTraits<ExtensionMediaPlayerEventRouter>; - DISALLOW_COPY_AND_ASSIGN(ExtensionMediaPlayerEventRouter); + DISALLOW_COPY_AND_ASSIGN(MediaPlayerEventRouter); }; +} // namespace extensions + #endif // CHROME_BROWSER_CHROMEOS_EXTENSIONS_MEDIA_PLAYER_EVENT_ROUTER_H_ diff --git a/chrome/browser/chromeos/media/media_player.cc b/chrome/browser/chromeos/media/media_player.cc index 5306e6d..e162c07 100644 --- a/chrome/browser/chromeos/media/media_player.cc +++ b/chrome/browser/chromeos/media/media_player.cc @@ -9,6 +9,7 @@ #include "ash/shell.h" #include "base/bind.h" #include "chrome/browser/chromeos/extensions/file_manager_util.h" +#include "chrome/browser/chromeos/extensions/media_player_api.h" #include "chrome/browser/chromeos/extensions/media_player_event_router.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" @@ -110,7 +111,11 @@ void MediaPlayer::SetPlaylistPosition(int position) { } void MediaPlayer::NotifyPlaylistChanged() { - ExtensionMediaPlayerEventRouter::GetInstance()->NotifyPlaylistChanged(); + Browser* browser = GetBrowser(); + if (browser) { + extensions::MediaPlayerAPI::Get(browser->profile())-> + media_player_event_router()->NotifyPlaylistChanged(); + } } void MediaPlayer::PopupMediaPlayer() { diff --git a/chrome/browser/extensions/extension_function_registry.cc b/chrome/browser/extensions/extension_function_registry.cc index 8979d30..0262de2 100644 --- a/chrome/browser/extensions/extension_function_registry.cc +++ b/chrome/browser/extensions/extension_function_registry.cc @@ -62,9 +62,9 @@ #include "chrome/browser/chromeos/extensions/file_browser_handler_api.h" #include "chrome/browser/chromeos/extensions/info_private_api.h" #include "chrome/browser/chromeos/extensions/input_method_api.h" +#include "chrome/browser/chromeos/extensions/media_player_api.h" #include "chrome/browser/chromeos/extensions/power/power_api.h" #include "chrome/browser/chromeos/extensions/wallpaper_private_api.h" -#include "chrome/browser/chromeos/media/media_player_extension_api.h" #include "chrome/browser/extensions/api/terminal/terminal_private_api.h" #endif @@ -337,10 +337,10 @@ void ExtensionFunctionRegistry::ResetFunctions() { RegisterFunction<FileHandlerSelectFileFunction>(); // Mediaplayer - RegisterFunction<PlayMediaplayerFunction>(); - RegisterFunction<GetPlaylistMediaplayerFunction>(); - RegisterFunction<SetWindowHeightMediaplayerFunction>(); - RegisterFunction<CloseWindowMediaplayerFunction>(); + RegisterFunction<extensions::PlayMediaplayerFunction>(); + RegisterFunction<extensions::GetPlaylistMediaplayerFunction>(); + RegisterFunction<extensions::SetWindowHeightMediaplayerFunction>(); + RegisterFunction<extensions::CloseWindowMediaplayerFunction>(); // WallpaperManagerPrivate functions. RegisterFunction<WallpaperStringsFunction>(); diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc index 6956301..4917d5f 100644 --- a/chrome/browser/extensions/extension_service.cc +++ b/chrome/browser/extensions/extension_service.cc @@ -113,7 +113,6 @@ #if defined(OS_CHROMEOS) #include "chrome/browser/chromeos/cros/cros_library.h" -#include "chrome/browser/chromeos/extensions/media_player_event_router.h" #include "chrome/browser/chromeos/input_method/input_method_manager.h" #include "content/public/browser/storage_partition.h" #include "webkit/fileapi/file_system_context.h" @@ -524,11 +523,6 @@ void ExtensionService::InitEventRouters() { extensions::ProfileKeyedAPIFactory<extensions::PushMessagingAPI>:: GetForProfile(profile_); - -#if defined(OS_CHROMEOS) - - ExtensionMediaPlayerEventRouter::GetInstance()->Init(profile_); -#endif // defined(OS_CHROMEOS) #endif // defined(ENABLE_EXTENSIONS) event_routers_initialized_ = true; } diff --git a/chrome/browser/profiles/profile_dependency_manager.cc b/chrome/browser/profiles/profile_dependency_manager.cc index e1033b0..b727800 100644 --- a/chrome/browser/profiles/profile_dependency_manager.cc +++ b/chrome/browser/profiles/profile_dependency_manager.cc @@ -86,6 +86,7 @@ #if defined(OS_CHROMEOS) #include "chrome/browser/chromeos/extensions/input_method_api_factory.h" +#include "chrome/browser/chromeos/extensions/media_player_api.h" #include "chrome/browser/extensions/api/input_ime/input_ime_api.h" #if defined(FILE_MANAGER_EXTENSION) #include "chrome/browser/chromeos/extensions/file_browser_private_api_factory.h" @@ -261,6 +262,9 @@ void ProfileDependencyManager::AssertFactoriesBuilt() { extensions::ManagedModeAPI::GetFactoryInstance(); extensions::ManagementAPI::GetFactoryInstance(); extensions::MediaGalleriesPrivateAPIFactory::GetInstance(); +#if defined(OS_CHROMEOS) + extensions::MediaPlayerAPI::GetFactoryInstance(); +#endif extensions::OmniboxAPI::GetFactoryInstance(); extensions::PreferenceAPI::GetFactoryInstance(); extensions::ProcessesAPI::GetFactoryInstance(); diff --git a/chrome/browser/ui/ash/chrome_shell_delegate.cc b/chrome/browser/ui/ash/chrome_shell_delegate.cc index 9b22a56..5354516 100644 --- a/chrome/browser/ui/ash/chrome_shell_delegate.cc +++ b/chrome/browser/ui/ash/chrome_shell_delegate.cc @@ -50,6 +50,7 @@ #include "base/chromeos/chromeos_version.h" #include "chrome/browser/chromeos/accessibility/accessibility_util.h" #include "chrome/browser/chromeos/background/ash_user_wallpaper_delegate.h" +#include "chrome/browser/chromeos/extensions/media_player_api.h" #include "chrome/browser/chromeos/extensions/media_player_event_router.h" #include "chrome/browser/chromeos/input_method/input_method_configuration.h" #include "chrome/browser/chromeos/input_method/input_method_manager.h" @@ -492,19 +493,22 @@ void ChromeShellDelegate::RecordUserMetricsAction( void ChromeShellDelegate::HandleMediaNextTrack() { #if defined(OS_CHROMEOS) - ExtensionMediaPlayerEventRouter::GetInstance()->NotifyNextTrack(); + extensions::MediaPlayerAPI::Get(GetTargetBrowser()->profile())-> + media_player_event_router()->NotifyNextTrack(); #endif } void ChromeShellDelegate::HandleMediaPlayPause() { #if defined(OS_CHROMEOS) - ExtensionMediaPlayerEventRouter::GetInstance()->NotifyTogglePlayState(); + extensions::MediaPlayerAPI::Get(GetTargetBrowser()->profile())-> + media_player_event_router()->NotifyTogglePlayState(); #endif } void ChromeShellDelegate::HandleMediaPrevTrack() { #if defined(OS_CHROMEOS) - ExtensionMediaPlayerEventRouter::GetInstance()->NotifyPrevTrack(); + extensions::MediaPlayerAPI::Get(GetTargetBrowser()->profile())-> + media_player_event_router()->NotifyPrevTrack(); #endif } diff --git a/chrome/chrome_browser_chromeos.gypi b/chrome/chrome_browser_chromeos.gypi index a3c2e420..fbd85a4 100644 --- a/chrome/chrome_browser_chromeos.gypi +++ b/chrome/chrome_browser_chromeos.gypi @@ -661,14 +661,14 @@ 'browser/chromeos/extensions/input_method_api.h', 'browser/chromeos/extensions/input_method_api_factory.cc', 'browser/chromeos/extensions/input_method_api_factory.h', + 'browser/chromeos/extensions/media_player_api.cc', + 'browser/chromeos/extensions/media_player_api.h', 'browser/chromeos/extensions/wallpaper_manager_util.cc', 'browser/chromeos/extensions/wallpaper_manager_util.h', 'browser/chromeos/extensions/wallpaper_private_api.cc', 'browser/chromeos/extensions/wallpaper_private_api.h', 'browser/chromeos/extensions/zip_file_creator.cc', 'browser/chromeos/extensions/zip_file_creator.h', - 'browser/chromeos/media/media_player_extension_api.cc', - 'browser/chromeos/media/media_player_extension_api.h', ], }], ['use_cras==1', { @@ -695,8 +695,6 @@ }], ['file_manager_extension==0', { 'sources/': [ - ['exclude', 'browser/chromeos/media/media_player_extension_api.cc'], - ['exclude', 'browser/chromeos/media/media_player_extension_api.h'], ['exclude', 'browser/chromeos/extensions/file_browser_handler_api.cc'], ['exclude', 'browser/chromeos/extensions/file_browser_handler_api.h'], ['exclude', 'browser/chromeos/extensions/file_browser_private_api.cc'], @@ -707,6 +705,8 @@ ['exclude', 'browser/chromeos/extensions/file_handler_util.cc'], ['exclude', 'browser/chromeos/extensions/file_manager_util.h'], ['exclude', 'browser/chromeos/extensions/file_manager_util.cc'], + ['exclude', 'browser/chromeos/extensions/media_player_api.cc'], + ['exclude', 'browser/chromeos/extensions/media_player_api.h'], ['exclude', 'browser/chromeos/extensions/zip_file_creator.h'], ['exclude', 'browser/chromeos/extensions/zip_file_creator.cc'], ], |