| 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/json/json_string_value_serializer.h" | 8 #include "base/json/json_string_value_serializer.h" |
| 9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
| 10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 #include "third_party/WebKit/public/web/WebPluginContainer.h" | 36 #include "third_party/WebKit/public/web/WebPluginContainer.h" |
| 37 #include "third_party/WebKit/public/web/WebPluginParams.h" | 37 #include "third_party/WebKit/public/web/WebPluginParams.h" |
| 38 #include "third_party/WebKit/public/web/WebScriptSource.h" | 38 #include "third_party/WebKit/public/web/WebScriptSource.h" |
| 39 #include "third_party/WebKit/public/web/WebView.h" | 39 #include "third_party/WebKit/public/web/WebView.h" |
| 40 #include "ui/events/keycodes/keyboard_codes.h" | 40 #include "ui/events/keycodes/keyboard_codes.h" |
| 41 | 41 |
| 42 #if defined (OS_WIN) | 42 #if defined (OS_WIN) |
| 43 #include "base/sys_info.h" | 43 #include "base/sys_info.h" |
| 44 #endif | 44 #endif |
| 45 | 45 |
| 46 using WebKit::WebCanvas; | 46 using blink::WebCanvas; |
| 47 using WebKit::WebPluginContainer; | 47 using blink::WebPluginContainer; |
| 48 using WebKit::WebPluginParams; | 48 using blink::WebPluginParams; |
| 49 using WebKit::WebPoint; | 49 using blink::WebPoint; |
| 50 using WebKit::WebRect; | 50 using blink::WebRect; |
| 51 using WebKit::WebURL; | 51 using blink::WebURL; |
| 52 using WebKit::WebVector; | 52 using blink::WebVector; |
| 53 | 53 |
| 54 namespace content { | 54 namespace content { |
| 55 | 55 |
| 56 namespace { | 56 namespace { |
| 57 | 57 |
| 58 static std::string GetInternalEventName(const char* event_name) { | 58 static std::string GetInternalEventName(const char* event_name) { |
| 59 return base::StringPrintf("-internal-%s", event_name); | 59 return base::StringPrintf("-internal-%s", event_name); |
| 60 } | 60 } |
| 61 | 61 |
| 62 typedef std::map<WebKit::WebPluginContainer*, | 62 typedef std::map<blink::WebPluginContainer*, |
| 63 BrowserPlugin*> PluginContainerMap; | 63 BrowserPlugin*> PluginContainerMap; |
| 64 static base::LazyInstance<PluginContainerMap> g_plugin_container_map = | 64 static base::LazyInstance<PluginContainerMap> g_plugin_container_map = |
| 65 LAZY_INSTANCE_INITIALIZER; | 65 LAZY_INSTANCE_INITIALIZER; |
| 66 | 66 |
| 67 } // namespace | 67 } // namespace |
| 68 | 68 |
| 69 BrowserPlugin::BrowserPlugin( | 69 BrowserPlugin::BrowserPlugin( |
| 70 RenderViewImpl* render_view, | 70 RenderViewImpl* render_view, |
| 71 WebKit::WebFrame* frame, | 71 blink::WebFrame* frame, |
| 72 const WebPluginParams& params) | 72 const WebPluginParams& params) |
| 73 : guest_instance_id_(browser_plugin::kInstanceIDNone), | 73 : guest_instance_id_(browser_plugin::kInstanceIDNone), |
| 74 attached_(false), | 74 attached_(false), |
| 75 render_view_(render_view->AsWeakPtr()), | 75 render_view_(render_view->AsWeakPtr()), |
| 76 render_view_routing_id_(render_view->GetRoutingID()), | 76 render_view_routing_id_(render_view->GetRoutingID()), |
| 77 container_(NULL), | 77 container_(NULL), |
| 78 damage_buffer_sequence_id_(0), | 78 damage_buffer_sequence_id_(0), |
| 79 paint_ack_received_(true), | 79 paint_ack_received_(true), |
| 80 last_device_scale_factor_(1.0f), | 80 last_device_scale_factor_(1.0f), |
| 81 sad_guest_(NULL), | 81 sad_guest_(NULL), |
| (...skipping 19 matching lines...) Expand all Loading... |
| 101 if (!HasGuestInstanceID()) | 101 if (!HasGuestInstanceID()) |
| 102 return; | 102 return; |
| 103 browser_plugin_manager()->RemoveBrowserPlugin(guest_instance_id_); | 103 browser_plugin_manager()->RemoveBrowserPlugin(guest_instance_id_); |
| 104 browser_plugin_manager()->Send( | 104 browser_plugin_manager()->Send( |
| 105 new BrowserPluginHostMsg_PluginDestroyed(render_view_routing_id_, | 105 new BrowserPluginHostMsg_PluginDestroyed(render_view_routing_id_, |
| 106 guest_instance_id_)); | 106 guest_instance_id_)); |
| 107 } | 107 } |
| 108 | 108 |
| 109 /*static*/ | 109 /*static*/ |
| 110 BrowserPlugin* BrowserPlugin::FromContainer( | 110 BrowserPlugin* BrowserPlugin::FromContainer( |
| 111 WebKit::WebPluginContainer* container) { | 111 blink::WebPluginContainer* container) { |
| 112 PluginContainerMap* browser_plugins = g_plugin_container_map.Pointer(); | 112 PluginContainerMap* browser_plugins = g_plugin_container_map.Pointer(); |
| 113 PluginContainerMap::iterator it = browser_plugins->find(container); | 113 PluginContainerMap::iterator it = browser_plugins->find(container); |
| 114 return it == browser_plugins->end() ? NULL : it->second; | 114 return it == browser_plugins->end() ? NULL : it->second; |
| 115 } | 115 } |
| 116 | 116 |
| 117 bool BrowserPlugin::OnMessageReceived(const IPC::Message& message) { | 117 bool BrowserPlugin::OnMessageReceived(const IPC::Message& message) { |
| 118 bool handled = true; | 118 bool handled = true; |
| 119 IPC_BEGIN_MESSAGE_MAP(BrowserPlugin, message) | 119 IPC_BEGIN_MESSAGE_MAP(BrowserPlugin, message) |
| 120 IPC_MESSAGE_HANDLER(BrowserPluginMsg_AdvanceFocus, OnAdvanceFocus) | 120 IPC_MESSAGE_HANDLER(BrowserPluginMsg_AdvanceFocus, OnAdvanceFocus) |
| 121 IPC_MESSAGE_HANDLER(BrowserPluginMsg_Attach_ACK, OnAttachACK) | 121 IPC_MESSAGE_HANDLER(BrowserPluginMsg_Attach_ACK, OnAttachACK) |
| (...skipping 12 matching lines...) Expand all Loading... |
| 134 IPC_MESSAGE_UNHANDLED(handled = false) | 134 IPC_MESSAGE_UNHANDLED(handled = false) |
| 135 IPC_END_MESSAGE_MAP() | 135 IPC_END_MESSAGE_MAP() |
| 136 return handled; | 136 return handled; |
| 137 } | 137 } |
| 138 | 138 |
| 139 void BrowserPlugin::UpdateDOMAttribute(const std::string& attribute_name, | 139 void BrowserPlugin::UpdateDOMAttribute(const std::string& attribute_name, |
| 140 const std::string& attribute_value) { | 140 const std::string& attribute_value) { |
| 141 if (!container()) | 141 if (!container()) |
| 142 return; | 142 return; |
| 143 | 143 |
| 144 WebKit::WebElement element = container()->element(); | 144 blink::WebElement element = container()->element(); |
| 145 WebKit::WebString web_attribute_name = | 145 blink::WebString web_attribute_name = |
| 146 WebKit::WebString::fromUTF8(attribute_name); | 146 blink::WebString::fromUTF8(attribute_name); |
| 147 if (!HasDOMAttribute(attribute_name) || | 147 if (!HasDOMAttribute(attribute_name) || |
| 148 (std::string(element.getAttribute(web_attribute_name).utf8()) != | 148 (std::string(element.getAttribute(web_attribute_name).utf8()) != |
| 149 attribute_value)) { | 149 attribute_value)) { |
| 150 element.setAttribute(web_attribute_name, | 150 element.setAttribute(web_attribute_name, |
| 151 WebKit::WebString::fromUTF8(attribute_value)); | 151 blink::WebString::fromUTF8(attribute_value)); |
| 152 } | 152 } |
| 153 } | 153 } |
| 154 | 154 |
| 155 void BrowserPlugin::RemoveDOMAttribute(const std::string& attribute_name) { | 155 void BrowserPlugin::RemoveDOMAttribute(const std::string& attribute_name) { |
| 156 if (!container()) | 156 if (!container()) |
| 157 return; | 157 return; |
| 158 | 158 |
| 159 container()->element().removeAttribute( | 159 container()->element().removeAttribute( |
| 160 WebKit::WebString::fromUTF8(attribute_name)); | 160 blink::WebString::fromUTF8(attribute_name)); |
| 161 } | 161 } |
| 162 | 162 |
| 163 std::string BrowserPlugin::GetDOMAttributeValue( | 163 std::string BrowserPlugin::GetDOMAttributeValue( |
| 164 const std::string& attribute_name) const { | 164 const std::string& attribute_name) const { |
| 165 if (!container()) | 165 if (!container()) |
| 166 return std::string(); | 166 return std::string(); |
| 167 | 167 |
| 168 return container()->element().getAttribute( | 168 return container()->element().getAttribute( |
| 169 WebKit::WebString::fromUTF8(attribute_name)).utf8(); | 169 blink::WebString::fromUTF8(attribute_name)).utf8(); |
| 170 } | 170 } |
| 171 | 171 |
| 172 bool BrowserPlugin::HasDOMAttribute(const std::string& attribute_name) const { | 172 bool BrowserPlugin::HasDOMAttribute(const std::string& attribute_name) const { |
| 173 if (!container()) | 173 if (!container()) |
| 174 return false; | 174 return false; |
| 175 | 175 |
| 176 return container()->element().hasAttribute( | 176 return container()->element().hasAttribute( |
| 177 WebKit::WebString::fromUTF8(attribute_name)); | 177 blink::WebString::fromUTF8(attribute_name)); |
| 178 } | 178 } |
| 179 | 179 |
| 180 std::string BrowserPlugin::GetNameAttribute() const { | 180 std::string BrowserPlugin::GetNameAttribute() const { |
| 181 return GetDOMAttributeValue(browser_plugin::kAttributeName); | 181 return GetDOMAttributeValue(browser_plugin::kAttributeName); |
| 182 } | 182 } |
| 183 | 183 |
| 184 std::string BrowserPlugin::GetSrcAttribute() const { | 184 std::string BrowserPlugin::GetSrcAttribute() const { |
| 185 return GetDOMAttributeValue(browser_plugin::kAttributeSrc); | 185 return GetDOMAttributeValue(browser_plugin::kAttributeSrc); |
| 186 } | 186 } |
| 187 | 187 |
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 474 return; | 474 return; |
| 475 } | 475 } |
| 476 render_view_->mouse_lock_dispatcher()->UnlockMouse(this); | 476 render_view_->mouse_lock_dispatcher()->UnlockMouse(this); |
| 477 } | 477 } |
| 478 } | 478 } |
| 479 | 479 |
| 480 void BrowserPlugin::OnShouldAcceptTouchEvents(int guest_instance_id, | 480 void BrowserPlugin::OnShouldAcceptTouchEvents(int guest_instance_id, |
| 481 bool accept) { | 481 bool accept) { |
| 482 if (container()) { | 482 if (container()) { |
| 483 container()->requestTouchEventType(accept ? | 483 container()->requestTouchEventType(accept ? |
| 484 WebKit::WebPluginContainer::TouchEventRequestTypeRaw : | 484 blink::WebPluginContainer::TouchEventRequestTypeRaw : |
| 485 WebKit::WebPluginContainer::TouchEventRequestTypeNone); | 485 blink::WebPluginContainer::TouchEventRequestTypeNone); |
| 486 } | 486 } |
| 487 } | 487 } |
| 488 | 488 |
| 489 void BrowserPlugin::OnUpdatedName(int guest_instance_id, | 489 void BrowserPlugin::OnUpdatedName(int guest_instance_id, |
| 490 const std::string& name) { | 490 const std::string& name) { |
| 491 UpdateDOMAttribute(browser_plugin::kAttributeName, name); | 491 UpdateDOMAttribute(browser_plugin::kAttributeName, name); |
| 492 } | 492 } |
| 493 | 493 |
| 494 void BrowserPlugin::OnUpdateRect( | 494 void BrowserPlugin::OnUpdateRect( |
| 495 int guest_instance_id, | 495 int guest_instance_id, |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 629 size.height() <= GetAdjustedMaxHeight(); | 629 size.height() <= GetAdjustedMaxHeight(); |
| 630 } | 630 } |
| 631 | 631 |
| 632 NPObject* BrowserPlugin::GetContentWindow() const { | 632 NPObject* BrowserPlugin::GetContentWindow() const { |
| 633 if (content_window_routing_id_ == MSG_ROUTING_NONE) | 633 if (content_window_routing_id_ == MSG_ROUTING_NONE) |
| 634 return NULL; | 634 return NULL; |
| 635 RenderViewImpl* guest_render_view = RenderViewImpl::FromRoutingID( | 635 RenderViewImpl* guest_render_view = RenderViewImpl::FromRoutingID( |
| 636 content_window_routing_id_); | 636 content_window_routing_id_); |
| 637 if (!guest_render_view) | 637 if (!guest_render_view) |
| 638 return NULL; | 638 return NULL; |
| 639 WebKit::WebFrame* guest_frame = guest_render_view->GetWebView()->mainFrame(); | 639 blink::WebFrame* guest_frame = guest_render_view->GetWebView()->mainFrame(); |
| 640 return guest_frame->windowObject(); | 640 return guest_frame->windowObject(); |
| 641 } | 641 } |
| 642 | 642 |
| 643 // static | 643 // static |
| 644 bool BrowserPlugin::AttachWindowTo(const WebKit::WebNode& node, int window_id) { | 644 bool BrowserPlugin::AttachWindowTo(const blink::WebNode& node, int window_id) { |
| 645 if (node.isNull()) | 645 if (node.isNull()) |
| 646 return false; | 646 return false; |
| 647 | 647 |
| 648 if (!node.isElementNode()) | 648 if (!node.isElementNode()) |
| 649 return false; | 649 return false; |
| 650 | 650 |
| 651 WebKit::WebElement shim_element = node.toConst<WebKit::WebElement>(); | 651 blink::WebElement shim_element = node.toConst<blink::WebElement>(); |
| 652 // The shim containing the BrowserPlugin must be attached to a document. | 652 // The shim containing the BrowserPlugin must be attached to a document. |
| 653 if (shim_element.document().isNull()) | 653 if (shim_element.document().isNull()) |
| 654 return false; | 654 return false; |
| 655 | 655 |
| 656 WebKit::WebNode shadow_root = shim_element.shadowRoot(); | 656 blink::WebNode shadow_root = shim_element.shadowRoot(); |
| 657 if (shadow_root.isNull() || !shadow_root.hasChildNodes()) | 657 if (shadow_root.isNull() || !shadow_root.hasChildNodes()) |
| 658 return false; | 658 return false; |
| 659 | 659 |
| 660 WebKit::WebNode plugin_element = shadow_root.firstChild(); | 660 blink::WebNode plugin_element = shadow_root.firstChild(); |
| 661 WebKit::WebPluginContainer* plugin_container = | 661 blink::WebPluginContainer* plugin_container = |
| 662 plugin_element.pluginContainer(); | 662 plugin_element.pluginContainer(); |
| 663 if (!plugin_container) | 663 if (!plugin_container) |
| 664 return false; | 664 return false; |
| 665 | 665 |
| 666 BrowserPlugin* browser_plugin = | 666 BrowserPlugin* browser_plugin = |
| 667 BrowserPlugin::FromContainer(plugin_container); | 667 BrowserPlugin::FromContainer(plugin_container); |
| 668 if (!browser_plugin) | 668 if (!browser_plugin) |
| 669 return false; | 669 return false; |
| 670 | 670 |
| 671 // If the BrowserPlugin has already begun to navigate then we shouldn't allow | 671 // If the BrowserPlugin has already begun to navigate then we shouldn't allow |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 775 render_view_routing_id_, | 775 render_view_routing_id_, |
| 776 guest_instance_id_, | 776 guest_instance_id_, |
| 777 params)); | 777 params)); |
| 778 } | 778 } |
| 779 | 779 |
| 780 void BrowserPlugin::TriggerEvent(const std::string& event_name, | 780 void BrowserPlugin::TriggerEvent(const std::string& event_name, |
| 781 std::map<std::string, base::Value*>* props) { | 781 std::map<std::string, base::Value*>* props) { |
| 782 if (!container()) | 782 if (!container()) |
| 783 return; | 783 return; |
| 784 | 784 |
| 785 WebKit::WebFrame* frame = container()->element().document().frame(); | 785 blink::WebFrame* frame = container()->element().document().frame(); |
| 786 if (!frame) | 786 if (!frame) |
| 787 return; | 787 return; |
| 788 | 788 |
| 789 v8::HandleScope handle_scope(v8::Isolate::GetCurrent()); | 789 v8::HandleScope handle_scope(v8::Isolate::GetCurrent()); |
| 790 v8::Local<v8::Context> context = frame->mainWorldScriptContext(); | 790 v8::Local<v8::Context> context = frame->mainWorldScriptContext(); |
| 791 v8::Context::Scope context_scope(context); | 791 v8::Context::Scope context_scope(context); |
| 792 | 792 |
| 793 std::string json_string; | 793 std::string json_string; |
| 794 if (props) { | 794 if (props) { |
| 795 base::DictionaryValue dict; | 795 base::DictionaryValue dict; |
| 796 for (std::map<std::string, base::Value*>::iterator iter = props->begin(), | 796 for (std::map<std::string, base::Value*>::iterator iter = props->begin(), |
| 797 end = props->end(); iter != end; ++iter) { | 797 end = props->end(); iter != end; ++iter) { |
| 798 dict.Set(iter->first, iter->second); | 798 dict.Set(iter->first, iter->second); |
| 799 } | 799 } |
| 800 | 800 |
| 801 JSONStringValueSerializer serializer(&json_string); | 801 JSONStringValueSerializer serializer(&json_string); |
| 802 if (!serializer.Serialize(dict)) | 802 if (!serializer.Serialize(dict)) |
| 803 return; | 803 return; |
| 804 } | 804 } |
| 805 | 805 |
| 806 WebKit::WebDOMEvent dom_event = frame->document().createEvent("CustomEvent"); | 806 blink::WebDOMEvent dom_event = frame->document().createEvent("CustomEvent"); |
| 807 WebKit::WebDOMCustomEvent event = dom_event.to<WebKit::WebDOMCustomEvent>(); | 807 blink::WebDOMCustomEvent event = dom_event.to<blink::WebDOMCustomEvent>(); |
| 808 | 808 |
| 809 // The events triggered directly from the plugin <object> are internal events | 809 // The events triggered directly from the plugin <object> are internal events |
| 810 // whose implementation details can (and likely will) change over time. The | 810 // whose implementation details can (and likely will) change over time. The |
| 811 // wrapper/shim (e.g. <webview> tag) should receive these events, and expose a | 811 // wrapper/shim (e.g. <webview> tag) should receive these events, and expose a |
| 812 // more appropriate (and stable) event to the consumers as part of the API. | 812 // more appropriate (and stable) event to the consumers as part of the API. |
| 813 event.initCustomEvent( | 813 event.initCustomEvent( |
| 814 WebKit::WebString::fromUTF8(GetInternalEventName(event_name.c_str())), | 814 blink::WebString::fromUTF8(GetInternalEventName(event_name.c_str())), |
| 815 false, false, | 815 false, false, |
| 816 WebKit::WebSerializedScriptValue::serialize( | 816 blink::WebSerializedScriptValue::serialize( |
| 817 v8::String::New(json_string.c_str(), json_string.size()))); | 817 v8::String::New(json_string.c_str(), json_string.size()))); |
| 818 container()->element().dispatchEvent(event); | 818 container()->element().dispatchEvent(event); |
| 819 } | 819 } |
| 820 | 820 |
| 821 void BrowserPlugin::UpdateGuestFocusState() { | 821 void BrowserPlugin::UpdateGuestFocusState() { |
| 822 if (!HasGuestInstanceID()) | 822 if (!HasGuestInstanceID()) |
| 823 return; | 823 return; |
| 824 bool should_be_focused = ShouldGuestBeFocused(); | 824 bool should_be_focused = ShouldGuestBeFocused(); |
| 825 browser_plugin_manager()->Send(new BrowserPluginHostMsg_SetFocus( | 825 browser_plugin_manager()->Send(new BrowserPluginHostMsg_SetFocus( |
| 826 render_view_routing_id_, | 826 render_view_routing_id_, |
| 827 guest_instance_id_, | 827 guest_instance_id_, |
| 828 should_be_focused)); | 828 should_be_focused)); |
| 829 } | 829 } |
| 830 | 830 |
| 831 bool BrowserPlugin::ShouldGuestBeFocused() const { | 831 bool BrowserPlugin::ShouldGuestBeFocused() const { |
| 832 bool embedder_focused = false; | 832 bool embedder_focused = false; |
| 833 if (render_view_.get()) | 833 if (render_view_.get()) |
| 834 embedder_focused = render_view_->has_focus(); | 834 embedder_focused = render_view_->has_focus(); |
| 835 return plugin_focused_ && embedder_focused; | 835 return plugin_focused_ && embedder_focused; |
| 836 } | 836 } |
| 837 | 837 |
| 838 WebKit::WebPluginContainer* BrowserPlugin::container() const { | 838 blink::WebPluginContainer* BrowserPlugin::container() const { |
| 839 return container_; | 839 return container_; |
| 840 } | 840 } |
| 841 | 841 |
| 842 bool BrowserPlugin::initialize(WebPluginContainer* container) { | 842 bool BrowserPlugin::initialize(WebPluginContainer* container) { |
| 843 if (!container) | 843 if (!container) |
| 844 return false; | 844 return false; |
| 845 | 845 |
| 846 if (!GetContentClient()->renderer()->AllowBrowserPlugin(container)) | 846 if (!GetContentClient()->renderer()->AllowBrowserPlugin(container)) |
| 847 return false; | 847 return false; |
| 848 | 848 |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 911 render_view_->mouse_lock_dispatcher()->OnLockTargetDestroyed(this); | 911 render_view_->mouse_lock_dispatcher()->OnLockTargetDestroyed(this); |
| 912 base::MessageLoop::current()->DeleteSoon(FROM_HERE, this); | 912 base::MessageLoop::current()->DeleteSoon(FROM_HERE, this); |
| 913 } | 913 } |
| 914 | 914 |
| 915 NPObject* BrowserPlugin::scriptableObject() { | 915 NPObject* BrowserPlugin::scriptableObject() { |
| 916 if (!bindings_) | 916 if (!bindings_) |
| 917 return NULL; | 917 return NULL; |
| 918 | 918 |
| 919 NPObject* browser_plugin_np_object(bindings_->np_object()); | 919 NPObject* browser_plugin_np_object(bindings_->np_object()); |
| 920 // The object is expected to be retained before it is returned. | 920 // The object is expected to be retained before it is returned. |
| 921 WebKit::WebBindings::retainObject(browser_plugin_np_object); | 921 blink::WebBindings::retainObject(browser_plugin_np_object); |
| 922 return browser_plugin_np_object; | 922 return browser_plugin_np_object; |
| 923 } | 923 } |
| 924 | 924 |
| 925 NPP BrowserPlugin::pluginNPP() { | 925 NPP BrowserPlugin::pluginNPP() { |
| 926 return npp_.get(); | 926 return npp_.get(); |
| 927 } | 927 } |
| 928 | 928 |
| 929 bool BrowserPlugin::supportsKeyboardFocus() const { | 929 bool BrowserPlugin::supportsKeyboardFocus() const { |
| 930 return true; | 930 return true; |
| 931 } | 931 } |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 983 // This also does not take overlapping plugins into account. | 983 // This also does not take overlapping plugins into account. |
| 984 bool result = position.x() >= plugin_rect_.x() && | 984 bool result = position.x() >= plugin_rect_.x() && |
| 985 position.x() < plugin_rect_.x() + plugin_rect_.width() && | 985 position.x() < plugin_rect_.x() + plugin_rect_.width() && |
| 986 position.y() >= plugin_rect_.y() && | 986 position.y() >= plugin_rect_.y() && |
| 987 position.y() < plugin_rect_.y() + plugin_rect_.height(); | 987 position.y() < plugin_rect_.y() + plugin_rect_.height(); |
| 988 return result; | 988 return result; |
| 989 } | 989 } |
| 990 | 990 |
| 991 gfx::Point BrowserPlugin::ToLocalCoordinates(const gfx::Point& point) const { | 991 gfx::Point BrowserPlugin::ToLocalCoordinates(const gfx::Point& point) const { |
| 992 if (container_) | 992 if (container_) |
| 993 return container_->windowToLocalPoint(WebKit::WebPoint(point)); | 993 return container_->windowToLocalPoint(blink::WebPoint(point)); |
| 994 return gfx::Point(point.x() - plugin_rect_.x(), point.y() - plugin_rect_.y()); | 994 return gfx::Point(point.x() - plugin_rect_.x(), point.y() - plugin_rect_.y()); |
| 995 } | 995 } |
| 996 | 996 |
| 997 // static | 997 // static |
| 998 bool BrowserPlugin::ShouldForwardToBrowserPlugin( | 998 bool BrowserPlugin::ShouldForwardToBrowserPlugin( |
| 999 const IPC::Message& message) { | 999 const IPC::Message& message) { |
| 1000 switch (message.type()) { | 1000 switch (message.type()) { |
| 1001 case BrowserPluginMsg_AdvanceFocus::ID: | 1001 case BrowserPluginMsg_AdvanceFocus::ID: |
| 1002 case BrowserPluginMsg_Attach_ACK::ID: | 1002 case BrowserPluginMsg_Attach_ACK::ID: |
| 1003 case BrowserPluginMsg_BuffersSwapped::ID: | 1003 case BrowserPluginMsg_BuffersSwapped::ID: |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1175 browser_plugin_manager()->Send(new BrowserPluginHostMsg_SetVisibility( | 1175 browser_plugin_manager()->Send(new BrowserPluginHostMsg_SetVisibility( |
| 1176 render_view_routing_id_, | 1176 render_view_routing_id_, |
| 1177 guest_instance_id_, | 1177 guest_instance_id_, |
| 1178 visible)); | 1178 visible)); |
| 1179 } | 1179 } |
| 1180 | 1180 |
| 1181 bool BrowserPlugin::acceptsInputEvents() { | 1181 bool BrowserPlugin::acceptsInputEvents() { |
| 1182 return true; | 1182 return true; |
| 1183 } | 1183 } |
| 1184 | 1184 |
| 1185 bool BrowserPlugin::handleInputEvent(const WebKit::WebInputEvent& event, | 1185 bool BrowserPlugin::handleInputEvent(const blink::WebInputEvent& event, |
| 1186 WebKit::WebCursorInfo& cursor_info) { | 1186 blink::WebCursorInfo& cursor_info) { |
| 1187 if (guest_crashed_ || !HasGuestInstanceID()) | 1187 if (guest_crashed_ || !HasGuestInstanceID()) |
| 1188 return false; | 1188 return false; |
| 1189 | 1189 |
| 1190 if (event.type == WebKit::WebInputEvent::ContextMenu) | 1190 if (event.type == blink::WebInputEvent::ContextMenu) |
| 1191 return true; | 1191 return true; |
| 1192 | 1192 |
| 1193 const WebKit::WebInputEvent* modified_event = &event; | 1193 const blink::WebInputEvent* modified_event = &event; |
| 1194 scoped_ptr<WebKit::WebTouchEvent> touch_event; | 1194 scoped_ptr<blink::WebTouchEvent> touch_event; |
| 1195 // WebKit gives BrowserPlugin a list of touches that are down, but the browser | 1195 // WebKit gives BrowserPlugin a list of touches that are down, but the browser |
| 1196 // process expects a list of all touches. We modify the TouchEnd event here to | 1196 // process expects a list of all touches. We modify the TouchEnd event here to |
| 1197 // match these expectations. | 1197 // match these expectations. |
| 1198 if (event.type == WebKit::WebInputEvent::TouchEnd) { | 1198 if (event.type == blink::WebInputEvent::TouchEnd) { |
| 1199 const WebKit::WebTouchEvent* orig_touch_event = | 1199 const blink::WebTouchEvent* orig_touch_event = |
| 1200 static_cast<const WebKit::WebTouchEvent*>(&event); | 1200 static_cast<const blink::WebTouchEvent*>(&event); |
| 1201 touch_event.reset(new WebKit::WebTouchEvent()); | 1201 touch_event.reset(new blink::WebTouchEvent()); |
| 1202 memcpy(touch_event.get(), orig_touch_event, sizeof(WebKit::WebTouchEvent)); | 1202 memcpy(touch_event.get(), orig_touch_event, sizeof(blink::WebTouchEvent)); |
| 1203 if (touch_event->changedTouchesLength > 0) { | 1203 if (touch_event->changedTouchesLength > 0) { |
| 1204 memcpy(&touch_event->touches[touch_event->touchesLength], | 1204 memcpy(&touch_event->touches[touch_event->touchesLength], |
| 1205 &touch_event->changedTouches, | 1205 &touch_event->changedTouches, |
| 1206 touch_event->changedTouchesLength * sizeof(WebKit::WebTouchPoint)); | 1206 touch_event->changedTouchesLength * sizeof(blink::WebTouchPoint)); |
| 1207 } | 1207 } |
| 1208 touch_event->touchesLength += touch_event->changedTouchesLength; | 1208 touch_event->touchesLength += touch_event->changedTouchesLength; |
| 1209 modified_event = touch_event.get(); | 1209 modified_event = touch_event.get(); |
| 1210 } | 1210 } |
| 1211 | 1211 |
| 1212 if (WebKit::WebInputEvent::isKeyboardEventType(event.type) && | 1212 if (blink::WebInputEvent::isKeyboardEventType(event.type) && |
| 1213 !edit_commands_.empty()) { | 1213 !edit_commands_.empty()) { |
| 1214 browser_plugin_manager()->Send( | 1214 browser_plugin_manager()->Send( |
| 1215 new BrowserPluginHostMsg_SetEditCommandsForNextKeyEvent( | 1215 new BrowserPluginHostMsg_SetEditCommandsForNextKeyEvent( |
| 1216 render_view_routing_id_, | 1216 render_view_routing_id_, |
| 1217 guest_instance_id_, | 1217 guest_instance_id_, |
| 1218 edit_commands_)); | 1218 edit_commands_)); |
| 1219 edit_commands_.clear(); | 1219 edit_commands_.clear(); |
| 1220 } | 1220 } |
| 1221 | 1221 |
| 1222 browser_plugin_manager()->Send( | 1222 browser_plugin_manager()->Send( |
| 1223 new BrowserPluginHostMsg_HandleInputEvent(render_view_routing_id_, | 1223 new BrowserPluginHostMsg_HandleInputEvent(render_view_routing_id_, |
| 1224 guest_instance_id_, | 1224 guest_instance_id_, |
| 1225 plugin_rect_, | 1225 plugin_rect_, |
| 1226 modified_event)); | 1226 modified_event)); |
| 1227 GetWebKitCursorInfo(cursor_, &cursor_info); | 1227 GetWebKitCursorInfo(cursor_, &cursor_info); |
| 1228 return true; | 1228 return true; |
| 1229 } | 1229 } |
| 1230 | 1230 |
| 1231 bool BrowserPlugin::handleDragStatusUpdate(WebKit::WebDragStatus drag_status, | 1231 bool BrowserPlugin::handleDragStatusUpdate(blink::WebDragStatus drag_status, |
| 1232 const WebKit::WebDragData& drag_data, | 1232 const blink::WebDragData& drag_data, |
| 1233 WebKit::WebDragOperationsMask mask, | 1233 blink::WebDragOperationsMask mask, |
| 1234 const WebKit::WebPoint& position, | 1234 const blink::WebPoint& position, |
| 1235 const WebKit::WebPoint& screen) { | 1235 const blink::WebPoint& screen) { |
| 1236 if (guest_crashed_ || !HasGuestInstanceID()) | 1236 if (guest_crashed_ || !HasGuestInstanceID()) |
| 1237 return false; | 1237 return false; |
| 1238 browser_plugin_manager()->Send( | 1238 browser_plugin_manager()->Send( |
| 1239 new BrowserPluginHostMsg_DragStatusUpdate( | 1239 new BrowserPluginHostMsg_DragStatusUpdate( |
| 1240 render_view_routing_id_, | 1240 render_view_routing_id_, |
| 1241 guest_instance_id_, | 1241 guest_instance_id_, |
| 1242 drag_status, | 1242 drag_status, |
| 1243 DropDataBuilder::Build(drag_data), | 1243 DropDataBuilder::Build(drag_data), |
| 1244 mask, | 1244 mask, |
| 1245 position)); | 1245 position)); |
| 1246 return true; | 1246 return true; |
| 1247 } | 1247 } |
| 1248 | 1248 |
| 1249 void BrowserPlugin::didReceiveResponse( | 1249 void BrowserPlugin::didReceiveResponse( |
| 1250 const WebKit::WebURLResponse& response) { | 1250 const blink::WebURLResponse& response) { |
| 1251 } | 1251 } |
| 1252 | 1252 |
| 1253 void BrowserPlugin::didReceiveData(const char* data, int data_length) { | 1253 void BrowserPlugin::didReceiveData(const char* data, int data_length) { |
| 1254 } | 1254 } |
| 1255 | 1255 |
| 1256 void BrowserPlugin::didFinishLoading() { | 1256 void BrowserPlugin::didFinishLoading() { |
| 1257 } | 1257 } |
| 1258 | 1258 |
| 1259 void BrowserPlugin::didFailLoading(const WebKit::WebURLError& error) { | 1259 void BrowserPlugin::didFailLoading(const blink::WebURLError& error) { |
| 1260 } | 1260 } |
| 1261 | 1261 |
| 1262 void BrowserPlugin::didFinishLoadingFrameRequest(const WebKit::WebURL& url, | 1262 void BrowserPlugin::didFinishLoadingFrameRequest(const blink::WebURL& url, |
| 1263 void* notify_data) { | 1263 void* notify_data) { |
| 1264 } | 1264 } |
| 1265 | 1265 |
| 1266 void BrowserPlugin::didFailLoadingFrameRequest( | 1266 void BrowserPlugin::didFailLoadingFrameRequest( |
| 1267 const WebKit::WebURL& url, | 1267 const blink::WebURL& url, |
| 1268 void* notify_data, | 1268 void* notify_data, |
| 1269 const WebKit::WebURLError& error) { | 1269 const blink::WebURLError& error) { |
| 1270 } | 1270 } |
| 1271 | 1271 |
| 1272 bool BrowserPlugin::executeEditCommand(const WebKit::WebString& name) { | 1272 bool BrowserPlugin::executeEditCommand(const blink::WebString& name) { |
| 1273 browser_plugin_manager()->Send(new BrowserPluginHostMsg_ExecuteEditCommand( | 1273 browser_plugin_manager()->Send(new BrowserPluginHostMsg_ExecuteEditCommand( |
| 1274 render_view_routing_id_, | 1274 render_view_routing_id_, |
| 1275 guest_instance_id_, | 1275 guest_instance_id_, |
| 1276 name.utf8())); | 1276 name.utf8())); |
| 1277 | 1277 |
| 1278 // BrowserPlugin swallows edit commands. | 1278 // BrowserPlugin swallows edit commands. |
| 1279 return true; | 1279 return true; |
| 1280 } | 1280 } |
| 1281 | 1281 |
| 1282 bool BrowserPlugin::executeEditCommand(const WebKit::WebString& name, | 1282 bool BrowserPlugin::executeEditCommand(const blink::WebString& name, |
| 1283 const WebKit::WebString& value) { | 1283 const blink::WebString& value) { |
| 1284 edit_commands_.push_back(EditCommand(name.utf8(), value.utf8())); | 1284 edit_commands_.push_back(EditCommand(name.utf8(), value.utf8())); |
| 1285 // BrowserPlugin swallows edit commands. | 1285 // BrowserPlugin swallows edit commands. |
| 1286 return true; | 1286 return true; |
| 1287 } | 1287 } |
| 1288 | 1288 |
| 1289 void BrowserPlugin::OnLockMouseACK(bool succeeded) { | 1289 void BrowserPlugin::OnLockMouseACK(bool succeeded) { |
| 1290 mouse_locked_ = succeeded; | 1290 mouse_locked_ = succeeded; |
| 1291 browser_plugin_manager()->Send(new BrowserPluginHostMsg_LockMouse_ACK( | 1291 browser_plugin_manager()->Send(new BrowserPluginHostMsg_LockMouse_ACK( |
| 1292 render_view_routing_id_, | 1292 render_view_routing_id_, |
| 1293 guest_instance_id_, | 1293 guest_instance_id_, |
| 1294 succeeded)); | 1294 succeeded)); |
| 1295 } | 1295 } |
| 1296 | 1296 |
| 1297 void BrowserPlugin::OnMouseLockLost() { | 1297 void BrowserPlugin::OnMouseLockLost() { |
| 1298 mouse_locked_ = false; | 1298 mouse_locked_ = false; |
| 1299 browser_plugin_manager()->Send(new BrowserPluginHostMsg_UnlockMouse_ACK( | 1299 browser_plugin_manager()->Send(new BrowserPluginHostMsg_UnlockMouse_ACK( |
| 1300 render_view_routing_id_, | 1300 render_view_routing_id_, |
| 1301 guest_instance_id_)); | 1301 guest_instance_id_)); |
| 1302 } | 1302 } |
| 1303 | 1303 |
| 1304 bool BrowserPlugin::HandleMouseLockedInputEvent( | 1304 bool BrowserPlugin::HandleMouseLockedInputEvent( |
| 1305 const WebKit::WebMouseEvent& event) { | 1305 const blink::WebMouseEvent& event) { |
| 1306 browser_plugin_manager()->Send( | 1306 browser_plugin_manager()->Send( |
| 1307 new BrowserPluginHostMsg_HandleInputEvent(render_view_routing_id_, | 1307 new BrowserPluginHostMsg_HandleInputEvent(render_view_routing_id_, |
| 1308 guest_instance_id_, | 1308 guest_instance_id_, |
| 1309 plugin_rect_, | 1309 plugin_rect_, |
| 1310 &event)); | 1310 &event)); |
| 1311 return true; | 1311 return true; |
| 1312 } | 1312 } |
| 1313 | 1313 |
| 1314 } // namespace content | 1314 } // namespace content |
| OLD | NEW |