Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / xwalk / tizen / renderer / renderer_mediaplayer_manager.cc
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Copyright (c) 2013 Intel Corporation. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5
6 #include "xwalk/tizen/renderer/renderer_mediaplayer_manager.h"
7
8 #include "xwalk/tizen/common/media_player_messages.h"
9 #include "xwalk/tizen/renderer/mediaplayer_impl.h"
10
11 namespace tizen {
12
13 RendererMediaPlayerManager::RendererMediaPlayerManager(
14     content::RenderView* render_view)
15     : content::RenderViewObserver(render_view),
16       next_media_player_id_(0) {
17 }
18
19 RendererMediaPlayerManager::~RendererMediaPlayerManager() {
20   std::map<MediaPlayerID, MediaPlayerImpl*>::iterator player_it;
21   for (player_it = media_players_.begin();
22       player_it != media_players_.end(); ++player_it) {
23     MediaPlayerImpl* player = player_it->second;
24     player->Detach();
25   }
26
27   Send(new MediaPlayerHostMsg_DestroyAllMediaPlayers(routing_id()));
28 }
29
30 bool RendererMediaPlayerManager::OnMessageReceived(const IPC::Message& msg) {
31   bool handled = true;
32   IPC_BEGIN_MESSAGE_MAP(RendererMediaPlayerManager, msg)
33     IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaPlayerPlay, OnPlayerPlay)
34     IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaPlayerPause, OnPlayerPause)
35   IPC_MESSAGE_UNHANDLED(handled = false)
36   IPC_END_MESSAGE_MAP()
37   return handled;
38 }
39
40 void RendererMediaPlayerManager::Initialize(
41     MediaPlayerID player_id,
42     int process_id,
43     const GURL& url) {
44   Send(new MediaPlayerHostMsg_MediaPlayerInitialize(
45       routing_id(), player_id, process_id, url));
46 }
47
48 void RendererMediaPlayerManager::Start(MediaPlayerID player_id) {
49   Send(new MediaPlayerHostMsg_MediaPlayerStarted(routing_id(), player_id));
50 }
51
52 void RendererMediaPlayerManager::Pause(MediaPlayerID player_id) {
53   Send(new MediaPlayerHostMsg_MediaPlayerPaused(routing_id(), player_id));
54 }
55
56 void RendererMediaPlayerManager::DestroyPlayer(MediaPlayerID player_id) {
57   Send(new MediaPlayerHostMsg_DestroyMediaPlayer(routing_id(), player_id));
58 }
59
60 MediaPlayerID RendererMediaPlayerManager::RegisterMediaPlayer(
61     MediaPlayerImpl* player) {
62   media_players_[next_media_player_id_] = player;
63
64   return next_media_player_id_++;
65 }
66
67 void RendererMediaPlayerManager::UnregisterMediaPlayer(
68     MediaPlayerID player_id) {
69   media_players_.erase(player_id);
70 }
71
72 MediaPlayerImpl* RendererMediaPlayerManager::GetMediaPlayer(
73     MediaPlayerID player_id) {
74   std::map<MediaPlayerID, MediaPlayerImpl*>::iterator iter =
75       media_players_.find(player_id);
76   if (iter != media_players_.end())
77     return iter->second;
78
79   return NULL;
80 }
81
82 void RendererMediaPlayerManager::OnPlayerPlay(MediaPlayerID player_id) {
83   if (MediaPlayerImpl* player = GetMediaPlayer(player_id))
84     player->play();
85 }
86
87 void RendererMediaPlayerManager::OnPlayerPause(MediaPlayerID player_id) {
88   if (MediaPlayerImpl* player = GetMediaPlayer(player_id))
89     player->pause();
90 }
91
92 }  // namespace tizen