summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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.cc24
-rw-r--r--chrome/browser/chromeos/extensions/media_player_event_router.h16
-rw-r--r--chrome/browser/chromeos/media/media_player.cc7
-rw-r--r--chrome/browser/extensions/extension_function_registry.cc10
-rw-r--r--chrome/browser/extensions/extension_service.cc6
-rw-r--r--chrome/browser/profiles/profile_dependency_manager.cc4
-rw-r--r--chrome/browser/ui/ash/chrome_shell_delegate.cc10
-rw-r--r--chrome/chrome_browser_chromeos.gypi8
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'],
],