diff --git a/build/common.gypi b/build/common.gypi index 609041c5d2ac8..5ce3249a554dc 100644 --- a/build/common.gypi +++ b/build/common.gypi @@ -2337,6 +2337,10 @@ # Whether to allow building of the GPU-related isolates. 'archive_gpu_tests%': 0, + + # Flags to enable Murphy resource policy daemon integration on Tizen. + 'tizen%': 0, + 'enable_murphy%': 0, }, 'target_defaults': { 'variables': { diff --git a/build/linux/system.gyp b/build/linux/system.gyp index e33f22d4ee0fb..9c9def9e9da8d 100644 --- a/build/linux/system.gyp +++ b/build/linux/system.gyp @@ -1054,5 +1054,27 @@ }], ], }, + { + 'target_name': 'resource_manager', + 'type': 'none', + 'toolsets': ['host', 'target'], + 'conditions': [ + ['tizen==1 and enable_murphy==1', { + 'direct_dependent_settings': { + 'cflags': [ + ' media_web_contents_observer_; #endif +#if defined(OS_TIZEN) && defined(ENABLE_MURPHY) + // Manages all the media player managers and forwards IPCs to them. + scoped_ptr media_webcontents_observer_; +#endif + // Used to swap out or shutdown this RVH when the unload event is taking too // long to execute, depending on the number of active views in the // SiteInstance. diff --git a/content/common/content_message_generator.h b/content/common/content_message_generator.h index e0ce7f669a950..00cd3975adae5 100644 --- a/content/common/content_message_generator.h +++ b/content/common/content_message_generator.h @@ -71,3 +71,7 @@ #include "content/common/gin_java_bridge_messages.h" #include "content/common/media/media_player_messages_android.h" #endif // defined(OS_ANDROID) + +#if defined(OS_TIZEN) && defined(ENABLE_MURPHY) +#include "xwalk/tizen/common/media/media_player_messages.h" +#endif diff --git a/content/content_browser.gypi b/content/content_browser.gypi index 3fe89ad4ad83a..b30478b098244 100644 --- a/content/content_browser.gypi +++ b/content/content_browser.gypi @@ -1806,6 +1806,26 @@ 'browser/power_save_blocker_x11.cc', ], }], + ['tizen==1 and enable_murphy==1', { + 'sources': [ + '<(DEPTH)/xwalk/tizen/browser/media/browser_mediaplayer_manager.cc', + '<(DEPTH)/xwalk/tizen/browser/media/browser_mediaplayer_manager.h', + '<(DEPTH)/xwalk/tizen/browser/media/media_webcontents_observer.cc', + '<(DEPTH)/xwalk/tizen/browser/media/media_webcontents_observer.h', + '<(DEPTH)/xwalk/tizen/browser/media/murphy_mainloop.cc', + '<(DEPTH)/xwalk/tizen/browser/media/murphy_mainloop.h', + '<(DEPTH)/xwalk/tizen/browser/media/murphy_resource.cc', + '<(DEPTH)/xwalk/tizen/browser/media/murphy_resource.h', + '<(DEPTH)/xwalk/tizen/browser/media/murphy_resource_manager.cc', + '<(DEPTH)/xwalk/tizen/browser/media/murphy_resource_manager.h', + ], + 'dependencies': [ + '../build/linux/system.gyp:resource_manager', + ], + 'export_dependent_settings': [ + '../build/linux/system.gyp:resource_manager', + ], + }], ['os_bsd==1', { 'sources/': [ ['exclude', '^browser/gamepad/gamepad_platform_data_fetcher_linux\\.cc$'], diff --git a/content/content_common.gypi b/content/content_common.gypi index 048ab0d750151..67d8912f464f4 100644 --- a/content/content_common.gypi +++ b/content/content_common.gypi @@ -843,6 +843,11 @@ '<(DEPTH)/third_party/khronos', ], }], + ['tizen==1 and enable_murphy==1', { + 'sources': [ + '<(DEPTH)/xwalk/tizen/common/media/media_player_messages.h', + ], + }], ['OS=="win" and directxsdk_exists=="True"', { 'actions': [ { diff --git a/content/content_renderer.gypi b/content/content_renderer.gypi index 1d63e16cb7d93..1d549db84a2ff 100644 --- a/content/content_renderer.gypi +++ b/content/content_renderer.gypi @@ -891,6 +891,14 @@ 'renderer/media/crypto/renderer_cdm_manager.h', ], }], + ['tizen==1 and enable_murphy==1', { + 'sources': [ + '<(DEPTH)/xwalk/tizen/renderer/media/mediaplayer_impl.cc', + '<(DEPTH)/xwalk/tizen/renderer/media/mediaplayer_impl.h', + '<(DEPTH)/xwalk/tizen/renderer/media/renderer_mediaplayer_manager.cc', + '<(DEPTH)/xwalk/tizen/renderer/media/renderer_mediaplayer_manager.h', + ], + }], ], 'target_conditions': [ ['OS=="android"', { diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc index 30d405fe6e5f4..7458aa41bdf15 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc @@ -144,6 +144,11 @@ #include "content/renderer/media/crypto/renderer_cdm_manager.h" #endif +#if defined(OS_TIZEN) && defined(ENABLE_MURPHY) +#include "xwalk/tizen/renderer/media/renderer_mediaplayer_manager.h" +#include "xwalk/tizen/renderer/media/mediaplayer_impl.h" +#endif + using blink::WebContextMenuData; using blink::WebData; using blink::WebDataSource; @@ -443,6 +448,9 @@ RenderFrameImpl::RenderFrameImpl(RenderViewImpl* render_view, int routing_id) #endif #if defined(VIDEO_HOLE) contains_media_player_(false), +#endif +#if defined(OS_TIZEN) && defined(ENABLE_MURPHY) + media_player_manager_(NULL), #endif geolocation_dispatcher_(NULL), push_messaging_dispatcher_(NULL), @@ -1513,11 +1521,29 @@ blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( static_cast(this)), RenderThreadImpl::current()->GetAudioRendererMixerManager()->CreateInput( render_view_->routing_id_, routing_id_)); + +#if defined(OS_TIZEN) && defined(ENABLE_MURPHY) + tizen::MediaPlayerImpl* media_player = new tizen::MediaPlayerImpl( + frame, client, weak_factory_.GetWeakPtr(), + GetTizenMediaPlayerManager(), params); + return media_player; +#endif + return new WebMediaPlayerImpl(frame, client, weak_factory_.GetWeakPtr(), params); #endif // defined(OS_ANDROID) } +#if defined(OS_TIZEN) && defined(ENABLE_MURPHY) +tizen::RendererMediaPlayerManager* +RenderFrameImpl::GetTizenMediaPlayerManager() { + if (!media_player_manager_) + media_player_manager_ = new tizen::RendererMediaPlayerManager(this); + + return media_player_manager_; +} +#endif + blink::WebContentDecryptionModule* RenderFrameImpl::createContentDecryptionModule( blink::WebLocalFrame* frame, diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h index 0252170503005..7fdbe2404589c 100644 --- a/content/renderer/render_frame_impl.h +++ b/content/renderer/render_frame_impl.h @@ -56,6 +56,12 @@ class Range; class Rect; } +#if defined(OS_TIZEN) && defined(ENABLE_MURPHY) +namespace tizen { +class RendererMediaPlayerManager; +} +#endif + namespace content { class ChildFrameCompositingHelper; @@ -591,6 +597,8 @@ class CONTENT_EXPORT RenderFrameImpl blink::WebMediaPlayerClient* client); RendererMediaPlayerManager* GetMediaPlayerManager(); +#elif defined(OS_TIZEN) && defined(ENABLE_MURPHY) + tizen::RendererMediaPlayerManager* GetTizenMediaPlayerManager(); #endif #if defined(ENABLE_BROWSER_CDMS) @@ -675,6 +683,8 @@ class CONTENT_EXPORT RenderFrameImpl // real media player in the browser process. It's okay to use a raw pointer // since it's a RenderFrameObserver. RendererMediaPlayerManager* media_player_manager_; +#elif defined(OS_TIZEN) && defined(ENABLE_MURPHY) + tizen::RendererMediaPlayerManager* media_player_manager_; #endif #if defined(ENABLE_BROWSER_CDMS)