| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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/browser/browser_plugin/browser_plugin_guest.h" | 5 #include "content/browser/browser_plugin/browser_plugin_guest.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
| 10 #include "base/pickle.h" | 10 #include "base/pickle.h" |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 125 void BrowserPluginGuest::WillDestroy() { | 125 void BrowserPluginGuest::WillDestroy() { |
| 126 is_in_destruction_ = true; | 126 is_in_destruction_ = true; |
| 127 owner_web_contents_ = NULL; | 127 owner_web_contents_ = NULL; |
| 128 attached_ = false; | 128 attached_ = false; |
| 129 } | 129 } |
| 130 | 130 |
| 131 base::WeakPtr<BrowserPluginGuest> BrowserPluginGuest::AsWeakPtr() { | 131 base::WeakPtr<BrowserPluginGuest> BrowserPluginGuest::AsWeakPtr() { |
| 132 return weak_ptr_factory_.GetWeakPtr(); | 132 return weak_ptr_factory_.GetWeakPtr(); |
| 133 } | 133 } |
| 134 | 134 |
| 135 void BrowserPluginGuest::SetFocus(RenderWidgetHost* rwh, bool focused) { | 135 void BrowserPluginGuest::SetFocus(RenderWidgetHost* rwh, |
| 136 bool focused, |
| 137 blink::WebFocusType focus_type) { |
| 136 focused_ = focused; | 138 focused_ = focused; |
| 137 if (!rwh) | 139 if (!rwh) |
| 138 return; | 140 return; |
| 139 | 141 |
| 142 if ((focus_type == blink::WebFocusTypeForward) || |
| 143 (focus_type == blink::WebFocusTypeBackward)) { |
| 144 static_cast<RenderViewHostImpl*>(RenderViewHost::From(rwh))-> |
| 145 SetInitialFocus(focus_type == blink::WebFocusTypeBackward); |
| 146 } |
| 140 rwh->Send(new InputMsg_SetFocus(rwh->GetRoutingID(), focused)); | 147 rwh->Send(new InputMsg_SetFocus(rwh->GetRoutingID(), focused)); |
| 141 if (!focused && mouse_locked_) | 148 if (!focused && mouse_locked_) |
| 142 OnUnlockMouse(); | 149 OnUnlockMouse(); |
| 143 | 150 |
| 144 // Restore the last seen state of text input to the view. | 151 // Restore the last seen state of text input to the view. |
| 145 RenderWidgetHostViewBase* rwhv = static_cast<RenderWidgetHostViewBase*>( | 152 RenderWidgetHostViewBase* rwhv = static_cast<RenderWidgetHostViewBase*>( |
| 146 rwh->GetView()); | 153 rwh->GetView()); |
| 147 if (rwhv) { | 154 if (rwhv) { |
| 148 rwhv->TextInputTypeChanged(last_text_input_type_, last_input_mode_, | 155 rwhv->TextInputTypeChanged(last_text_input_type_, last_input_mode_, |
| 149 last_can_compose_inline_, last_input_flags_); | 156 last_can_compose_inline_, last_input_flags_); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_UpdateGeometry, OnUpdateGeometry) | 220 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_UpdateGeometry, OnUpdateGeometry) |
| 214 IPC_MESSAGE_UNHANDLED(handled = false) | 221 IPC_MESSAGE_UNHANDLED(handled = false) |
| 215 IPC_END_MESSAGE_MAP() | 222 IPC_END_MESSAGE_MAP() |
| 216 return handled; | 223 return handled; |
| 217 } | 224 } |
| 218 | 225 |
| 219 void BrowserPluginGuest::InitInternal( | 226 void BrowserPluginGuest::InitInternal( |
| 220 const BrowserPluginHostMsg_Attach_Params& params, | 227 const BrowserPluginHostMsg_Attach_Params& params, |
| 221 WebContentsImpl* owner_web_contents) { | 228 WebContentsImpl* owner_web_contents) { |
| 222 focused_ = params.focused; | 229 focused_ = params.focused; |
| 223 OnSetFocus(browser_plugin::kInstanceIDNone, focused_); | 230 OnSetFocus(browser_plugin::kInstanceIDNone, |
| 231 focused_, |
| 232 blink::WebFocusTypeNone); |
| 224 | 233 |
| 225 guest_visible_ = params.visible; | 234 guest_visible_ = params.visible; |
| 226 UpdateVisibility(); | 235 UpdateVisibility(); |
| 227 | 236 |
| 228 is_full_page_plugin_ = params.is_full_page_plugin; | 237 is_full_page_plugin_ = params.is_full_page_plugin; |
| 229 guest_window_rect_ = gfx::Rect(params.origin, | 238 guest_window_rect_ = gfx::Rect(params.origin, |
| 230 params.resize_guest_params.view_size); | 239 params.resize_guest_params.view_size); |
| 231 | 240 |
| 232 if (owner_web_contents_ != owner_web_contents) { | 241 if (owner_web_contents_ != owner_web_contents) { |
| 233 WebContentsViewGuest* new_view = | 242 WebContentsViewGuest* new_view = |
| (...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 741 delegate_->ElementSizeChanged(params.view_size); | 750 delegate_->ElementSizeChanged(params.view_size); |
| 742 last_seen_browser_plugin_size_ = params.view_size; | 751 last_seen_browser_plugin_size_ = params.view_size; |
| 743 } | 752 } |
| 744 | 753 |
| 745 // Just repaint the WebContents if needed. | 754 // Just repaint the WebContents if needed. |
| 746 if (params.repaint) | 755 if (params.repaint) |
| 747 Send(new ViewMsg_Repaint(routing_id(), params.view_size)); | 756 Send(new ViewMsg_Repaint(routing_id(), params.view_size)); |
| 748 } | 757 } |
| 749 | 758 |
| 750 void BrowserPluginGuest::OnSetFocus(int browser_plugin_instance_id, | 759 void BrowserPluginGuest::OnSetFocus(int browser_plugin_instance_id, |
| 751 bool focused) { | 760 bool focused, |
| 761 blink::WebFocusType focus_type) { |
| 752 RenderWidgetHostView* rwhv = web_contents()->GetRenderWidgetHostView(); | 762 RenderWidgetHostView* rwhv = web_contents()->GetRenderWidgetHostView(); |
| 753 RenderWidgetHost* rwh = rwhv ? rwhv->GetRenderWidgetHost() : NULL; | 763 RenderWidgetHost* rwh = rwhv ? rwhv->GetRenderWidgetHost() : NULL; |
| 754 SetFocus(rwh, focused); | 764 SetFocus(rwh, focused, focus_type); |
| 755 } | 765 } |
| 756 | 766 |
| 757 void BrowserPluginGuest::OnSetEditCommandsForNextKeyEvent( | 767 void BrowserPluginGuest::OnSetEditCommandsForNextKeyEvent( |
| 758 int browser_plugin_instance_id, | 768 int browser_plugin_instance_id, |
| 759 const std::vector<EditCommand>& edit_commands) { | 769 const std::vector<EditCommand>& edit_commands) { |
| 760 Send(new InputMsg_SetEditCommandsForNextKeyEvent(routing_id(), | 770 Send(new InputMsg_SetEditCommandsForNextKeyEvent(routing_id(), |
| 761 edit_commands)); | 771 edit_commands)); |
| 762 } | 772 } |
| 763 | 773 |
| 764 void BrowserPluginGuest::OnSetVisibility(int browser_plugin_instance_id, | 774 void BrowserPluginGuest::OnSetVisibility(int browser_plugin_instance_id, |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 853 void BrowserPluginGuest::OnImeCompositionRangeChanged( | 863 void BrowserPluginGuest::OnImeCompositionRangeChanged( |
| 854 const gfx::Range& range, | 864 const gfx::Range& range, |
| 855 const std::vector<gfx::Rect>& character_bounds) { | 865 const std::vector<gfx::Rect>& character_bounds) { |
| 856 static_cast<RenderWidgetHostViewBase*>( | 866 static_cast<RenderWidgetHostViewBase*>( |
| 857 web_contents()->GetRenderWidgetHostView())->ImeCompositionRangeChanged( | 867 web_contents()->GetRenderWidgetHostView())->ImeCompositionRangeChanged( |
| 858 range, character_bounds); | 868 range, character_bounds); |
| 859 } | 869 } |
| 860 #endif | 870 #endif |
| 861 | 871 |
| 862 } // namespace content | 872 } // namespace content |
| OLD | NEW |