1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Copyright (c) 2014 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.
6 #include "xwalk/tizen/browser/media/media_webcontents_observer.h"
8 #include "content/public/browser/web_contents.h"
9 #include "xwalk/tizen/browser/media/browser_mediaplayer_manager.h"
10 #include "xwalk/tizen/browser/media/murphy_resource_manager.h"
11 #include "xwalk/tizen/common/media/media_player_messages.h"
15 MediaWebContentsObserver::MediaWebContentsObserver(
16 content::RenderViewHost* render_view_host)
17 : WebContentsObserver(content::WebContents::FromRenderViewHost(
19 resource_manager_.reset(new MurphyResourceManager());
22 MediaWebContentsObserver::~MediaWebContentsObserver() {}
24 void MediaWebContentsObserver::RenderFrameDeleted(
25 content::RenderFrameHost* render_frame_host) {
26 uintptr_t key = reinterpret_cast<uintptr_t>(render_frame_host);
27 media_player_managers_.erase(key);
30 bool MediaWebContentsObserver::OnMessageReceived(
31 const IPC::Message& msg,
32 content::RenderFrameHost* render_frame_host) {
34 IPC_BEGIN_MESSAGE_MAP(MediaWebContentsObserver, msg)
35 IPC_MESSAGE_FORWARD(MediaPlayerHostMsg_MediaPlayerInitialize,
36 GetMediaPlayerManager(render_frame_host),
37 BrowserMediaPlayerManager::OnInitialize)
38 IPC_MESSAGE_FORWARD(MediaPlayerHostMsg_MediaPlayerStarted,
39 GetMediaPlayerManager(render_frame_host),
40 BrowserMediaPlayerManager::OnStart)
41 IPC_MESSAGE_FORWARD(MediaPlayerHostMsg_MediaPlayerPaused,
42 GetMediaPlayerManager(render_frame_host),
43 BrowserMediaPlayerManager::OnPause)
44 IPC_MESSAGE_FORWARD(MediaPlayerHostMsg_DestroyMediaPlayer,
45 GetMediaPlayerManager(render_frame_host),
46 BrowserMediaPlayerManager::OnDestroyPlayer)
47 IPC_MESSAGE_UNHANDLED(handled = false)
53 BrowserMediaPlayerManager* MediaWebContentsObserver::GetMediaPlayerManager(
54 content::RenderFrameHost* render_frame_host) {
55 uintptr_t key = reinterpret_cast<uintptr_t>(render_frame_host);
56 if (!media_player_managers_.contains(key)) {
57 media_player_managers_.set(
59 make_scoped_ptr(BrowserMediaPlayerManager::Create(render_frame_host,
60 resource_manager_.get())));
63 return media_player_managers_.get(key);