| 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_embedder.h" | 5 #include "content/browser/browser_plugin/browser_plugin_embedder.h" |
| 6 | 6 |
| 7 #include "base/values.h" | 7 #include "base/values.h" |
| 8 #include "content/browser/browser_plugin/browser_plugin_guest.h" | 8 #include "content/browser/browser_plugin/browser_plugin_guest.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" |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 75 // DragSourceEndedAt() first. For this reason, we check if both methods were | 75 // DragSourceEndedAt() first. For this reason, we check if both methods were |
| 76 // called before resetting |guest_started_drag_|. | 76 // called before resetting |guest_started_drag_|. |
| 77 if (guest_drag_ending_) { | 77 if (guest_drag_ending_) { |
| 78 if (guest_started_drag_) | 78 if (guest_started_drag_) |
| 79 guest_started_drag_.reset(); | 79 guest_started_drag_.reset(); |
| 80 } else { | 80 } else { |
| 81 guest_drag_ending_ = true; | 81 guest_drag_ending_ = true; |
| 82 } | 82 } |
| 83 } | 83 } |
| 84 | 84 |
| 85 // static |
| 85 bool BrowserPluginEmbedder::DidSendScreenRectsCallback( | 86 bool BrowserPluginEmbedder::DidSendScreenRectsCallback( |
| 86 WebContents* guest_web_contents) { | 87 WebContents* guest_web_contents) { |
| 87 static_cast<RenderViewHostImpl*>( | 88 static_cast<RenderViewHostImpl*>( |
| 88 guest_web_contents->GetRenderViewHost())->SendScreenRects(); | 89 guest_web_contents->GetRenderViewHost())->SendScreenRects(); |
| 89 // Not handled => Iterate over all guests. | 90 // Not handled => Iterate over all guests. |
| 90 return false; | 91 return false; |
| 91 } | 92 } |
| 92 | 93 |
| 93 void BrowserPluginEmbedder::DidSendScreenRects() { | 94 void BrowserPluginEmbedder::DidSendScreenRects() { |
| 94 GetBrowserPluginGuestManager()->ForEachGuest( | 95 GetBrowserPluginGuestManager()->ForEachGuest( |
| 95 GetWebContents(), base::Bind( | 96 GetWebContents(), base::Bind( |
| 96 &BrowserPluginEmbedder::DidSendScreenRectsCallback, | 97 &BrowserPluginEmbedder::DidSendScreenRectsCallback)); |
| 97 base::Unretained(this))); | |
| 98 } | 98 } |
| 99 | 99 |
| 100 bool BrowserPluginEmbedder::OnMessageReceived(const IPC::Message& message) { | 100 bool BrowserPluginEmbedder::OnMessageReceived(const IPC::Message& message) { |
| 101 bool handled = true; | 101 bool handled = true; |
| 102 IPC_BEGIN_MESSAGE_MAP(BrowserPluginEmbedder, message) | 102 IPC_BEGIN_MESSAGE_MAP(BrowserPluginEmbedder, message) |
| 103 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_Attach, OnAttach) | 103 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_Attach, OnAttach) |
| 104 IPC_MESSAGE_HANDLER_GENERIC(DragHostMsg_UpdateDragCursor, | 104 IPC_MESSAGE_HANDLER_GENERIC(DragHostMsg_UpdateDragCursor, |
| 105 OnUpdateDragCursor(&handled)); | 105 OnUpdateDragCursor(&handled)); |
| 106 IPC_MESSAGE_UNHANDLED(handled = false) | 106 IPC_MESSAGE_UNHANDLED(handled = false) |
| 107 IPC_END_MESSAGE_MAP() | 107 IPC_END_MESSAGE_MAP() |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 150 const NativeWebKeyboardEvent& event) { | 150 const NativeWebKeyboardEvent& event) { |
| 151 if ((event.windowsKeyCode != ui::VKEY_ESCAPE) || | 151 if ((event.windowsKeyCode != ui::VKEY_ESCAPE) || |
| 152 (event.modifiers & blink::WebInputEvent::InputModifiers)) { | 152 (event.modifiers & blink::WebInputEvent::InputModifiers)) { |
| 153 return false; | 153 return false; |
| 154 } | 154 } |
| 155 | 155 |
| 156 bool event_consumed = false; | 156 bool event_consumed = false; |
| 157 GetBrowserPluginGuestManager()->ForEachGuest( | 157 GetBrowserPluginGuestManager()->ForEachGuest( |
| 158 GetWebContents(), | 158 GetWebContents(), |
| 159 base::Bind(&BrowserPluginEmbedder::UnlockMouseIfNecessaryCallback, | 159 base::Bind(&BrowserPluginEmbedder::UnlockMouseIfNecessaryCallback, |
| 160 base::Unretained(this), | |
| 161 &event_consumed)); | 160 &event_consumed)); |
| 162 | 161 |
| 163 return event_consumed; | 162 return event_consumed; |
| 164 } | 163 } |
| 165 | 164 |
| 166 bool BrowserPluginEmbedder::Find(int request_id, | 165 bool BrowserPluginEmbedder::Find(int request_id, |
| 167 const base::string16& search_text, | 166 const base::string16& search_text, |
| 168 const blink::WebFindOptions& options) { | 167 const blink::WebFindOptions& options) { |
| 169 return GetBrowserPluginGuestManager()->ForEachGuest( | 168 return GetBrowserPluginGuestManager()->ForEachGuest( |
| 170 GetWebContents(), | 169 GetWebContents(), |
| 171 base::Bind(&BrowserPluginEmbedder::FindInGuest, | 170 base::Bind(&BrowserPluginEmbedder::FindInGuest, |
| 172 base::Unretained(this), | |
| 173 request_id, | 171 request_id, |
| 174 search_text, | 172 search_text, |
| 175 options)); | 173 options)); |
| 176 } | 174 } |
| 177 | 175 |
| 176 // static |
| 178 bool BrowserPluginEmbedder::UnlockMouseIfNecessaryCallback(bool* mouse_unlocked, | 177 bool BrowserPluginEmbedder::UnlockMouseIfNecessaryCallback(bool* mouse_unlocked, |
| 179 WebContents* guest) { | 178 WebContents* guest) { |
| 180 *mouse_unlocked |= static_cast<WebContentsImpl*>(guest) | 179 *mouse_unlocked |= static_cast<WebContentsImpl*>(guest) |
| 181 ->GetBrowserPluginGuest() | 180 ->GetBrowserPluginGuest() |
| 182 ->mouse_locked(); | 181 ->mouse_locked(); |
| 183 guest->GotResponseToLockMouseRequest(false); | 182 guest->GotResponseToLockMouseRequest(false); |
| 184 | 183 |
| 185 // Returns false to iterate over all guests. | 184 // Returns false to iterate over all guests. |
| 186 return false; | 185 return false; |
| 187 } | 186 } |
| 188 | 187 |
| 188 // static |
| 189 bool BrowserPluginEmbedder::FindInGuest(int request_id, | 189 bool BrowserPluginEmbedder::FindInGuest(int request_id, |
| 190 const base::string16& search_text, | 190 const base::string16& search_text, |
| 191 const blink::WebFindOptions& options, | 191 const blink::WebFindOptions& options, |
| 192 WebContents* guest) { | 192 WebContents* guest) { |
| 193 if (static_cast<WebContentsImpl*>(guest)->GetBrowserPluginGuest()->Find( | 193 if (static_cast<WebContentsImpl*>(guest)->GetBrowserPluginGuest()->Find( |
| 194 request_id, search_text, options)) { | 194 request_id, search_text, options)) { |
| 195 // There can only ever currently be one browser plugin that handles find so | 195 // There can only ever currently be one browser plugin that handles find so |
| 196 // we can break the iteration at this point. | 196 // we can break the iteration at this point. |
| 197 return true; | 197 return true; |
| 198 } | 198 } |
| 199 return false; | 199 return false; |
| 200 } | 200 } |
| 201 | 201 |
| 202 } // namespace content | 202 } // namespace content |
| OLD | NEW |