OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "extensions/browser/extension_message_filter.h" | 5 #include "extensions/browser/extension_message_filter.h" |
6 | 6 |
7 #include "components/crx_file/id_util.h" | 7 #include "components/crx_file/id_util.h" |
8 #include "content/public/browser/browser_thread.h" | 8 #include "content/public/browser/browser_thread.h" |
9 #include "content/public/browser/render_process_host.h" | 9 #include "content/public/browser/render_process_host.h" |
10 #include "content/public/browser/resource_dispatcher_host.h" | 10 #include "content/public/browser/resource_dispatcher_host.h" |
11 #include "extensions/browser/blob_holder.h" | 11 #include "extensions/browser/blob_holder.h" |
12 #include "extensions/browser/event_router.h" | 12 #include "extensions/browser/event_router.h" |
13 #include "extensions/browser/extension_function_dispatcher.h" | 13 #include "extensions/browser/extension_function_dispatcher.h" |
14 #include "extensions/browser/extension_system.h" | 14 #include "extensions/browser/extension_system.h" |
| 15 #include "extensions/browser/guest_view/guest_view_manager.h" |
15 #include "extensions/browser/info_map.h" | 16 #include "extensions/browser/info_map.h" |
16 #include "extensions/browser/process_manager.h" | 17 #include "extensions/browser/process_manager.h" |
17 #include "extensions/common/extension.h" | 18 #include "extensions/common/extension.h" |
18 #include "extensions/common/extension_messages.h" | 19 #include "extensions/common/extension_messages.h" |
19 #include "ipc/ipc_message_macros.h" | 20 #include "ipc/ipc_message_macros.h" |
20 | 21 |
21 using content::BrowserThread; | 22 using content::BrowserThread; |
22 using content::RenderProcessHost; | 23 using content::RenderProcessHost; |
23 | 24 |
24 namespace extensions { | 25 namespace extensions { |
(...skipping 10 matching lines...) Expand all Loading... |
35 | 36 |
36 ExtensionMessageFilter::~ExtensionMessageFilter() { | 37 ExtensionMessageFilter::~ExtensionMessageFilter() { |
37 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 38 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
38 } | 39 } |
39 | 40 |
40 void ExtensionMessageFilter::OverrideThreadForMessage( | 41 void ExtensionMessageFilter::OverrideThreadForMessage( |
41 const IPC::Message& message, | 42 const IPC::Message& message, |
42 BrowserThread::ID* thread) { | 43 BrowserThread::ID* thread) { |
43 switch (message.type()) { | 44 switch (message.type()) { |
44 case ExtensionHostMsg_AddListener::ID: | 45 case ExtensionHostMsg_AddListener::ID: |
| 46 case ExtensionHostMsg_AttachGuest::ID: |
45 case ExtensionHostMsg_RemoveListener::ID: | 47 case ExtensionHostMsg_RemoveListener::ID: |
46 case ExtensionHostMsg_AddLazyListener::ID: | 48 case ExtensionHostMsg_AddLazyListener::ID: |
47 case ExtensionHostMsg_RemoveLazyListener::ID: | 49 case ExtensionHostMsg_RemoveLazyListener::ID: |
48 case ExtensionHostMsg_AddFilteredListener::ID: | 50 case ExtensionHostMsg_AddFilteredListener::ID: |
49 case ExtensionHostMsg_RemoveFilteredListener::ID: | 51 case ExtensionHostMsg_RemoveFilteredListener::ID: |
50 case ExtensionHostMsg_ShouldSuspendAck::ID: | 52 case ExtensionHostMsg_ShouldSuspendAck::ID: |
51 case ExtensionHostMsg_SuspendAck::ID: | 53 case ExtensionHostMsg_SuspendAck::ID: |
52 case ExtensionHostMsg_TransferBlobsAck::ID: | 54 case ExtensionHostMsg_TransferBlobsAck::ID: |
53 *thread = BrowserThread::UI; | 55 *thread = BrowserThread::UI; |
54 break; | 56 break; |
(...skipping 10 matching lines...) Expand all Loading... |
65 | 67 |
66 bool ExtensionMessageFilter::OnMessageReceived(const IPC::Message& message) { | 68 bool ExtensionMessageFilter::OnMessageReceived(const IPC::Message& message) { |
67 bool handled = true; | 69 bool handled = true; |
68 IPC_BEGIN_MESSAGE_MAP(ExtensionMessageFilter, message) | 70 IPC_BEGIN_MESSAGE_MAP(ExtensionMessageFilter, message) |
69 IPC_MESSAGE_HANDLER(ExtensionHostMsg_AddListener, | 71 IPC_MESSAGE_HANDLER(ExtensionHostMsg_AddListener, |
70 OnExtensionAddListener) | 72 OnExtensionAddListener) |
71 IPC_MESSAGE_HANDLER(ExtensionHostMsg_RemoveListener, | 73 IPC_MESSAGE_HANDLER(ExtensionHostMsg_RemoveListener, |
72 OnExtensionRemoveListener) | 74 OnExtensionRemoveListener) |
73 IPC_MESSAGE_HANDLER(ExtensionHostMsg_AddLazyListener, | 75 IPC_MESSAGE_HANDLER(ExtensionHostMsg_AddLazyListener, |
74 OnExtensionAddLazyListener) | 76 OnExtensionAddLazyListener) |
| 77 IPC_MESSAGE_HANDLER(ExtensionHostMsg_AttachGuest, |
| 78 OnExtensionAttachGuest) |
75 IPC_MESSAGE_HANDLER(ExtensionHostMsg_RemoveLazyListener, | 79 IPC_MESSAGE_HANDLER(ExtensionHostMsg_RemoveLazyListener, |
76 OnExtensionRemoveLazyListener) | 80 OnExtensionRemoveLazyListener) |
77 IPC_MESSAGE_HANDLER(ExtensionHostMsg_AddFilteredListener, | 81 IPC_MESSAGE_HANDLER(ExtensionHostMsg_AddFilteredListener, |
78 OnExtensionAddFilteredListener) | 82 OnExtensionAddFilteredListener) |
79 IPC_MESSAGE_HANDLER(ExtensionHostMsg_RemoveFilteredListener, | 83 IPC_MESSAGE_HANDLER(ExtensionHostMsg_RemoveFilteredListener, |
80 OnExtensionRemoveFilteredListener) | 84 OnExtensionRemoveFilteredListener) |
81 IPC_MESSAGE_HANDLER(ExtensionHostMsg_ShouldSuspendAck, | 85 IPC_MESSAGE_HANDLER(ExtensionHostMsg_ShouldSuspendAck, |
82 OnExtensionShouldSuspendAck) | 86 OnExtensionShouldSuspendAck) |
83 IPC_MESSAGE_HANDLER(ExtensionHostMsg_SuspendAck, | 87 IPC_MESSAGE_HANDLER(ExtensionHostMsg_SuspendAck, |
84 OnExtensionSuspendAck) | 88 OnExtensionSuspendAck) |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 } | 142 } |
139 | 143 |
140 void ExtensionMessageFilter::OnExtensionAddLazyListener( | 144 void ExtensionMessageFilter::OnExtensionAddLazyListener( |
141 const std::string& extension_id, const std::string& event_name) { | 145 const std::string& extension_id, const std::string& event_name) { |
142 EventRouter* router = EventRouter::Get(browser_context_); | 146 EventRouter* router = EventRouter::Get(browser_context_); |
143 if (!router) | 147 if (!router) |
144 return; | 148 return; |
145 router->AddLazyEventListener(event_name, extension_id); | 149 router->AddLazyEventListener(event_name, extension_id); |
146 } | 150 } |
147 | 151 |
| 152 void ExtensionMessageFilter::OnExtensionAttachGuest( |
| 153 int routing_id, |
| 154 int element_instance_id, |
| 155 int guest_instance_id, |
| 156 const base::DictionaryValue& params) { |
| 157 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 158 extensions::GuestViewManager* manager = |
| 159 extensions::GuestViewManager::FromBrowserContext(browser_context_); |
| 160 if (!manager) |
| 161 return; |
| 162 |
| 163 manager->AttachGuest(render_process_id_, |
| 164 routing_id, |
| 165 element_instance_id, |
| 166 guest_instance_id, |
| 167 params); |
| 168 } |
| 169 |
148 void ExtensionMessageFilter::OnExtensionRemoveLazyListener( | 170 void ExtensionMessageFilter::OnExtensionRemoveLazyListener( |
149 const std::string& extension_id, const std::string& event_name) { | 171 const std::string& extension_id, const std::string& event_name) { |
150 EventRouter* router = EventRouter::Get(browser_context_); | 172 EventRouter* router = EventRouter::Get(browser_context_); |
151 if (!router) | 173 if (!router) |
152 return; | 174 return; |
153 router->RemoveLazyEventListener(event_name, extension_id); | 175 router->RemoveLazyEventListener(event_name, extension_id); |
154 } | 176 } |
155 | 177 |
156 void ExtensionMessageFilter::OnExtensionAddFilteredListener( | 178 void ExtensionMessageFilter::OnExtensionAddFilteredListener( |
157 const std::string& extension_id, | 179 const std::string& extension_id, |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
224 ExtensionFunctionDispatcher::DispatchOnIOThread( | 246 ExtensionFunctionDispatcher::DispatchOnIOThread( |
225 extension_info_map_.get(), | 247 extension_info_map_.get(), |
226 browser_context_, | 248 browser_context_, |
227 render_process_id_, | 249 render_process_id_, |
228 weak_ptr_factory_.GetWeakPtr(), | 250 weak_ptr_factory_.GetWeakPtr(), |
229 routing_id, | 251 routing_id, |
230 params); | 252 params); |
231 } | 253 } |
232 | 254 |
233 } // namespace extensions | 255 } // namespace extensions |
OLD | NEW |