diff options
author | MHX348@motorola.com <MHX348@motorola.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-09 23:27:10 +0000 |
---|---|---|
committer | MHX348@motorola.com <MHX348@motorola.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-09 23:27:10 +0000 |
commit | b6d0240e2c5e140da6532a174375594d302e56b0 (patch) | |
tree | 167dc59f5462f832a4132a12b438d6051103cfef /chrome/browser/chromeos/extensions/media_player_api.cc | |
parent | aedf4e557f6f818c4c64983a41fa2dccacc8fc1d (diff) | |
download | chromium_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.cc | 115 |
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 |