- update packaging.
[platform/framework/web/crosswalk.git] / packaging / crosswalk-tizen-audio-session-manager.patch
1 Author: Sudarsana Nagineni <sudarsana.nagineni@intel.com>
2
3 This patch includes Chromium side changes needed for integrating
4 WebMediaPlayer with the Tizen Audio Session Manager.
5
6 Also, it has changes that are needed for generating audio-session-manager
7 stubs and load the library dynamically in the Browser process.
8
9 audio-session-manager is using an _attribute_((constructor)) to initialize
10 code and setup signal handlers at startup. So, linking with this library
11 is causing a sandbox violation by executing the code in Renderer Process,
12 since the Renderer Process and the Browser Process are linked with the
13 same libraries.
14
15 To prevent the problem, we load the audio-session-manager dynamically in
16 the Browser process.
17
18 diff --git src/build/linux/system.gyp src/build/linux/system.gyp
19 index 68e4d36..3ae6ab3 100644
20 --- src/build/linux/system.gyp
21 +++ src/build/linux/system.gyp
22 @@ -892,5 +892,19 @@
23          }],
24        ],
25      },
26 +    {
27 +      'target_name': 'audio_session_manager',
28 +      'type': 'none',
29 +      'toolsets': ['host', 'target'],
30 +      'conditions': [
31 +        ['tizen_mobile == 1', {
32 +          'direct_dependent_settings': {
33 +            'cflags': [
34 +              '<!@(<(pkg-config) --cflags audio-session-mgr)',
35 +            ],
36 +          },
37 +        }],
38 +      ],
39 +    },
40    ],
41  }
42 diff --git src/content/browser/renderer_host/render_view_host_impl.cc src/content/browser/renderer_host/render_view_host_impl.cc
43 index 68204fb..a3e654b 100644
44 --- src/content/browser/renderer_host/render_view_host_impl.cc
45 +++ src/content/browser/renderer_host/render_view_host_impl.cc
46 @@ -83,6 +83,8 @@
47  #include "content/browser/renderer_host/popup_menu_helper_mac.h"
48  #elif defined(OS_ANDROID)
49  #include "content/browser/media/android/browser_media_player_manager.h"
50 +#elif defined(OS_TIZEN_MOBILE)
51 +#include "xwalk/tizen/browser/browser_mediaplayer_manager.h"
52  #endif
53
54  using base::TimeDelta;
55 @@ -208,6 +210,8 @@ RenderViewHostImpl::RenderViewHostImpl(
56
57  #if defined(OS_ANDROID)
58    media_player_manager_.reset(BrowserMediaPlayerManager::Create(this));
59 +#elif defined(OS_TIZEN_MOBILE)
60 +  media_player_manager_.reset(tizen::BrowserMediaPlayerManager::Create(this));
61  #endif
62  }
63  
64 diff --git src/content/browser/renderer_host/render_view_host_impl.h src/content/browser/renderer_host/render_view_host_impl.h
65 index c4bfb78..cc060bb 100644
66 --- src/content/browser/renderer_host/render_view_host_impl.h
67 +++ src/content/browser/renderer_host/render_view_host_impl.h
68 @@ -43,6 +43,12 @@ struct ViewMsg_Navigate_Params;
69  struct ViewMsg_PostMessage_Params;
70  struct ViewMsg_StopFinding_Params;
71
72 +#if defined(OS_TIZEN_MOBILE)
73 +namespace tizen {
74 +class BrowserMediaPlayerManager;
75 +}
76 +#endif
77 +
78  namespace base {
79  class ListValue;
80  }
81 @@ -715,6 +721,8 @@ class CONTENT_EXPORT RenderViewHostImpl
82  #if defined(OS_ANDROID)
83    // Manages all the android mediaplayer objects and handling IPCs for video.
84    scoped_ptr<BrowserMediaPlayerManager> media_player_manager_;
85 +#elif defined(OS_TIZEN_MOBILE)
86 +  scoped_ptr<tizen::BrowserMediaPlayerManager> media_player_manager_;
87  #endif
88
89    DISALLOW_COPY_AND_ASSIGN(RenderViewHostImpl);
90 diff --git src/content/common/content_message_generator.h src/content/common/content_message_generator.h
91 index b0af11d..54106a2 100644
92 --- src/content/common/content_message_generator.h
93 +++ src/content/common/content_message_generator.h
94 @@ -56,3 +56,6 @@
95  #include "content/common/view_messages.h"
96  #include "content/common/websocket_messages.h"
97  #include "content/common/worker_messages.h"
98 +#if defined(OS_TIZEN_MOBILE)
99 +#include "xwalk/tizen/common/media_player_messages.h"
100 +#endif
101 diff --git src/content/content_browser.gypi src/content/content_browser.gypi
102 index 1e3485c..6336e49 100644
103 --- src/content/content_browser.gypi
104 +++ src/content/content_browser.gypi
105 @@ -1558,5 +1558,69 @@
106          '../third_party/speex/speex.gyp:libspeex',
107        ],
108      }],
109 +    ['tizen_mobile == 1', {
110 +      'sources': [
111 +        '<(DEPTH)/xwalk/tizen/browser/audio_session_manager.cc',
112 +        '<(DEPTH)/xwalk/tizen/browser/audio_session_manager.h',
113 +        '<(DEPTH)/xwalk/tizen/browser/audio_session_manager_init.cc',
114 +        '<(DEPTH)/xwalk/tizen/browser/audio_session_manager_init.h',
115 +        '<(DEPTH)/xwalk/tizen/browser/browser_mediaplayer_manager.cc',
116 +        '<(DEPTH)/xwalk/tizen/browser/browser_mediaplayer_manager.h',
117 +      ],
118 +      'variables': {
119 +        'generate_stubs_script': '../tools/generate_stubs/generate_stubs.py',
120 +        'extra_header': '../xwalk/tizen/browser/audio_session_manager_stub_headers.fragment',
121 +        'sig_files': ['../xwalk/tizen/browser/audio_session_manager.sigs'],
122 +        'outfile_type': 'posix_stubs',
123 +        'stubs_filename_root': 'audio_session_manager_stubs',
124 +        'project_path': 'xwalk/tizen/browser',
125 +        'intermediate_dir': '<(INTERMEDIATE_DIR)',
126 +        'output_root': '<(SHARED_INTERMEDIATE_DIR)/audio_session_manager',
127 +      },
128 +      'include_dirs': [
129 +        '<(output_root)',
130 +      ],
131 +      'actions': [
132 +        {
133 +          'action_name': 'generate_stubs',
134 +          'inputs': [
135 +          '<(generate_stubs_script)',
136 +          '<(extra_header)',
137 +          '<@(sig_files)',
138 +          ],
139 +          'outputs': [
140 +            '<(intermediate_dir)/<(stubs_filename_root).cc',
141 +            '<(output_root)/<(project_path)/<(stubs_filename_root).h',
142 +          ],
143 +          'action': ['python',
144 +            '<(generate_stubs_script)',
145 +            '-i', '<(intermediate_dir)',
146 +            '-o', '<(output_root)/<(project_path)',
147 +            '-t', '<(outfile_type)',
148 +            '-e', '<(extra_header)',
149 +            '-s', '<(stubs_filename_root)',
150 +            '-p', '<(project_path)',
151 +            '<@(_inputs)',
152 +          ],
153 +          'process_outputs_as_sources': 1,
154 +          'message': 'Generating audio session manager stubs for dynamic loading',
155 +        },
156 +      ],
157 +      'conditions': [
158 +        ['OS=="linux" or OS=="solaris"', {
159 +          'link_settings': {
160 +            'libraries': [
161 +            '-ldl',
162 +            ],
163 +          },
164 +        }],
165 +      ],
166 +      'dependencies': [
167 +        '../build/linux/system.gyp:audio_session_manager',
168 +      ],
169 +      'export_dependent_settings': [
170 +        '../build/linux/system.gyp:audio_session_manager',
171 +      ],
172 +    }],
173    ],
174  }
175 diff --git src/content/content_common.gypi src/content/content_common.gypi
176 index 8c45574..10b0e2b 100644
177 --- src/content/content_common.gypi
178 +++ src/content/content_common.gypi
179 @@ -590,5 +590,10 @@
180        },
181       ]
182      }],
183 +    ['tizen_mobile == 1', {
184 +      'sources': [
185 +        '<(DEPTH)/xwalk/tizen/common/media_player_messages.h',
186 +      ],
187 +    }],
188    ],
189  }
190 diff --git src/content/content_renderer.gypi src/content/content_renderer.gypi
191 index 46b7468..4cab17f 100644
192 --- /src/content/content_renderer.gypi
193 +++ src/content/content_renderer.gypi
194 @@ -722,6 +722,14 @@
195          }],
196        ],
197      }],
198 +    ['tizen_mobile == 1', {
199 +      'sources': [
200 +        '<(DEPTH)/xwalk/tizen/renderer/mediaplayer_impl.cc',
201 +        '<(DEPTH)/xwalk/tizen/renderer/mediaplayer_impl.h',
202 +        '<(DEPTH)/xwalk/tizen/renderer/renderer_mediaplayer_manager.cc',
203 +        '<(DEPTH)/xwalk/tizen/renderer/renderer_mediaplayer_manager.h',
204 +      ],
205 +    }],
206    ],
207    'target_conditions': [
208      ['OS=="android"', {
209 diff --git src/content/renderer/render_view_impl.cc src/content/renderer/render_view_impl.cc
210 index 6827468..549c8fb 100644
211 --- src/content/renderer/render_view_impl.cc
212 +++ src/content/renderer/render_view_impl.cc
213 @@ -255,6 +255,11 @@
214  #include "content/renderer/media/rtc_peer_connection_handler.h"
215  #endif
216
217 +#if defined(OS_TIZEN_MOBILE)
218 +#include "xwalk/tizen/renderer/mediaplayer_impl.h"
219 +#include "xwalk/tizen/renderer/renderer_mediaplayer_manager.h"
220 +#endif
221 +
222  using WebKit::WebAXObject;
223  using WebKit::WebApplicationCacheHost;
224  using WebKit::WebApplicationCacheHostClient;
225 @@ -865,6 +870,8 @@ RenderViewImpl::RenderViewImpl(RenderViewImplParams* params)
226        body_background_color_(SK_ColorWHITE),
227        expected_content_intent_id_(0),
228        media_player_manager_(NULL),
229 +#elif defined(OS_TIZEN_MOBILE)
230 +      media_player_manager_(NULL),
231  #endif
232  #if defined(OS_WIN)
233        focused_plugin_id_(-1),
234 @@ -986,6 +993,8 @@ void RenderViewImpl::Initialize(RenderViewImplParams* params) {
235  #if defined(OS_ANDROID)
236    media_player_manager_ = new RendererMediaPlayerManager(this);
237    new JavaBridgeDispatcher(this);
238 +#elif defined(OS_TIZEN_MOBILE)
239 +  media_player_manager_ = new tizen::RendererMediaPlayerManager(this);
240  #endif
241
242    // The next group of objects all implement RenderViewObserver, so are deleted
243 @@ -3163,6 +3172,13 @@ WebMediaPlayer* RenderViewImpl::createMediaPlayer(
244        sink,
245        RenderThreadImpl::current()->GetGpuFactories(),
246        new RenderMediaLog());
247 +
248 +#if defined(OS_TIZEN_MOBILE)
249 +  tizen::MediaPlayerImpl* media_player = new tizen::MediaPlayerImpl(
250 +      frame, client, AsWeakPtr(), media_player_manager_, params);
251 +  return media_player;
252 +#endif
253 +
254    return new WebMediaPlayerImpl(frame, client, AsWeakPtr(), params);
255  }
256
257 diff --git src/content/renderer/render_view_impl.h src/content/renderer/render_view_impl.h
258 index 2b18b3c..314a1c0 100644
259 --- src/content/renderer/render_view_impl.h
260 +++ src/content/renderer/render_view_impl.h
261 @@ -129,6 +129,12 @@ namespace webkit_glue {
262  class WebURLResponseExtraDataImpl;
263  }
264
265 +#if defined(OS_TIZEN_MOBILE)
266 +namespace tizen {
267 +class RendererMediaPlayerManager;
268 +}
269 +#endif
270 +
271  namespace content {
272  class BrowserPluginManager;
273  class DeviceOrientationDispatcher;
274 @@ -1431,6 +1437,10 @@ class CONTENT_EXPORT RenderViewImpl
275
276    // A date/time picker object for date and time related input elements.
277    scoped_ptr<RendererDateTimePicker> date_time_picker_client_;
278 +#elif defined(OS_TIZEN_MOBILE)
279 +  // The media player manager for managing all the media players on this view
280 +  // and for communicating with the audio session manager in browser process.
281 +  tizen::RendererMediaPlayerManager* media_player_manager_;
282  #endif
283
284    // Plugins -------------------------------------------------------------------