Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / packaging / crosswalk-tizen-audio-session-manager.patch
deleted file mode 120000 (symlink)
index 81ad2b6102bbc8041f15f5a1c2d40a9fb80fd0fe..0000000000000000000000000000000000000000
+++ /dev/null
@@ -1 +0,0 @@
-../src/xwalk/packaging/crosswalk-tizen-audio-session-manager.patch
\ No newline at end of file
new file mode 100644 (file)
index 0000000000000000000000000000000000000000..566969443e0f3e2b00d5c7aa4f8ea899da14d9ad
--- /dev/null
@@ -0,0 +1,285 @@
+Author: Sudarsana Nagineni <sudarsana.nagineni@intel.com>
+
+This patch includes Chromium side changes needed for integrating
+WebMediaPlayer with the Tizen Audio Session Manager.
+
+Also, it has changes that are needed for generating audio-session-manager
+stubs and load the library dynamically in the Browser process.
+
+audio-session-manager is using an _attribute_((constructor)) to initialize
+code and setup signal handlers at startup. So, linking with this library
+is causing a sandbox violation by executing the code in Renderer Process,
+since the Renderer Process and the Browser Process are linked with the
+same libraries.
+
+To prevent the problem, we load the audio-session-manager dynamically in
+the Browser process.
+
+diff --git src/build/linux/system.gyp src/build/linux/system.gyp
+index 4a7e857..f89d256 100644
+--- src/build/linux/system.gyp
++++ src/build/linux/system.gyp
+@@ -874,5 +874,19 @@
+         }],
+       ],
+     },
++    {
++      'target_name': 'audio_session_manager',
++      'type': 'none',
++      'toolsets': ['host', 'target'],
++      'conditions': [
++        ['tizen_mobile == 1', {
++          'direct_dependent_settings': {
++            'cflags': [
++              '<!@(<(pkg-config) --cflags audio-session-mgr)',
++            ],
++          },
++        }],
++      ],
++    },
+   ],
+ }
+diff --git src/content/browser/renderer_host/render_view_host_impl.cc src/content/browser/renderer_host/render_view_host_impl.cc
+index 0912144..adf0a1b 100644
+--- src/content/browser/renderer_host/render_view_host_impl.cc
++++ src/content/browser/renderer_host/render_view_host_impl.cc
+@@ -89,4 +89,6 @@
+ #include "content/browser/media/android/browser_media_player_manager.h"
++#elif defined(OS_TIZEN_MOBILE)
++#include "xwalk/tizen/browser/browser_mediaplayer_manager.h"
+ #elif defined(OS_WIN)
+ #include "base/win/win_util.h"
+ #endif
+
+ using base::TimeDelta;
+@@ -223,6 +225,8 @@ RenderViewHostImpl::RenderViewHostImpl(
+
+ #if defined(OS_ANDROID)
+   media_player_manager_.reset(BrowserMediaPlayerManager::Create(this));
++#elif defined(OS_TIZEN_MOBILE)
++  media_player_manager_.reset(tizen::BrowserMediaPlayerManager::Create(this));
+ #endif
+ }
+
+diff --git src/content/browser/renderer_host/render_view_host_impl.h src/content/browser/renderer_host/render_view_host_impl.h
+index d63bae3..d0602c7 100644
+--- src/content/browser/renderer_host/render_view_host_impl.h
++++ src/content/browser/renderer_host/render_view_host_impl.h
+@@ -42,6 +42,12 @@ struct ViewHostMsg_ShowPopup_Params;
+ struct ViewMsg_Navigate_Params;
+ struct ViewMsg_PostMessage_Params;
+
++#if defined(OS_TIZEN_MOBILE)
++namespace tizen {
++class BrowserMediaPlayerManager;
++}
++#endif
++
+ namespace base {
+ class ListValue;
+ }
+@@ -704,6 +710,8 @@ class CONTENT_EXPORT RenderViewHostImpl
+ #if defined(OS_ANDROID)
+   // Manages all the android mediaplayer objects and handling IPCs for video.
+   scoped_ptr<BrowserMediaPlayerManager> media_player_manager_;
++#elif defined(OS_TIZEN_MOBILE)
++  scoped_ptr<tizen::BrowserMediaPlayerManager> media_player_manager_;
+ #endif
+
+   DISALLOW_COPY_AND_ASSIGN(RenderViewHostImpl);
+diff --git src/content/common/content_message_generator.h src/content/common/content_message_generator.h
+index 78e7c53..a3cda01 100644
+--- src/content/common/content_message_generator.h
++++ src/content/common/content_message_generator.h
+@@ -57,3 +57,6 @@
+ #include "content/common/view_messages.h"
+ #include "content/common/websocket_messages.h"
+ #include "content/common/worker_messages.h"
++#if defined(OS_TIZEN_MOBILE)
++#include "xwalk/tizen/common/media_player_messages.h"
++#endif
+diff --git src/content/content_browser.gypi src/content/content_browser.gypi
+index 6570d15..d47cee2 100644
+--- src/content/content_browser.gypi
++++ src/content/content_browser.gypi
+@@ -1641,5 +1641,69 @@
+         'browser/geolocation/wifi_data_provider_linux.cc',
+       ],
+     }],
++    ['tizen_mobile == 1', {
++      'sources': [
++        '<(DEPTH)/xwalk/tizen/browser/audio_session_manager.cc',
++        '<(DEPTH)/xwalk/tizen/browser/audio_session_manager.h',
++        '<(DEPTH)/xwalk/tizen/browser/audio_session_manager_init.cc',
++        '<(DEPTH)/xwalk/tizen/browser/audio_session_manager_init.h',
++        '<(DEPTH)/xwalk/tizen/browser/browser_mediaplayer_manager.cc',
++        '<(DEPTH)/xwalk/tizen/browser/browser_mediaplayer_manager.h',
++      ],
++      'variables': {
++        'generate_stubs_script': '../tools/generate_stubs/generate_stubs.py',
++        'extra_header': '../xwalk/tizen/browser/audio_session_manager_stub_headers.fragment',
++        'sig_files': ['../xwalk/tizen/browser/audio_session_manager.sigs'],
++        'outfile_type': 'posix_stubs',
++        'stubs_filename_root': 'audio_session_manager_stubs',
++        'project_path': 'xwalk/tizen/browser',
++        'intermediate_dir': '<(INTERMEDIATE_DIR)',
++        'output_root': '<(SHARED_INTERMEDIATE_DIR)/audio_session_manager',
++      },
++      'include_dirs': [
++        '<(output_root)',
++      ],
++      'actions': [
++        {
++          'action_name': 'generate_stubs',
++          'inputs': [
++          '<(generate_stubs_script)',
++          '<(extra_header)',
++          '<@(sig_files)',
++          ],
++          'outputs': [
++            '<(intermediate_dir)/<(stubs_filename_root).cc',
++            '<(output_root)/<(project_path)/<(stubs_filename_root).h',
++          ],
++          'action': ['python',
++            '<(generate_stubs_script)',
++            '-i', '<(intermediate_dir)',
++            '-o', '<(output_root)/<(project_path)',
++            '-t', '<(outfile_type)',
++            '-e', '<(extra_header)',
++            '-s', '<(stubs_filename_root)',
++            '-p', '<(project_path)',
++            '<@(_inputs)',
++          ],
++          'process_outputs_as_sources': 1,
++          'message': 'Generating audio session manager stubs for dynamic loading',
++        },
++      ],
++      'conditions': [
++        ['OS=="linux" or OS=="solaris"', {
++          'link_settings': {
++            'libraries': [
++            '-ldl',
++            ],
++          },
++        }],
++      ],
++      'dependencies': [
++        '../build/linux/system.gyp:audio_session_manager',
++      ],
++      'export_dependent_settings': [
++        '../build/linux/system.gyp:audio_session_manager',
++      ],
++    }],
+   ],
+ }
+diff --git src/content/content_common.gypi src/content/content_common.gypi
+index 1bfcccd..46db168 100644
+--- src/content/content_common.gypi
++++ src/content/content_common.gypi
+@@ -656,5 +656,10 @@
+     }, {
+       'defines': ['USE_SECCOMP_BPF'],
+     }],
++    ['tizen_mobile == 1', {
++      'sources': [
++        '<(DEPTH)/xwalk/tizen/common/media_player_messages.h',
++      ],
++    }],
+     ['OS=="win" and directxsdk_exists=="True"', {
+       'actions': [
+       {
+diff --git src/content/content_renderer.gypi src/content/content_renderer.gypi
+index 1e72a81..3bceb70 100644
+--- src/content/content_renderer.gypi
++++ src/content/content_renderer.gypi
+@@ -752,6 +752,14 @@
+         }],
+       ],
+     }],
++    ['tizen_mobile == 1', {
++      'sources': [
++        '<(DEPTH)/xwalk/tizen/renderer/mediaplayer_impl.cc',
++        '<(DEPTH)/xwalk/tizen/renderer/mediaplayer_impl.h',
++        '<(DEPTH)/xwalk/tizen/renderer/renderer_mediaplayer_manager.cc',
++        '<(DEPTH)/xwalk/tizen/renderer/renderer_mediaplayer_manager.h',
++      ],
++    }],
+   ],
+   'target_conditions': [
+     ['OS=="android"', {
+diff --git src/content/renderer/render_view_impl.cc src/content/renderer/render_view_impl.cc
+index c5a7059..cd42b4c 100644
+--- src/content/renderer/render_view_impl.cc
++++ src/content/renderer/render_view_impl.cc
+@@ -245,6 +245,11 @@
+ #include "content/renderer/media/rtc_peer_connection_handler.h"
+ #endif
+
++#if defined(OS_TIZEN_MOBILE)
++#include "xwalk/tizen/renderer/mediaplayer_impl.h"
++#include "xwalk/tizen/renderer/renderer_mediaplayer_manager.h"
++#endif
++
+ using blink::WebAXObject;
+ using blink::WebApplicationCacheHost;
+ using blink::WebApplicationCacheHostClient;
+@@ -844,6 +849,8 @@ RenderViewImpl::RenderViewImpl(RenderViewImplParams* params)
+       body_background_color_(SK_ColorWHITE),
+       expected_content_intent_id_(0),
+       media_player_manager_(NULL),
++#elif defined(OS_TIZEN_MOBILE)
++      media_player_manager_(NULL),
+ #endif
+ #if defined(OS_WIN)
+       focused_plugin_id_(-1),
+@@ -967,6 +974,8 @@ void RenderViewImpl::Initialize(RenderViewImplParams* params) {
+ #if defined(OS_ANDROID)
+   media_player_manager_ = new RendererMediaPlayerManager(this);
+   new JavaBridgeDispatcher(this);
++#elif defined(OS_TIZEN_MOBILE)
++  media_player_manager_ = new tizen::RendererMediaPlayerManager(this);
+ #endif
+
+   // The next group of objects all implement RenderViewObserver, so are deleted
+@@ -3044,6 +3053,13 @@ blink::WebMediaPlayer* RenderViewImpl::CreateMediaPlayer(
+                  base::Unretained(GetContentClient()->renderer()),
+                  static_cast<RenderFrame*>(render_frame)),
+       sink);
++
++#if defined(OS_TIZEN_MOBILE)
++  tizen::MediaPlayerImpl* media_player = new tizen::MediaPlayerImpl(
++      frame, client, AsWeakPtr(), media_player_manager_, params);
++  return media_player;
++#endif
++
+   return new WebMediaPlayerImpl(frame, client, AsWeakPtr(), params);
+ #endif  // defined(OS_ANDROID)
+ }
+diff --git src/content/renderer/render_view_impl.h src/content/renderer/render_view_impl.h
+index ccfd1b5..8949cd0 100644
+--- src/content/renderer/render_view_impl.h
++++ src/content/renderer/render_view_impl.h
+@@ -128,6 +128,12 @@ namespace webkit_glue {
+ class WebURLResponseExtraDataImpl;
+ }
+
++#if defined(OS_TIZEN_MOBILE)
++namespace tizen {
++class RendererMediaPlayerManager;
++}
++#endif
++
+ namespace content {
+ class BrowserPluginManager;
+ class DeviceOrientationDispatcher;
+@@ -1403,6 +1409,10 @@ class CONTENT_EXPORT RenderViewImpl
+
+   // A date/time picker object for date and time related input elements.
+   scoped_ptr<RendererDateTimePicker> date_time_picker_client_;
++#elif defined(OS_TIZEN_MOBILE)
++  // The media player manager for managing all the media players on this view
++  // and for communicating with the audio session manager in browser process.
++  tizen::RendererMediaPlayerManager* media_player_manager_;
+ #endif
+
+   // Plugins -------------------------------------------------------------------