OLD | NEW |
---|---|
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 "content/browser/browser_plugin/browser_plugin_guest_manager.h" | 5 #include "content/browser/browser_plugin/browser_plugin_guest_manager.h" |
6 | 6 |
7 #include "content/browser/browser_plugin/browser_plugin_guest.h" | 7 #include "content/browser/browser_plugin/browser_plugin_guest.h" |
8 #include "content/browser/browser_plugin/browser_plugin_host_factory.h" | 8 #include "content/browser/browser_plugin/browser_plugin_host_factory.h" |
9 #include "content/browser/renderer_host/render_view_host_impl.h" | 9 #include "content/browser/renderer_host/render_view_host_impl.h" |
10 #include "content/browser/web_contents/web_contents_impl.h" | 10 #include "content/browser/web_contents/web_contents_impl.h" |
11 #include "content/common/browser_plugin/browser_plugin_constants.h" | 11 #include "content/common/browser_plugin/browser_plugin_constants.h" |
12 #include "content/common/browser_plugin/browser_plugin_messages.h" | 12 #include "content/common/browser_plugin/browser_plugin_messages.h" |
13 #include "content/common/content_export.h" | 13 #include "content/common/content_export.h" |
14 #include "content/public/browser/render_process_host.h" | 14 #include "content/public/browser/render_process_host.h" |
15 #include "content/public/browser/user_metrics.h" | 15 #include "content/public/browser/user_metrics.h" |
16 #include "content/public/common/result_codes.h" | 16 #include "content/public/common/result_codes.h" |
17 #include "content/public/common/url_constants.h" | 17 #include "content/public/common/url_constants.h" |
18 #include "content/public/common/url_utils.h" | 18 #include "content/public/common/url_utils.h" |
19 #include "net/base/escape.h" | 19 #include "net/base/escape.h" |
20 #include "ui/events/keycodes/keyboard_codes.h" | |
21 | 20 |
22 namespace content { | 21 namespace content { |
23 | 22 |
24 // static | 23 // static |
25 BrowserPluginHostFactory* BrowserPluginGuestManager::factory_ = NULL; | 24 BrowserPluginHostFactory* BrowserPluginGuestManager::factory_ = NULL; |
26 | 25 |
27 BrowserPluginGuestManager::BrowserPluginGuestManager() | 26 BrowserPluginGuestManager::BrowserPluginGuestManager() |
28 : next_instance_id_(browser_plugin::kInstanceIDNone) { | 27 : next_instance_id_(browser_plugin::kInstanceIDNone) { |
29 } | 28 } |
30 | 29 |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
217 // otherwise the ACK is handled by the guest. | 216 // otherwise the ACK is handled by the guest. |
218 void BrowserPluginGuestManager::OnUnhandledSwapBuffersACK( | 217 void BrowserPluginGuestManager::OnUnhandledSwapBuffersACK( |
219 int instance_id, | 218 int instance_id, |
220 const FrameHostMsg_BuffersSwappedACK_Params& params) { | 219 const FrameHostMsg_BuffersSwappedACK_Params& params) { |
221 BrowserPluginGuest::AcknowledgeBufferPresent(params.gpu_route_id, | 220 BrowserPluginGuest::AcknowledgeBufferPresent(params.gpu_route_id, |
222 params.gpu_host_id, | 221 params.gpu_host_id, |
223 params.mailbox_name, | 222 params.mailbox_name, |
224 params.sync_point); | 223 params.sync_point); |
225 } | 224 } |
226 | 225 |
227 void BrowserPluginGuestManager::DidSendScreenRects( | 226 bool BrowserPluginGuestManager::ForEachGuest( |
228 WebContentsImpl* embedder_web_contents) { | 227 WebContentsImpl* embedder_web_contents, |
229 // TODO(lazyboy): Generalize iterating over guest instances and performing | 228 base::Callback<bool(BrowserPluginGuest*)> callback) { |
230 // actions on the guests. | |
231 for (GuestInstanceMap::iterator it = | 229 for (GuestInstanceMap::iterator it = |
232 guest_web_contents_by_instance_id_.begin(); | 230 guest_web_contents_by_instance_id_.begin(); |
233 it != guest_web_contents_by_instance_id_.end(); ++it) { | 231 it != guest_web_contents_by_instance_id_.end(); ++it) { |
234 BrowserPluginGuest* guest = it->second->GetBrowserPluginGuest(); | 232 BrowserPluginGuest* guest = it->second->GetBrowserPluginGuest(); |
235 if (embedder_web_contents == guest->embedder_web_contents()) { | 233 if (embedder_web_contents != guest->embedder_web_contents()) |
236 static_cast<RenderViewHostImpl*>( | 234 continue; |
237 guest->GetWebContents()->GetRenderViewHost())->SendScreenRects(); | |
238 } | |
239 } | |
240 } | |
241 | 235 |
242 bool BrowserPluginGuestManager::UnlockMouseIfNecessary( | 236 if (callback.Run(guest)) |
nasko
2014/01/08 17:58:42
nit: I see that this fits in how HandleInputEvent
Fady Samuel
2014/01/08 18:22:40
Agreed, but I can't think of a better way to do th
| |
243 WebContentsImpl* embedder_web_contents, | 237 return true; |
244 const NativeWebKeyboardEvent& event) { | |
245 if ((event.type != blink::WebInputEvent::RawKeyDown) || | |
246 (event.windowsKeyCode != ui::VKEY_ESCAPE) || | |
247 (event.modifiers & blink::WebInputEvent::InputModifiers)) { | |
248 return false; | |
249 } | |
250 | |
251 // TODO(lazyboy): Generalize iterating over guest instances and performing | |
252 // actions on the guests. | |
253 for (GuestInstanceMap::iterator it = | |
254 guest_web_contents_by_instance_id_.begin(); | |
255 it != guest_web_contents_by_instance_id_.end(); ++it) { | |
256 BrowserPluginGuest* guest = it->second->GetBrowserPluginGuest(); | |
257 if (embedder_web_contents == guest->embedder_web_contents()) { | |
258 if (guest->UnlockMouseIfNecessary(event)) | |
259 return true; | |
260 } | |
261 } | 238 } |
262 return false; | 239 return false; |
263 } | 240 } |
264 | 241 |
265 } // namespace content | 242 } // namespace content |
OLD | NEW |