OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/renderer/extensions/extension_frame_helper.h" | 5 #include "chrome/renderer/extensions/extension_frame_helper.h" |
6 | 6 |
7 #include "content/public/renderer/render_frame.h" | 7 #include "content/public/renderer/render_frame.h" |
| 8 #include "extensions/common/api/messaging/message.h" |
8 #include "extensions/common/extension_messages.h" | 9 #include "extensions/common/extension_messages.h" |
9 #include "extensions/renderer/console.h" | 10 #include "extensions/renderer/console.h" |
10 #include "extensions/renderer/dispatcher.h" | 11 #include "extensions/renderer/dispatcher.h" |
| 12 #include "extensions/renderer/messaging_bindings.h" |
11 #include "third_party/WebKit/public/web/WebConsoleMessage.h" | 13 #include "third_party/WebKit/public/web/WebConsoleMessage.h" |
12 #include "third_party/WebKit/public/web/WebLocalFrame.h" | 14 #include "third_party/WebKit/public/web/WebLocalFrame.h" |
13 | 15 |
14 namespace extensions { | 16 namespace extensions { |
15 | 17 |
16 ExtensionFrameHelper::ExtensionFrameHelper(content::RenderFrame* render_frame, | 18 ExtensionFrameHelper::ExtensionFrameHelper(content::RenderFrame* render_frame, |
17 Dispatcher* extension_dispatcher) | 19 Dispatcher* extension_dispatcher) |
18 : content::RenderFrameObserver(render_frame), | 20 : content::RenderFrameObserver(render_frame), |
19 content::RenderFrameObserverTracker<ExtensionFrameHelper>(render_frame), | 21 content::RenderFrameObserverTracker<ExtensionFrameHelper>(render_frame), |
20 extension_dispatcher_(extension_dispatcher) {} | 22 extension_dispatcher_(extension_dispatcher) {} |
21 | 23 |
22 ExtensionFrameHelper::~ExtensionFrameHelper() { | 24 ExtensionFrameHelper::~ExtensionFrameHelper() { |
23 } | 25 } |
24 | 26 |
25 void ExtensionFrameHelper::WillReleaseScriptContext( | 27 void ExtensionFrameHelper::WillReleaseScriptContext( |
26 v8::Handle<v8::Context> context, | 28 v8::Handle<v8::Context> context, |
27 int world_id) { | 29 int world_id) { |
28 extension_dispatcher_->WillReleaseScriptContext( | 30 extension_dispatcher_->WillReleaseScriptContext( |
29 render_frame()->GetWebFrame(), context, world_id); | 31 render_frame()->GetWebFrame(), context, world_id); |
30 } | 32 } |
31 | 33 |
32 bool ExtensionFrameHelper::OnMessageReceived(const IPC::Message& message) { | 34 bool ExtensionFrameHelper::OnMessageReceived(const IPC::Message& message) { |
33 bool handled = true; | 35 bool handled = true; |
34 IPC_BEGIN_MESSAGE_MAP(ExtensionFrameHelper, message) | 36 IPC_BEGIN_MESSAGE_MAP(ExtensionFrameHelper, message) |
35 IPC_MESSAGE_HANDLER(ExtensionMsg_AddMessageToConsole, | 37 IPC_MESSAGE_HANDLER(ExtensionMsg_AddMessageToConsole, |
36 OnAddMessageToConsole) | 38 OnAddMessageToConsole) |
| 39 IPC_MESSAGE_HANDLER(ExtensionMsg_DispatchOnConnect, |
| 40 OnExtensionDispatchOnConnect) |
| 41 IPC_MESSAGE_HANDLER(ExtensionMsg_DeliverMessage, OnExtensionDeliverMessage) |
| 42 IPC_MESSAGE_HANDLER(ExtensionMsg_DispatchOnDisconnect, |
| 43 OnExtensionDispatchOnDisconnect) |
37 IPC_MESSAGE_UNHANDLED(handled = false) | 44 IPC_MESSAGE_UNHANDLED(handled = false) |
38 IPC_END_MESSAGE_MAP() | 45 IPC_END_MESSAGE_MAP() |
39 return handled; | 46 return handled; |
40 } | 47 } |
41 | 48 |
42 void ExtensionFrameHelper::OnAddMessageToConsole( | 49 void ExtensionFrameHelper::OnAddMessageToConsole( |
43 content::ConsoleMessageLevel level, | 50 content::ConsoleMessageLevel level, |
44 const std::string& message) { | 51 const std::string& message) { |
45 console::AddMessage(render_frame()->GetRenderView(), level, message); | 52 console::AddMessage(render_frame()->GetRenderView(), level, message); |
46 } | 53 } |
47 | 54 |
| 55 void ExtensionFrameHelper::OnExtensionDispatchOnConnect( |
| 56 int target_port_id, |
| 57 const std::string& channel_name, |
| 58 const ExtensionMsg_TabConnectionInfo& source, |
| 59 const ExtensionMsg_ExternalConnectionInfo& info, |
| 60 const std::string& tls_channel_id) { |
| 61 MessagingBindings::DispatchOnConnect( |
| 62 extension_dispatcher_->script_context_set(), |
| 63 target_port_id, |
| 64 channel_name, |
| 65 source, |
| 66 info, |
| 67 tls_channel_id, |
| 68 render_frame()); |
| 69 } |
| 70 |
| 71 void ExtensionFrameHelper::OnExtensionDeliverMessage(int target_id, |
| 72 const Message& message) { |
| 73 MessagingBindings::DeliverMessage( |
| 74 extension_dispatcher_->script_context_set(), target_id, message, |
| 75 render_frame()); |
| 76 } |
| 77 |
| 78 void ExtensionFrameHelper::OnExtensionDispatchOnDisconnect( |
| 79 int port_id, |
| 80 const std::string& error_message) { |
| 81 MessagingBindings::DispatchOnDisconnect( |
| 82 extension_dispatcher_->script_context_set(), port_id, error_message, |
| 83 render_frame()); |
| 84 } |
| 85 |
48 } // namespace extensions | 86 } // namespace extensions |
OLD | NEW |