summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/extensions/media_player_api.cc
diff options
context:
space:
mode:
authorMHX348@motorola.com <MHX348@motorola.com@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-09 23:27:10 +0000
committerMHX348@motorola.com <MHX348@motorola.com@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-09 23:27:10 +0000
commitb6d0240e2c5e140da6532a174375594d302e56b0 (patch)
tree167dc59f5462f832a4132a12b438d6051103cfef /chrome/browser/chromeos/extensions/media_player_api.cc
parentaedf4e557f6f818c4c64983a41fa2dccacc8fc1d (diff)
downloadchromium_src-b6d0240e2c5e140da6532a174375594d302e56b0.zip
chromium_src-b6d0240e2c5e140da6532a174375594d302e56b0.tar.gz
chromium_src-b6d0240e2c5e140da6532a174375594d302e56b0.tar.bz2
-Rename ExtensionMediaPlayerEventRouter to
MediaPlayerEventRouter and move to extensions namespace -Move chrome/browser/chromeos/media/media_player_extension_api to chrome/browser/chromeos/extensions/media_player_api and to extension namespace. Patch from Joe Thomas <mhx348@motorola.com>. BUG=159265 TBR=ben@chromium.org for gyp Review URL: https://chromiumcodereview.appspot.com/11638024 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@175920 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos/extensions/media_player_api.cc')
-rw-r--r--chrome/browser/chromeos/extensions/media_player_api.cc115
1 files changed, 115 insertions, 0 deletions
diff --git a/chrome/browser/chromeos/extensions/media_player_api.cc b/chrome/browser/chromeos/extensions/media_player_api.cc
new file mode 100644
index 0000000..5e7d7a5
--- /dev/null
+++ b/chrome/browser/chromeos/extensions/media_player_api.cc
@@ -0,0 +1,115 @@
+// 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.
+
+#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"
+
+namespace {
+
+static const char kPropertyItems[] = "items";
+static const char kPropertyPosition[] = "position";
+
+} // namespace
+
+namespace extensions {
+
+bool PlayMediaplayerFunction::RunImpl() {
+ if (args_->GetSize() < 2) {
+ return false;
+ }
+
+ ListValue* url_list = NULL;
+ if (!args_->GetList(0, &url_list))
+ return false;
+
+ int position;
+ if (!args_->GetInteger(1, &position))
+ return false;
+
+ MediaPlayer* player = MediaPlayer::GetInstance();
+
+ player->PopupMediaPlayer();
+ player->ClearPlaylist();
+
+ size_t len = url_list->GetSize();
+ for (size_t i = 0; i < len; ++i) {
+ std::string path;
+ url_list->GetString(i, &path);
+ player->EnqueueMediaFileUrl(GURL(path));
+ }
+
+ player->SetPlaylistPosition(position);
+ player->NotifyPlaylistChanged();
+
+ return true;
+}
+
+static ListValue* GetPlaylistItems() {
+ ListValue* result = new ListValue();
+
+ MediaPlayer::UrlVector const& src = MediaPlayer::GetInstance()->GetPlaylist();
+
+ for (size_t i = 0; i < src.size(); i++) {
+ result->Append(new base::StringValue(src[i].spec()));
+ }
+ return result;
+}
+
+bool GetPlaylistMediaplayerFunction::RunImpl() {
+ DictionaryValue* result = new DictionaryValue();
+ MediaPlayer* player = MediaPlayer::GetInstance();
+
+ result->Set(kPropertyItems, GetPlaylistItems());
+ result->SetInteger(kPropertyPosition, player->GetPlaylistPosition());
+
+ SetResult(result);
+ return true;
+}
+
+// TODO(kaznacheev): rename the API method to adjustWindowHeight here and in
+// media_player_private.json.
+bool SetWindowHeightMediaplayerFunction::RunImpl() {
+ int height_diff;
+ if (!args_->GetInteger(0, &height_diff))
+ return false;
+ MediaPlayer::GetInstance()->AdjustWindowHeight(height_diff);
+ return true;
+}
+
+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