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 "content/browser/browser_plugin/browser_plugin_guest.h" | 7 #include "content/browser/browser_plugin/browser_plugin_guest.h" |
8 #include "content/browser/renderer_host/render_view_host_impl.h" | 8 #include "content/browser/renderer_host/render_view_host_impl.h" |
9 #include "content/browser/web_contents/web_contents_impl.h" | 9 #include "content/browser/web_contents/web_contents_impl.h" |
10 #include "content/common/browser_plugin/browser_plugin_messages.h" | 10 #include "content/common/browser_plugin/browser_plugin_messages.h" |
11 #include "content/common/drag_messages.h" | 11 #include "content/common/drag_messages.h" |
12 #include "content/public/browser/browser_context.h" | 12 #include "content/public/browser/browser_context.h" |
13 #include "content/public/browser/browser_plugin_guest_manager.h" | 13 #include "content/public/browser/browser_plugin_guest_manager.h" |
14 #include "content/public/browser/native_web_keyboard_event.h" | 14 #include "content/public/browser/native_web_keyboard_event.h" |
15 #include "content/public/browser/render_view_host.h" | 15 #include "content/public/browser/render_view_host.h" |
16 #include "third_party/WebKit/public/web/WebFindOptions.h" | |
17 #include "ui/events/keycodes/keyboard_codes.h" | 16 #include "ui/events/keycodes/keyboard_codes.h" |
18 | 17 |
19 namespace content { | 18 namespace content { |
20 | 19 |
21 BrowserPluginEmbedder::BrowserPluginEmbedder(WebContentsImpl* web_contents) | 20 BrowserPluginEmbedder::BrowserPluginEmbedder(WebContentsImpl* web_contents) |
22 : WebContentsObserver(web_contents), | 21 : WebContentsObserver(web_contents), |
23 guest_drag_ending_(false), | 22 guest_drag_ending_(false), |
24 weak_ptr_factory_(this) { | 23 weak_ptr_factory_(this) { |
25 } | 24 } |
26 | 25 |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 | 179 |
181 bool event_consumed = false; | 180 bool event_consumed = false; |
182 GetBrowserPluginGuestManager()->ForEachGuest( | 181 GetBrowserPluginGuestManager()->ForEachGuest( |
183 web_contents(), | 182 web_contents(), |
184 base::Bind(&BrowserPluginEmbedder::UnlockMouseIfNecessaryCallback, | 183 base::Bind(&BrowserPluginEmbedder::UnlockMouseIfNecessaryCallback, |
185 &event_consumed)); | 184 &event_consumed)); |
186 | 185 |
187 return event_consumed; | 186 return event_consumed; |
188 } | 187 } |
189 | 188 |
190 bool BrowserPluginEmbedder::Find(int request_id, | |
191 const base::string16& search_text, | |
192 const blink::WebFindOptions& options) { | |
193 return GetBrowserPluginGuestManager()->ForEachGuest( | |
194 web_contents(), | |
195 base::Bind(&BrowserPluginEmbedder::FindInGuest, | |
196 request_id, | |
197 search_text, | |
198 options)); | |
199 } | |
200 | |
201 bool BrowserPluginEmbedder::StopFinding(StopFindAction action) { | |
202 return GetBrowserPluginGuestManager()->ForEachGuest( | |
203 web_contents(), | |
204 base::Bind(&BrowserPluginEmbedder::StopFindingInGuest, action)); | |
205 } | |
206 | |
207 BrowserPluginGuest* BrowserPluginEmbedder::GetFullPageGuest() { | 189 BrowserPluginGuest* BrowserPluginEmbedder::GetFullPageGuest() { |
208 WebContentsImpl* guest_contents = static_cast<WebContentsImpl*>( | 190 WebContentsImpl* guest_contents = static_cast<WebContentsImpl*>( |
209 GetBrowserPluginGuestManager()->GetFullPageGuest(web_contents())); | 191 GetBrowserPluginGuestManager()->GetFullPageGuest(web_contents())); |
210 if (!guest_contents) | 192 if (!guest_contents) |
211 return nullptr; | 193 return nullptr; |
212 return guest_contents->GetBrowserPluginGuest(); | 194 return guest_contents->GetBrowserPluginGuest(); |
213 } | 195 } |
214 | 196 |
215 // static | 197 // static |
216 bool BrowserPluginEmbedder::GuestRecentlyAudibleCallback(WebContents* guest) { | 198 bool BrowserPluginEmbedder::GuestRecentlyAudibleCallback(WebContents* guest) { |
(...skipping 11 matching lines...) Expand all Loading... |
228 WebContents* guest) { | 210 WebContents* guest) { |
229 *mouse_unlocked |= static_cast<WebContentsImpl*>(guest) | 211 *mouse_unlocked |= static_cast<WebContentsImpl*>(guest) |
230 ->GetBrowserPluginGuest() | 212 ->GetBrowserPluginGuest() |
231 ->mouse_locked(); | 213 ->mouse_locked(); |
232 guest->GotResponseToLockMouseRequest(false); | 214 guest->GotResponseToLockMouseRequest(false); |
233 | 215 |
234 // Returns false to iterate over all guests. | 216 // Returns false to iterate over all guests. |
235 return false; | 217 return false; |
236 } | 218 } |
237 | 219 |
238 // static | |
239 bool BrowserPluginEmbedder::FindInGuest(int request_id, | |
240 const base::string16& search_text, | |
241 const blink::WebFindOptions& options, | |
242 WebContents* guest) { | |
243 if (static_cast<WebContentsImpl*>(guest) | |
244 ->GetBrowserPluginGuest() | |
245 ->HandleFindForEmbedder(request_id, search_text, options)) { | |
246 // There can only ever currently be one browser plugin that handles find so | |
247 // we can break the iteration at this point. | |
248 return true; | |
249 } | |
250 return false; | |
251 } | |
252 | |
253 // static | |
254 bool BrowserPluginEmbedder::StopFindingInGuest(StopFindAction action, | |
255 WebContents* guest) { | |
256 if (static_cast<WebContentsImpl*>(guest) | |
257 ->GetBrowserPluginGuest() | |
258 ->HandleStopFindingForEmbedder(action)) { | |
259 // There can only ever currently be one browser plugin that handles find so | |
260 // we can break the iteration at this point. | |
261 return true; | |
262 } | |
263 return false; | |
264 } | |
265 | |
266 } // namespace content | 220 } // namespace content |
OLD | NEW |