blob: 4fdee722703ed64dafa81a0c3bfe86b5e1292e9b [file] [log] [blame]
// Copyright (c) 2011 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/extensions/extension_mediaplayer_private_api.h"
#include "base/values.h"
#include "chrome/browser/chromeos/media/media_player.h"
static const char kPropertyPath[] = "path";
static const char kPropertyForce[] = "force";
static const char kPropertyItems[] = "items";
static const char kPropertyPosition[] = "position";
static const char kPropertyError[] = "error";
static const char kPropertyPendingPlaybackRequest[] =
"pendingPlaybackRequest";
bool PlayAtMediaplayerFunction::RunImpl() {
int position;
if (!args_->GetInteger(0, &position))
return false;
MediaPlayer::GetInstance()->SetPlaybackRequest();
MediaPlayer::GetInstance()->SetPlaylistPosition(position);
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++) {
DictionaryValue* url_value = new DictionaryValue();
url_value->SetString(kPropertyPath, src[i].url.spec());
url_value->SetBoolean(kPropertyError, src[i].haderror);
result->Append(url_value);
}
return result;
}
bool GetPlaylistMediaplayerFunction::RunImpl() {
bool reset_pending_playback_request;
if (!args_->GetBoolean(0, &reset_pending_playback_request))
return false;
DictionaryValue* result = new DictionaryValue();
MediaPlayer* player = MediaPlayer::GetInstance();
result->Set(kPropertyItems, GetPlaylistItems());
result->SetInteger(kPropertyPosition, player->GetPlaylistPosition());
if (reset_pending_playback_request) {
result->SetBoolean(kPropertyPendingPlaybackRequest,
player->GetPendingPlayRequestAndReset());
}
result_.reset(result);
return true;
}
bool SetPlaybackErrorMediaplayerFunction::RunImpl() {
std::string url;
// Get path string.
if (args_->GetString(0, &url))
MediaPlayer::GetInstance()->SetPlaybackError(GURL(url));
return true;
}
bool TogglePlaylistPanelMediaplayerFunction::RunImpl() {
MediaPlayer::GetInstance()->TogglePlaylistWindowVisible();
return true;
}
bool ToggleFullscreenMediaplayerFunction::RunImpl() {
MediaPlayer::GetInstance()->ToggleFullscreen();
return true;
}