OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/renderer/browser_plugin/browser_plugin.h" | 5 #include "content/renderer/browser_plugin/browser_plugin.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 BrowserPlugin* BrowserPlugin::GetFromNode(blink::WebNode& node) { | 51 BrowserPlugin* BrowserPlugin::GetFromNode(blink::WebNode& node) { |
52 blink::WebPluginContainer* container = node.pluginContainer(); | 52 blink::WebPluginContainer* container = node.pluginContainer(); |
53 if (!container) | 53 if (!container) |
54 return NULL; | 54 return NULL; |
55 | 55 |
56 PluginContainerMap* browser_plugins = g_plugin_container_map.Pointer(); | 56 PluginContainerMap* browser_plugins = g_plugin_container_map.Pointer(); |
57 PluginContainerMap::iterator it = browser_plugins->find(container); | 57 PluginContainerMap::iterator it = browser_plugins->find(container); |
58 return it == browser_plugins->end() ? NULL : it->second; | 58 return it == browser_plugins->end() ? NULL : it->second; |
59 } | 59 } |
60 | 60 |
61 BrowserPlugin::BrowserPlugin(RenderViewImpl* render_view, | 61 BrowserPlugin::BrowserPlugin(RenderFrame* render_frame, |
62 blink::WebFrame* frame, | |
63 scoped_ptr<BrowserPluginDelegate> delegate) | 62 scoped_ptr<BrowserPluginDelegate> delegate) |
64 : attached_(false), | 63 : attached_(false), |
65 render_view_(render_view->AsWeakPtr()), | 64 render_view_routing_id_(render_frame->GetRenderView()->GetRoutingID()), |
66 render_view_routing_id_(render_view->GetRoutingID()), | |
67 container_(NULL), | 65 container_(NULL), |
68 last_device_scale_factor_(GetDeviceScaleFactor()), | 66 last_device_scale_factor_(GetDeviceScaleFactor()), |
69 sad_guest_(NULL), | 67 sad_guest_(NULL), |
70 guest_crashed_(false), | 68 guest_crashed_(false), |
71 plugin_focused_(false), | 69 plugin_focused_(false), |
72 visible_(true), | 70 visible_(true), |
73 mouse_locked_(false), | 71 mouse_locked_(false), |
74 ready_(false), | 72 ready_(false), |
75 browser_plugin_manager_(render_view->GetBrowserPluginManager()), | |
76 browser_plugin_instance_id_(browser_plugin::kInstanceIDNone), | 73 browser_plugin_instance_id_(browser_plugin::kInstanceIDNone), |
77 contents_opaque_(true), | 74 contents_opaque_(true), |
78 delegate_(delegate.Pass()), | 75 delegate_(delegate.Pass()), |
79 weak_ptr_factory_(this) { | 76 weak_ptr_factory_(this) { |
80 browser_plugin_instance_id_ = browser_plugin_manager()->GetNextInstanceID(); | 77 browser_plugin_instance_id_ = |
| 78 BrowserPluginManager::Get()->GetNextInstanceID(); |
81 | 79 |
82 if (delegate_) | 80 if (delegate_) |
83 delegate_->SetElementInstanceID(browser_plugin_instance_id_); | 81 delegate_->SetElementInstanceID(browser_plugin_instance_id_); |
84 } | 82 } |
85 | 83 |
86 BrowserPlugin::~BrowserPlugin() { | 84 BrowserPlugin::~BrowserPlugin() { |
87 if (compositing_helper_.get()) | 85 if (compositing_helper_.get()) |
88 compositing_helper_->OnContainerDestroy(); | 86 compositing_helper_->OnContainerDestroy(); |
89 | 87 |
90 browser_plugin_manager()->RemoveBrowserPlugin(browser_plugin_instance_id_); | 88 BrowserPluginManager::Get()->RemoveBrowserPlugin(browser_plugin_instance_id_); |
91 } | 89 } |
92 | 90 |
93 bool BrowserPlugin::OnMessageReceived(const IPC::Message& message) { | 91 bool BrowserPlugin::OnMessageReceived(const IPC::Message& message) { |
94 bool handled = true; | 92 bool handled = true; |
95 IPC_BEGIN_MESSAGE_MAP(BrowserPlugin, message) | 93 IPC_BEGIN_MESSAGE_MAP(BrowserPlugin, message) |
96 IPC_MESSAGE_HANDLER(BrowserPluginMsg_AdvanceFocus, OnAdvanceFocus) | 94 IPC_MESSAGE_HANDLER(BrowserPluginMsg_AdvanceFocus, OnAdvanceFocus) |
97 IPC_MESSAGE_HANDLER_GENERIC(BrowserPluginMsg_CompositorFrameSwapped, | 95 IPC_MESSAGE_HANDLER_GENERIC(BrowserPluginMsg_CompositorFrameSwapped, |
98 OnCompositorFrameSwapped(message)) | 96 OnCompositorFrameSwapped(message)) |
99 IPC_MESSAGE_HANDLER(BrowserPluginMsg_GuestGone, OnGuestGone) | 97 IPC_MESSAGE_HANDLER(BrowserPluginMsg_GuestGone, OnGuestGone) |
100 IPC_MESSAGE_HANDLER(BrowserPluginMsg_SetContentsOpaque, OnSetContentsOpaque) | 98 IPC_MESSAGE_HANDLER(BrowserPluginMsg_SetContentsOpaque, OnSetContentsOpaque) |
101 IPC_MESSAGE_HANDLER(BrowserPluginMsg_SetCursor, OnSetCursor) | 99 IPC_MESSAGE_HANDLER(BrowserPluginMsg_SetCursor, OnSetCursor) |
102 IPC_MESSAGE_HANDLER(BrowserPluginMsg_SetMouseLock, OnSetMouseLock) | 100 IPC_MESSAGE_HANDLER(BrowserPluginMsg_SetMouseLock, OnSetMouseLock) |
103 IPC_MESSAGE_HANDLER(BrowserPluginMsg_SetTooltipText, OnSetTooltipText) | 101 IPC_MESSAGE_HANDLER(BrowserPluginMsg_SetTooltipText, OnSetTooltipText) |
104 IPC_MESSAGE_HANDLER(BrowserPluginMsg_ShouldAcceptTouchEvents, | 102 IPC_MESSAGE_HANDLER(BrowserPluginMsg_ShouldAcceptTouchEvents, |
105 OnShouldAcceptTouchEvents) | 103 OnShouldAcceptTouchEvents) |
106 IPC_MESSAGE_UNHANDLED(handled = false) | 104 IPC_MESSAGE_UNHANDLED( |
| 105 handled = delegate_ && delegate_->OnMessageReceived(message)) |
107 IPC_END_MESSAGE_MAP() | 106 IPC_END_MESSAGE_MAP() |
108 return handled; | 107 return handled; |
109 } | 108 } |
110 | 109 |
111 void BrowserPlugin::UpdateDOMAttribute(const std::string& attribute_name, | 110 void BrowserPlugin::UpdateDOMAttribute(const std::string& attribute_name, |
112 const base::string16& attribute_value) { | 111 const base::string16& attribute_value) { |
113 if (!container()) | 112 if (!container()) |
114 return; | 113 return; |
115 | 114 |
116 blink::WebElement element = container()->element(); | 115 blink::WebElement element = container()->element(); |
(...skipping 14 matching lines...) Expand all Loading... |
131 if (container()) { | 130 if (container()) { |
132 blink::WebLocalFrame* frame = container()->element().document().frame(); | 131 blink::WebLocalFrame* frame = container()->element().document().frame(); |
133 attach_params.is_full_page_plugin = | 132 attach_params.is_full_page_plugin = |
134 frame->view()->mainFrame()->document().isPluginDocument(); | 133 frame->view()->mainFrame()->document().isPluginDocument(); |
135 } | 134 } |
136 gfx::Size view_size(width(), height()); | 135 gfx::Size view_size(width(), height()); |
137 if (!view_size.IsEmpty()) { | 136 if (!view_size.IsEmpty()) { |
138 PopulateResizeGuestParameters(view_size, | 137 PopulateResizeGuestParameters(view_size, |
139 &attach_params.resize_guest_params); | 138 &attach_params.resize_guest_params); |
140 } | 139 } |
141 browser_plugin_manager()->Send(new BrowserPluginHostMsg_Attach( | 140 BrowserPluginManager::Get()->Send(new BrowserPluginHostMsg_Attach( |
142 render_view_routing_id_, | 141 render_view_routing_id_, |
143 browser_plugin_instance_id_, | 142 browser_plugin_instance_id_, |
144 attach_params)); | 143 attach_params)); |
145 | 144 |
146 attached_ = true; | 145 attached_ = true; |
147 } | 146 } |
148 | 147 |
149 void BrowserPlugin::Detach() { | 148 void BrowserPlugin::Detach() { |
150 if (!attached()) | 149 if (!attached()) |
151 return; | 150 return; |
152 | 151 |
153 attached_ = false; | 152 attached_ = false; |
154 guest_crashed_ = false; | 153 guest_crashed_ = false; |
155 EnableCompositing(false); | 154 EnableCompositing(false); |
156 if (compositing_helper_.get()) { | 155 if (compositing_helper_.get()) { |
157 compositing_helper_->OnContainerDestroy(); | 156 compositing_helper_->OnContainerDestroy(); |
158 compositing_helper_ = NULL; | 157 compositing_helper_ = NULL; |
159 } | 158 } |
160 | 159 |
161 browser_plugin_manager()->Send(new BrowserPluginHostMsg_Detach( | 160 BrowserPluginManager::Get()->Send(new BrowserPluginHostMsg_Detach( |
162 render_view_routing_id_, browser_plugin_instance_id_)); | 161 render_view_routing_id_, browser_plugin_instance_id_)); |
163 } | 162 } |
164 | 163 |
165 void BrowserPlugin::DidCommitCompositorFrame() { | 164 void BrowserPlugin::DidCommitCompositorFrame() { |
166 if (compositing_helper_.get()) | 165 if (compositing_helper_.get()) |
167 compositing_helper_->DidCommitCompositorFrame(); | 166 compositing_helper_->DidCommitCompositorFrame(); |
168 } | 167 } |
169 | 168 |
170 void BrowserPlugin::OnAdvanceFocus(int browser_plugin_instance_id, | 169 void BrowserPlugin::OnAdvanceFocus(int browser_plugin_instance_id, |
171 bool reverse) { | 170 bool reverse) { |
172 DCHECK(render_view_); | 171 RenderViewImpl* render_view = |
173 render_view_->GetWebView()->advanceFocus(reverse); | 172 RenderViewImpl::FromRoutingID(render_view_routing_id()); |
| 173 if (!render_view) |
| 174 return; |
| 175 render_view->GetWebView()->advanceFocus(reverse); |
174 } | 176 } |
175 | 177 |
176 void BrowserPlugin::OnCompositorFrameSwapped(const IPC::Message& message) { | 178 void BrowserPlugin::OnCompositorFrameSwapped(const IPC::Message& message) { |
177 if (!attached()) | 179 if (!attached()) |
178 return; | 180 return; |
179 | 181 |
180 BrowserPluginMsg_CompositorFrameSwapped::Param param; | 182 BrowserPluginMsg_CompositorFrameSwapped::Param param; |
181 if (!BrowserPluginMsg_CompositorFrameSwapped::Read(&message, ¶m)) | 183 if (!BrowserPluginMsg_CompositorFrameSwapped::Read(&message, ¶m)) |
182 return; | 184 return; |
183 // Note that there is no need to send ACK for this message. | 185 // Note that there is no need to send ACK for this message. |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 compositing_helper_->SetContentsOpaque(opaque); | 223 compositing_helper_->SetContentsOpaque(opaque); |
222 } | 224 } |
223 | 225 |
224 void BrowserPlugin::OnSetCursor(int browser_plugin_instance_id, | 226 void BrowserPlugin::OnSetCursor(int browser_plugin_instance_id, |
225 const WebCursor& cursor) { | 227 const WebCursor& cursor) { |
226 cursor_ = cursor; | 228 cursor_ = cursor; |
227 } | 229 } |
228 | 230 |
229 void BrowserPlugin::OnSetMouseLock(int browser_plugin_instance_id, | 231 void BrowserPlugin::OnSetMouseLock(int browser_plugin_instance_id, |
230 bool enable) { | 232 bool enable) { |
| 233 RenderViewImpl* render_view = |
| 234 RenderViewImpl::FromRoutingID(render_view_routing_id()); |
231 if (enable) { | 235 if (enable) { |
232 if (mouse_locked_) | 236 if (mouse_locked_ || !render_view) |
233 return; | 237 return; |
234 render_view_->mouse_lock_dispatcher()->LockMouse(this); | 238 render_view->mouse_lock_dispatcher()->LockMouse(this); |
235 } else { | 239 } else { |
236 if (!mouse_locked_) { | 240 if (!mouse_locked_) { |
237 OnLockMouseACK(false); | 241 OnLockMouseACK(false); |
238 return; | 242 return; |
239 } | 243 } |
240 render_view_->mouse_lock_dispatcher()->UnlockMouse(this); | 244 if (!render_view) |
| 245 return; |
| 246 render_view->mouse_lock_dispatcher()->UnlockMouse(this); |
241 } | 247 } |
242 } | 248 } |
243 | 249 |
244 void BrowserPlugin::OnSetTooltipText(int instance_id, | 250 void BrowserPlugin::OnSetTooltipText(int instance_id, |
245 const base::string16& tooltip_text) { | 251 const base::string16& tooltip_text) { |
246 // Show tooltip text by setting the BrowserPlugin's |title| attribute. | 252 // Show tooltip text by setting the BrowserPlugin's |title| attribute. |
247 UpdateDOMAttribute("title", tooltip_text); | 253 UpdateDOMAttribute("title", tooltip_text); |
248 } | 254 } |
249 | 255 |
250 void BrowserPlugin::OnShouldAcceptTouchEvents(int browser_plugin_instance_id, | 256 void BrowserPlugin::OnShouldAcceptTouchEvents(int browser_plugin_instance_id, |
251 bool accept) { | 257 bool accept) { |
252 if (container()) { | 258 if (container()) { |
253 container()->requestTouchEventType( | 259 container()->requestTouchEventType( |
254 accept ? WebPluginContainer::TouchEventRequestTypeRaw | 260 accept ? WebPluginContainer::TouchEventRequestTypeRaw |
255 : WebPluginContainer::TouchEventRequestTypeNone); | 261 : WebPluginContainer::TouchEventRequestTypeNone); |
256 } | 262 } |
257 } | 263 } |
258 | 264 |
259 void BrowserPlugin::ShowSadGraphic() { | 265 void BrowserPlugin::ShowSadGraphic() { |
260 // If the BrowserPlugin is scheduled to be deleted, then container_ will be | 266 // If the BrowserPlugin is scheduled to be deleted, then container_ will be |
261 // NULL so we shouldn't attempt to access it. | 267 // NULL so we shouldn't attempt to access it. |
262 if (container_) | 268 if (container_) |
263 container_->invalidate(); | 269 container_->invalidate(); |
264 } | 270 } |
265 | 271 |
266 float BrowserPlugin::GetDeviceScaleFactor() const { | 272 float BrowserPlugin::GetDeviceScaleFactor() const { |
267 if (!render_view_) | 273 RenderViewImpl* render_view = |
| 274 RenderViewImpl::FromRoutingID(render_view_routing_id()); |
| 275 if (!render_view) |
268 return 1.0f; | 276 return 1.0f; |
269 return render_view_->GetWebView()->deviceScaleFactor(); | 277 return render_view->GetWebView()->deviceScaleFactor(); |
270 } | 278 } |
271 | 279 |
272 void BrowserPlugin::UpdateDeviceScaleFactor() { | 280 void BrowserPlugin::UpdateDeviceScaleFactor() { |
273 if (last_device_scale_factor_ == GetDeviceScaleFactor()) | 281 if (last_device_scale_factor_ == GetDeviceScaleFactor()) |
274 return; | 282 return; |
275 | 283 |
276 BrowserPluginHostMsg_ResizeGuest_Params params; | 284 BrowserPluginHostMsg_ResizeGuest_Params params; |
277 PopulateResizeGuestParameters(plugin_size(), ¶ms); | 285 PopulateResizeGuestParameters(plugin_size(), ¶ms); |
278 browser_plugin_manager()->Send(new BrowserPluginHostMsg_ResizeGuest( | 286 BrowserPluginManager::Get()->Send(new BrowserPluginHostMsg_ResizeGuest( |
279 render_view_routing_id_, | 287 render_view_routing_id_, |
280 browser_plugin_instance_id_, | 288 browser_plugin_instance_id_, |
281 params)); | 289 params)); |
282 } | 290 } |
283 | 291 |
284 void BrowserPlugin::UpdateGuestFocusState() { | 292 void BrowserPlugin::UpdateGuestFocusState() { |
285 if (!attached()) | 293 if (!attached()) |
286 return; | 294 return; |
287 bool should_be_focused = ShouldGuestBeFocused(); | 295 bool should_be_focused = ShouldGuestBeFocused(); |
288 browser_plugin_manager()->Send(new BrowserPluginHostMsg_SetFocus( | 296 BrowserPluginManager::Get()->Send(new BrowserPluginHostMsg_SetFocus( |
289 render_view_routing_id_, | 297 render_view_routing_id_, |
290 browser_plugin_instance_id_, | 298 browser_plugin_instance_id_, |
291 should_be_focused)); | 299 should_be_focused)); |
292 } | 300 } |
293 | 301 |
294 bool BrowserPlugin::ShouldGuestBeFocused() const { | 302 bool BrowserPlugin::ShouldGuestBeFocused() const { |
295 bool embedder_focused = false; | 303 bool embedder_focused = false; |
296 if (render_view_) | 304 RenderViewImpl* render_view = |
297 embedder_focused = render_view_->has_focus(); | 305 RenderViewImpl::FromRoutingID(render_view_routing_id()); |
| 306 if (render_view) |
| 307 embedder_focused = render_view->has_focus(); |
298 return plugin_focused_ && embedder_focused; | 308 return plugin_focused_ && embedder_focused; |
299 } | 309 } |
300 | 310 |
301 WebPluginContainer* BrowserPlugin::container() const { | 311 WebPluginContainer* BrowserPlugin::container() const { |
302 return container_; | 312 return container_; |
303 } | 313 } |
304 | 314 |
305 bool BrowserPlugin::initialize(WebPluginContainer* container) { | 315 bool BrowserPlugin::initialize(WebPluginContainer* container) { |
306 if (!container) | 316 if (!container) |
307 return false; | 317 return false; |
308 | 318 |
309 container_ = container; | 319 container_ = container; |
310 container_->setWantsWheelEvents(true); | 320 container_->setWantsWheelEvents(true); |
311 | 321 |
312 g_plugin_container_map.Get().insert(std::make_pair(container_, this)); | 322 g_plugin_container_map.Get().insert(std::make_pair(container_, this)); |
313 | 323 |
314 browser_plugin_manager()->AddBrowserPlugin(browser_plugin_instance_id_, this); | 324 BrowserPluginManager::Get()->AddBrowserPlugin( |
| 325 browser_plugin_instance_id_, this); |
315 | 326 |
316 // This is a way to notify observers of our attributes that this plugin is | 327 // This is a way to notify observers of our attributes that this plugin is |
317 // available in render tree. | 328 // available in render tree. |
318 // TODO(lazyboy): This should be done through the delegate instead. Perhaps | 329 // TODO(lazyboy): This should be done through the delegate instead. Perhaps |
319 // by firing an event from there. | 330 // by firing an event from there. |
320 UpdateDOMAttribute( | 331 UpdateDOMAttribute( |
321 "internalinstanceid", | 332 "internalinstanceid", |
322 base::UTF8ToUTF16(base::IntToString(browser_plugin_instance_id_))); | 333 base::UTF8ToUTF16(base::IntToString(browser_plugin_instance_id_))); |
323 | 334 |
324 return true; | 335 return true; |
(...skipping 23 matching lines...) Expand all Loading... |
348 | 359 |
349 void BrowserPlugin::destroy() { | 360 void BrowserPlugin::destroy() { |
350 if (container_) { | 361 if (container_) { |
351 // The BrowserPlugin's WebPluginContainer is deleted immediately after this | 362 // The BrowserPlugin's WebPluginContainer is deleted immediately after this |
352 // call returns, so let's not keep a reference to it around. | 363 // call returns, so let's not keep a reference to it around. |
353 g_plugin_container_map.Get().erase(container_); | 364 g_plugin_container_map.Get().erase(container_); |
354 } | 365 } |
355 | 366 |
356 container_ = NULL; | 367 container_ = NULL; |
357 // Will be a no-op if the mouse is not currently locked. | 368 // Will be a no-op if the mouse is not currently locked. |
358 if (render_view_) | 369 RenderViewImpl* render_view = |
359 render_view_->mouse_lock_dispatcher()->OnLockTargetDestroyed(this); | 370 RenderViewImpl::FromRoutingID(render_view_routing_id()); |
| 371 if (render_view) |
| 372 render_view->mouse_lock_dispatcher()->OnLockTargetDestroyed(this); |
360 base::MessageLoop::current()->DeleteSoon(FROM_HERE, this); | 373 base::MessageLoop::current()->DeleteSoon(FROM_HERE, this); |
361 } | 374 } |
362 | 375 |
363 bool BrowserPlugin::supportsKeyboardFocus() const { | 376 bool BrowserPlugin::supportsKeyboardFocus() const { |
364 return true; | 377 return true; |
365 } | 378 } |
366 | 379 |
367 bool BrowserPlugin::supportsEditCommands() const { | 380 bool BrowserPlugin::supportsEditCommands() const { |
368 return true; | 381 return true; |
369 } | 382 } |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
434 if (!ready_) { | 447 if (!ready_) { |
435 if (delegate_) | 448 if (delegate_) |
436 delegate_->Ready(); | 449 delegate_->Ready(); |
437 ready_ = true; | 450 ready_ = true; |
438 } | 451 } |
439 if (!attached()) | 452 if (!attached()) |
440 return; | 453 return; |
441 | 454 |
442 if (old_width == window_rect.width && old_height == window_rect.height) { | 455 if (old_width == window_rect.width && old_height == window_rect.height) { |
443 // Let the browser know about the updated view rect. | 456 // Let the browser know about the updated view rect. |
444 browser_plugin_manager()->Send(new BrowserPluginHostMsg_UpdateGeometry( | 457 BrowserPluginManager::Get()->Send(new BrowserPluginHostMsg_UpdateGeometry( |
445 render_view_routing_id_, browser_plugin_instance_id_, plugin_rect_)); | 458 render_view_routing_id_, browser_plugin_instance_id_, plugin_rect_)); |
446 return; | 459 return; |
447 } | 460 } |
448 | 461 |
449 BrowserPluginHostMsg_ResizeGuest_Params params; | 462 BrowserPluginHostMsg_ResizeGuest_Params params; |
450 PopulateResizeGuestParameters(plugin_size(), ¶ms); | 463 PopulateResizeGuestParameters(plugin_size(), ¶ms); |
451 browser_plugin_manager()->Send(new BrowserPluginHostMsg_ResizeGuest( | 464 BrowserPluginManager::Get()->Send(new BrowserPluginHostMsg_ResizeGuest( |
452 render_view_routing_id_, | 465 render_view_routing_id_, |
453 browser_plugin_instance_id_, | 466 browser_plugin_instance_id_, |
454 params)); | 467 params)); |
455 } | 468 } |
456 | 469 |
457 void BrowserPlugin::PopulateResizeGuestParameters( | 470 void BrowserPlugin::PopulateResizeGuestParameters( |
458 const gfx::Size& view_size, | 471 const gfx::Size& view_size, |
459 BrowserPluginHostMsg_ResizeGuest_Params* params) { | 472 BrowserPluginHostMsg_ResizeGuest_Params* params) { |
460 params->view_size = view_size; | 473 params->view_size = view_size; |
461 params->scale_factor = GetDeviceScaleFactor(); | 474 params->scale_factor = GetDeviceScaleFactor(); |
(...skipping 12 matching lines...) Expand all Loading... |
474 if (visible_ == visible) | 487 if (visible_ == visible) |
475 return; | 488 return; |
476 | 489 |
477 visible_ = visible; | 490 visible_ = visible; |
478 if (!attached()) | 491 if (!attached()) |
479 return; | 492 return; |
480 | 493 |
481 if (compositing_helper_.get()) | 494 if (compositing_helper_.get()) |
482 compositing_helper_->UpdateVisibility(visible); | 495 compositing_helper_->UpdateVisibility(visible); |
483 | 496 |
484 browser_plugin_manager()->Send(new BrowserPluginHostMsg_SetVisibility( | 497 BrowserPluginManager::Get()->Send(new BrowserPluginHostMsg_SetVisibility( |
485 render_view_routing_id_, | 498 render_view_routing_id_, |
486 browser_plugin_instance_id_, | 499 browser_plugin_instance_id_, |
487 visible)); | 500 visible)); |
488 } | 501 } |
489 | 502 |
490 bool BrowserPlugin::acceptsInputEvents() { | 503 bool BrowserPlugin::acceptsInputEvents() { |
491 return true; | 504 return true; |
492 } | 505 } |
493 | 506 |
494 bool BrowserPlugin::handleInputEvent(const blink::WebInputEvent& event, | 507 bool BrowserPlugin::handleInputEvent(const blink::WebInputEvent& event, |
495 blink::WebCursorInfo& cursor_info) { | 508 blink::WebCursorInfo& cursor_info) { |
496 if (guest_crashed_ || !attached()) | 509 if (guest_crashed_ || !attached()) |
497 return false; | 510 return false; |
498 | 511 |
499 if (event.type == blink::WebInputEvent::ContextMenu) | 512 if (event.type == blink::WebInputEvent::ContextMenu) |
500 return true; | 513 return true; |
501 | 514 |
502 if (blink::WebInputEvent::isKeyboardEventType(event.type) && | 515 if (blink::WebInputEvent::isKeyboardEventType(event.type) && |
503 !edit_commands_.empty()) { | 516 !edit_commands_.empty()) { |
504 browser_plugin_manager()->Send( | 517 BrowserPluginManager::Get()->Send( |
505 new BrowserPluginHostMsg_SetEditCommandsForNextKeyEvent( | 518 new BrowserPluginHostMsg_SetEditCommandsForNextKeyEvent( |
506 render_view_routing_id_, | 519 render_view_routing_id_, |
507 browser_plugin_instance_id_, | 520 browser_plugin_instance_id_, |
508 edit_commands_)); | 521 edit_commands_)); |
509 edit_commands_.clear(); | 522 edit_commands_.clear(); |
510 } | 523 } |
511 | 524 |
512 browser_plugin_manager()->Send( | 525 BrowserPluginManager::Get()->Send( |
513 new BrowserPluginHostMsg_HandleInputEvent(render_view_routing_id_, | 526 new BrowserPluginHostMsg_HandleInputEvent(render_view_routing_id_, |
514 browser_plugin_instance_id_, | 527 browser_plugin_instance_id_, |
515 plugin_rect_, | 528 plugin_rect_, |
516 &event)); | 529 &event)); |
517 GetWebKitCursorInfo(cursor_, &cursor_info); | 530 GetWebKitCursorInfo(cursor_, &cursor_info); |
518 return true; | 531 return true; |
519 } | 532 } |
520 | 533 |
521 bool BrowserPlugin::handleDragStatusUpdate(blink::WebDragStatus drag_status, | 534 bool BrowserPlugin::handleDragStatusUpdate(blink::WebDragStatus drag_status, |
522 const blink::WebDragData& drag_data, | 535 const blink::WebDragData& drag_data, |
523 blink::WebDragOperationsMask mask, | 536 blink::WebDragOperationsMask mask, |
524 const blink::WebPoint& position, | 537 const blink::WebPoint& position, |
525 const blink::WebPoint& screen) { | 538 const blink::WebPoint& screen) { |
526 if (guest_crashed_ || !attached()) | 539 if (guest_crashed_ || !attached()) |
527 return false; | 540 return false; |
528 browser_plugin_manager()->Send( | 541 BrowserPluginManager::Get()->Send( |
529 new BrowserPluginHostMsg_DragStatusUpdate( | 542 new BrowserPluginHostMsg_DragStatusUpdate( |
530 render_view_routing_id_, | 543 render_view_routing_id_, |
531 browser_plugin_instance_id_, | 544 browser_plugin_instance_id_, |
532 drag_status, | 545 drag_status, |
533 DropDataBuilder::Build(drag_data), | 546 DropDataBuilder::Build(drag_data), |
534 mask, | 547 mask, |
535 position)); | 548 position)); |
536 return true; | 549 return true; |
537 } | 550 } |
538 | 551 |
(...skipping 18 matching lines...) Expand all Loading... |
557 void* notify_data) { | 570 void* notify_data) { |
558 } | 571 } |
559 | 572 |
560 void BrowserPlugin::didFailLoadingFrameRequest( | 573 void BrowserPlugin::didFailLoadingFrameRequest( |
561 const blink::WebURL& url, | 574 const blink::WebURL& url, |
562 void* notify_data, | 575 void* notify_data, |
563 const blink::WebURLError& error) { | 576 const blink::WebURLError& error) { |
564 } | 577 } |
565 | 578 |
566 bool BrowserPlugin::executeEditCommand(const blink::WebString& name) { | 579 bool BrowserPlugin::executeEditCommand(const blink::WebString& name) { |
567 browser_plugin_manager()->Send(new BrowserPluginHostMsg_ExecuteEditCommand( | 580 BrowserPluginManager::Get()->Send(new BrowserPluginHostMsg_ExecuteEditCommand( |
568 render_view_routing_id_, | 581 render_view_routing_id_, |
569 browser_plugin_instance_id_, | 582 browser_plugin_instance_id_, |
570 name.utf8())); | 583 name.utf8())); |
571 | 584 |
572 // BrowserPlugin swallows edit commands. | 585 // BrowserPlugin swallows edit commands. |
573 return true; | 586 return true; |
574 } | 587 } |
575 | 588 |
576 bool BrowserPlugin::executeEditCommand(const blink::WebString& name, | 589 bool BrowserPlugin::executeEditCommand(const blink::WebString& name, |
577 const blink::WebString& value) { | 590 const blink::WebString& value) { |
578 edit_commands_.push_back(EditCommand(name.utf8(), value.utf8())); | 591 edit_commands_.push_back(EditCommand(name.utf8(), value.utf8())); |
579 // BrowserPlugin swallows edit commands. | 592 // BrowserPlugin swallows edit commands. |
580 return true; | 593 return true; |
581 } | 594 } |
582 | 595 |
583 bool BrowserPlugin::setComposition( | 596 bool BrowserPlugin::setComposition( |
584 const blink::WebString& text, | 597 const blink::WebString& text, |
585 const blink::WebVector<blink::WebCompositionUnderline>& underlines, | 598 const blink::WebVector<blink::WebCompositionUnderline>& underlines, |
586 int selectionStart, | 599 int selectionStart, |
587 int selectionEnd) { | 600 int selectionEnd) { |
588 if (!attached()) | 601 if (!attached()) |
589 return false; | 602 return false; |
590 std::vector<blink::WebCompositionUnderline> std_underlines; | 603 std::vector<blink::WebCompositionUnderline> std_underlines; |
591 for (size_t i = 0; i < underlines.size(); ++i) { | 604 for (size_t i = 0; i < underlines.size(); ++i) { |
592 std_underlines.push_back(underlines[i]); | 605 std_underlines.push_back(underlines[i]); |
593 } | 606 } |
594 browser_plugin_manager()->Send(new BrowserPluginHostMsg_ImeSetComposition( | 607 BrowserPluginManager::Get()->Send(new BrowserPluginHostMsg_ImeSetComposition( |
595 render_view_routing_id_, | 608 render_view_routing_id_, |
596 browser_plugin_instance_id_, | 609 browser_plugin_instance_id_, |
597 text.utf8(), | 610 text.utf8(), |
598 std_underlines, | 611 std_underlines, |
599 selectionStart, | 612 selectionStart, |
600 selectionEnd)); | 613 selectionEnd)); |
601 // TODO(kochi): This assumes the IPC handling always succeeds. | 614 // TODO(kochi): This assumes the IPC handling always succeeds. |
602 return true; | 615 return true; |
603 } | 616 } |
604 | 617 |
605 bool BrowserPlugin::confirmComposition( | 618 bool BrowserPlugin::confirmComposition( |
606 const blink::WebString& text, | 619 const blink::WebString& text, |
607 blink::WebWidget::ConfirmCompositionBehavior selectionBehavior) { | 620 blink::WebWidget::ConfirmCompositionBehavior selectionBehavior) { |
608 if (!attached()) | 621 if (!attached()) |
609 return false; | 622 return false; |
610 bool keep_selection = (selectionBehavior == blink::WebWidget::KeepSelection); | 623 bool keep_selection = (selectionBehavior == blink::WebWidget::KeepSelection); |
611 browser_plugin_manager()->Send(new BrowserPluginHostMsg_ImeConfirmComposition( | 624 BrowserPluginManager::Get()->Send( |
612 render_view_routing_id_, | 625 new BrowserPluginHostMsg_ImeConfirmComposition( |
613 browser_plugin_instance_id_, | 626 render_view_routing_id_, |
614 text.utf8(), | 627 browser_plugin_instance_id_, |
615 keep_selection)); | 628 text.utf8(), |
| 629 keep_selection)); |
616 // TODO(kochi): This assumes the IPC handling always succeeds. | 630 // TODO(kochi): This assumes the IPC handling always succeeds. |
617 return true; | 631 return true; |
618 } | 632 } |
619 | 633 |
620 void BrowserPlugin::extendSelectionAndDelete(int before, int after) { | 634 void BrowserPlugin::extendSelectionAndDelete(int before, int after) { |
621 if (!attached()) | 635 if (!attached()) |
622 return; | 636 return; |
623 browser_plugin_manager()->Send( | 637 BrowserPluginManager::Get()->Send( |
624 new BrowserPluginHostMsg_ExtendSelectionAndDelete( | 638 new BrowserPluginHostMsg_ExtendSelectionAndDelete( |
625 render_view_routing_id_, | 639 render_view_routing_id_, |
626 browser_plugin_instance_id_, | 640 browser_plugin_instance_id_, |
627 before, | 641 before, |
628 after)); | 642 after)); |
629 } | 643 } |
630 | 644 |
631 void BrowserPlugin::OnLockMouseACK(bool succeeded) { | 645 void BrowserPlugin::OnLockMouseACK(bool succeeded) { |
632 mouse_locked_ = succeeded; | 646 mouse_locked_ = succeeded; |
633 browser_plugin_manager()->Send(new BrowserPluginHostMsg_LockMouse_ACK( | 647 BrowserPluginManager::Get()->Send(new BrowserPluginHostMsg_LockMouse_ACK( |
634 render_view_routing_id_, | 648 render_view_routing_id_, |
635 browser_plugin_instance_id_, | 649 browser_plugin_instance_id_, |
636 succeeded)); | 650 succeeded)); |
637 } | 651 } |
638 | 652 |
639 void BrowserPlugin::OnMouseLockLost() { | 653 void BrowserPlugin::OnMouseLockLost() { |
640 mouse_locked_ = false; | 654 mouse_locked_ = false; |
641 browser_plugin_manager()->Send(new BrowserPluginHostMsg_UnlockMouse_ACK( | 655 BrowserPluginManager::Get()->Send(new BrowserPluginHostMsg_UnlockMouse_ACK( |
642 render_view_routing_id_, | 656 render_view_routing_id_, |
643 browser_plugin_instance_id_)); | 657 browser_plugin_instance_id_)); |
644 } | 658 } |
645 | 659 |
646 bool BrowserPlugin::HandleMouseLockedInputEvent( | 660 bool BrowserPlugin::HandleMouseLockedInputEvent( |
647 const blink::WebMouseEvent& event) { | 661 const blink::WebMouseEvent& event) { |
648 browser_plugin_manager()->Send( | 662 BrowserPluginManager::Get()->Send( |
649 new BrowserPluginHostMsg_HandleInputEvent(render_view_routing_id_, | 663 new BrowserPluginHostMsg_HandleInputEvent(render_view_routing_id_, |
650 browser_plugin_instance_id_, | 664 browser_plugin_instance_id_, |
651 plugin_rect_, | 665 plugin_rect_, |
652 &event)); | 666 &event)); |
653 return true; | 667 return true; |
654 } | 668 } |
655 | 669 |
656 } // namespace content | 670 } // namespace content |
OLD | NEW |