| 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 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 delegate_(delegate.Pass()), | 76 delegate_(delegate.Pass()), |
| 77 weak_ptr_factory_(this) { | 77 weak_ptr_factory_(this) { |
| 78 browser_plugin_instance_id_ = browser_plugin_manager()->GetNextInstanceID(); | 78 browser_plugin_instance_id_ = browser_plugin_manager()->GetNextInstanceID(); |
| 79 | 79 |
| 80 if (delegate_) | 80 if (delegate_) |
| 81 delegate_->SetElementInstanceID(browser_plugin_instance_id_); | 81 delegate_->SetElementInstanceID(browser_plugin_instance_id_); |
| 82 } | 82 } |
| 83 | 83 |
| 84 BrowserPlugin::~BrowserPlugin() { | 84 BrowserPlugin::~BrowserPlugin() { |
| 85 browser_plugin_manager()->RemoveBrowserPlugin(browser_plugin_instance_id_); | 85 browser_plugin_manager()->RemoveBrowserPlugin(browser_plugin_instance_id_); |
| 86 | |
| 87 if (!ready()) | |
| 88 return; | |
| 89 | |
| 90 browser_plugin_manager()->Send( | |
| 91 new BrowserPluginHostMsg_PluginDestroyed(render_view_routing_id_, | |
| 92 browser_plugin_instance_id_)); | |
| 93 } | 86 } |
| 94 | 87 |
| 95 bool BrowserPlugin::OnMessageReceived(const IPC::Message& message) { | 88 bool BrowserPlugin::OnMessageReceived(const IPC::Message& message) { |
| 96 bool handled = true; | 89 bool handled = true; |
| 97 IPC_BEGIN_MESSAGE_MAP(BrowserPlugin, message) | 90 IPC_BEGIN_MESSAGE_MAP(BrowserPlugin, message) |
| 98 IPC_MESSAGE_HANDLER(BrowserPluginMsg_Attach_ACK, OnAttachACK) | 91 IPC_MESSAGE_HANDLER(BrowserPluginMsg_Attach_ACK, OnAttachACK) |
| 99 IPC_MESSAGE_HANDLER(BrowserPluginMsg_AdvanceFocus, OnAdvanceFocus) | 92 IPC_MESSAGE_HANDLER(BrowserPluginMsg_AdvanceFocus, OnAdvanceFocus) |
| 100 IPC_MESSAGE_HANDLER_GENERIC(BrowserPluginMsg_CompositorFrameSwapped, | 93 IPC_MESSAGE_HANDLER_GENERIC(BrowserPluginMsg_CompositorFrameSwapped, |
| 101 OnCompositorFrameSwapped(message)) | 94 OnCompositorFrameSwapped(message)) |
| 102 IPC_MESSAGE_HANDLER(BrowserPluginMsg_CopyFromCompositingSurface, | 95 IPC_MESSAGE_HANDLER(BrowserPluginMsg_CopyFromCompositingSurface, |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 void BrowserPlugin::OnAttachACK(int browser_plugin_instance_id) { | 160 void BrowserPlugin::OnAttachACK(int browser_plugin_instance_id) { |
| 168 DCHECK(!attached()); | 161 DCHECK(!attached()); |
| 169 attached_ = true; | 162 attached_ = true; |
| 170 attach_pending_ = false; | 163 attach_pending_ = false; |
| 171 } | 164 } |
| 172 | 165 |
| 173 void BrowserPlugin::OnCompositorFrameSwapped(const IPC::Message& message) { | 166 void BrowserPlugin::OnCompositorFrameSwapped(const IPC::Message& message) { |
| 174 BrowserPluginMsg_CompositorFrameSwapped::Param param; | 167 BrowserPluginMsg_CompositorFrameSwapped::Param param; |
| 175 if (!BrowserPluginMsg_CompositorFrameSwapped::Read(&message, ¶m)) | 168 if (!BrowserPluginMsg_CompositorFrameSwapped::Read(&message, ¶m)) |
| 176 return; | 169 return; |
| 177 | |
| 178 // Note that there is no need to send ACK for this message. | 170 // Note that there is no need to send ACK for this message. |
| 179 // If the guest has updated pixels then it is no longer crashed. | 171 // If the guest has updated pixels then it is no longer crashed. |
| 180 guest_crashed_ = false; | 172 guest_crashed_ = false; |
| 181 | 173 |
| 182 scoped_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); | 174 scoped_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); |
| 183 param.b.frame.AssignTo(frame.get()); | 175 param.b.frame.AssignTo(frame.get()); |
| 184 | 176 |
| 185 EnableCompositing(true); | 177 EnableCompositing(true); |
| 186 compositing_helper_->OnCompositorFrameSwapped(frame.Pass(), | 178 compositing_helper_->OnCompositorFrameSwapped(frame.Pass(), |
| 187 param.b.producing_route_id, | 179 param.b.producing_route_id, |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 310 | 302 |
| 311 bool BrowserPlugin::initialize(WebPluginContainer* container) { | 303 bool BrowserPlugin::initialize(WebPluginContainer* container) { |
| 312 if (!container) | 304 if (!container) |
| 313 return false; | 305 return false; |
| 314 | 306 |
| 315 container_ = container; | 307 container_ = container; |
| 316 container_->setWantsWheelEvents(true); | 308 container_->setWantsWheelEvents(true); |
| 317 | 309 |
| 318 g_plugin_container_map.Get().insert(std::make_pair(container_, this)); | 310 g_plugin_container_map.Get().insert(std::make_pair(container_, this)); |
| 319 | 311 |
| 312 browser_plugin_manager()->AddBrowserPlugin(browser_plugin_instance_id_, this); |
| 313 |
| 320 // This is a way to notify observers of our attributes that this plugin is | 314 // This is a way to notify observers of our attributes that this plugin is |
| 321 // available in render tree. | 315 // available in render tree. |
| 322 // TODO(lazyboy): This should be done through the delegate instead. Perhaps | 316 // TODO(lazyboy): This should be done through the delegate instead. Perhaps |
| 323 // by firing an event from there. | 317 // by firing an event from there. |
| 324 UpdateDOMAttribute("internalinstanceid", | 318 UpdateDOMAttribute("internalinstanceid", |
| 325 base::IntToString(browser_plugin_instance_id_)); | 319 base::IntToString(browser_plugin_instance_id_)); |
| 326 | 320 |
| 327 browser_plugin_manager()->AddBrowserPlugin(browser_plugin_instance_id_, this); | |
| 328 return true; | 321 return true; |
| 329 } | 322 } |
| 330 | 323 |
| 331 void BrowserPlugin::EnableCompositing(bool enable) { | 324 void BrowserPlugin::EnableCompositing(bool enable) { |
| 332 bool enabled = !!compositing_helper_.get(); | 325 bool enabled = !!compositing_helper_.get(); |
| 333 if (enabled == enable) | 326 if (enabled == enable) |
| 334 return; | 327 return; |
| 335 | 328 |
| 336 if (enable) { | 329 if (enable) { |
| 337 DCHECK(!compositing_helper_.get()); | 330 DCHECK(!compositing_helper_.get()); |
| (...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 651 const blink::WebMouseEvent& event) { | 644 const blink::WebMouseEvent& event) { |
| 652 browser_plugin_manager()->Send( | 645 browser_plugin_manager()->Send( |
| 653 new BrowserPluginHostMsg_HandleInputEvent(render_view_routing_id_, | 646 new BrowserPluginHostMsg_HandleInputEvent(render_view_routing_id_, |
| 654 browser_plugin_instance_id_, | 647 browser_plugin_instance_id_, |
| 655 plugin_rect_, | 648 plugin_rect_, |
| 656 &event)); | 649 &event)); |
| 657 return true; | 650 return true; |
| 658 } | 651 } |
| 659 | 652 |
| 660 } // namespace content | 653 } // namespace content |
| OLD | NEW |