1 // Copyright 2014 Samsung Electronics. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "browser/render_message_filter_efl.h"
7 #include "common/web_contents_utils.h"
8 #include "content/common/render_messages_efl.h"
9 #include "common/render_messages_ewk.h"
10 #include "content/public/browser/browser_thread.h"
11 #include "content/public/browser/render_view_host.h"
12 #include "content/public/browser/web_contents.h"
13 #include "eweb_view.h"
14 #include "net/url_request/url_request_context_getter.h"
15 #include "ipc_message_start_ewk.h"
17 #if defined(TIZEN_MULTIMEDIA_SUPPORT)
18 #include "content/browser/media/efl/webaudio_decoder_browser_gstreamer.h"
21 using web_contents_utils::WebContentsFromViewID;
22 using web_contents_utils::WebViewFromWebContents;
23 using content::BrowserThread;
25 const uint32 kFilteredMessageClasses[] = {
30 RenderMessageFilterEfl::RenderMessageFilterEfl(int render_process_id)
31 : BrowserMessageFilter(kFilteredMessageClasses,
32 arraysize(kFilteredMessageClasses))
33 , render_process_id_(render_process_id) {
36 RenderMessageFilterEfl::~RenderMessageFilterEfl() { }
38 void RenderMessageFilterEfl::OverrideThreadForMessage(
39 const IPC::Message& message, content::BrowserThread::ID* thread)
41 switch (message.type()) {
42 case EwkHostMsg_DecideNavigationPolicy::ID:
43 *thread = content::BrowserThread::UI;
48 bool RenderMessageFilterEfl::OnMessageReceived(const IPC::Message& message) {
50 IPC_BEGIN_MESSAGE_MAP(RenderMessageFilterEfl, message)
51 IPC_MESSAGE_HANDLER(EwkHostMsg_DecideNavigationPolicy,
52 OnDecideNavigationPolicy)
53 #if defined(TIZEN_MULTIMEDIA_SUPPORT)
54 IPC_MESSAGE_HANDLER(EflViewHostMsg_GstWebAudioDecode,
57 IPC_MESSAGE_UNHANDLED(handled = false)
62 void RenderMessageFilterEfl::OnDecideNavigationPolicy(
63 NavigationPolicyParams params, bool* handled) {
64 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
66 if (content::WebContents* web_contents =
67 WebContentsFromViewID(render_process_id_, params.render_view_id)) {
68 WebViewFromWebContents(web_contents)->InvokePolicyNavigationCallback(
69 web_contents->GetRenderViewHost(), params, handled);
73 #if defined(TIZEN_MULTIMEDIA_SUPPORT)
74 void RenderMessageFilterEfl::OnGstWebAudioDecode(
75 base::SharedMemoryHandle encoded_data_handle,
76 base::FileDescriptor pcm_output,
78 content::WebAudioDecoderGStreamer::GetInstance()->EncodedDataReceived(
79 encoded_data_handle, pcm_output, data_size);