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 // A BrowserPluginGuest is the browser side of a browser <--> embedder | 5 // A BrowserPluginGuest is the browser side of a browser <--> embedder |
6 // renderer channel. A BrowserPlugin (a WebPlugin) is on the embedder | 6 // renderer channel. A BrowserPlugin (a WebPlugin) is on the embedder |
7 // renderer side of browser <--> embedder renderer communication. | 7 // renderer side of browser <--> embedder renderer communication. |
8 // | 8 // |
9 // BrowserPluginGuest lives on the UI thread of the browser process. Any | 9 // BrowserPluginGuest lives on the UI thread of the browser process. Any |
10 // messages about the guest render process that the embedder might be interested | 10 // messages about the guest render process that the embedder might be interested |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
183 | 183 |
184 gfx::Point GetScreenCoordinates(const gfx::Point& relative_position) const; | 184 gfx::Point GetScreenCoordinates(const gfx::Point& relative_position) const; |
185 | 185 |
186 // Helper to send messages to embedder. If this guest is not yet attached, | 186 // Helper to send messages to embedder. If this guest is not yet attached, |
187 // then IPCs will be queued until attachment. | 187 // then IPCs will be queued until attachment. |
188 void SendMessageToEmbedder(IPC::Message* msg); | 188 void SendMessageToEmbedder(IPC::Message* msg); |
189 | 189 |
190 // Returns whether the guest is attached to an embedder. | 190 // Returns whether the guest is attached to an embedder. |
191 bool attached() const { return attached_; } | 191 bool attached() const { return attached_; } |
192 | 192 |
| 193 // Returns true when an attachment has taken place since the last time the |
| 194 // compositor surface was set. |
| 195 bool has_attached_since_surface_set() const { |
| 196 return has_attached_since_surface_set_; |
| 197 } |
| 198 |
193 // Attaches this BrowserPluginGuest to the provided |embedder_web_contents| | 199 // Attaches this BrowserPluginGuest to the provided |embedder_web_contents| |
194 // and initializes the guest with the provided |params|. Attaching a guest | 200 // and initializes the guest with the provided |params|. Attaching a guest |
195 // to an embedder implies that this guest's lifetime is no longer managed | 201 // to an embedder implies that this guest's lifetime is no longer managed |
196 // by its opener, and it can begin loading resources. | 202 // by its opener, and it can begin loading resources. |
197 void Attach(int browser_plugin_instance_id, | 203 void Attach(int browser_plugin_instance_id, |
198 WebContentsImpl* embedder_web_contents, | 204 WebContentsImpl* embedder_web_contents, |
199 const BrowserPluginHostMsg_Attach_Params& params); | 205 const BrowserPluginHostMsg_Attach_Params& params); |
200 | 206 |
201 // Returns whether BrowserPluginGuest is interested in receiving the given | 207 // Returns whether BrowserPluginGuest is interested in receiving the given |
202 // |message|. | 208 // |message|. |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
238 | 244 |
239 protected: | 245 protected: |
240 | 246 |
241 // BrowserPluginGuest is a WebContentsObserver of |web_contents| and | 247 // BrowserPluginGuest is a WebContentsObserver of |web_contents| and |
242 // |web_contents| has to stay valid for the lifetime of BrowserPluginGuest. | 248 // |web_contents| has to stay valid for the lifetime of BrowserPluginGuest. |
243 // Constructor protected for testing. | 249 // Constructor protected for testing. |
244 BrowserPluginGuest(bool has_render_view, | 250 BrowserPluginGuest(bool has_render_view, |
245 WebContentsImpl* web_contents, | 251 WebContentsImpl* web_contents, |
246 BrowserPluginGuestDelegate* delegate); | 252 BrowserPluginGuestDelegate* delegate); |
247 | 253 |
| 254 // Protected for testing. |
| 255 void set_has_attached_since_surface_set_for_test(bool has_attached) { |
| 256 has_attached_since_surface_set_ = has_attached; |
| 257 } |
| 258 |
| 259 void set_attached_for_test(bool attached) { |
| 260 attached_ = attached; |
| 261 } |
| 262 |
248 private: | 263 private: |
249 class EmbedderVisibilityObserver; | 264 class EmbedderVisibilityObserver; |
250 | 265 |
251 void InitInternal(const BrowserPluginHostMsg_Attach_Params& params, | 266 void InitInternal(const BrowserPluginHostMsg_Attach_Params& params, |
252 WebContentsImpl* owner_web_contents); | 267 WebContentsImpl* owner_web_contents); |
253 | 268 |
254 bool InAutoSizeBounds(const gfx::Size& size) const; | 269 bool InAutoSizeBounds(const gfx::Size& size) const; |
255 | 270 |
256 void OnSatisfySequence(int instance_id, const cc::SurfaceSequence& sequence); | 271 void OnSatisfySequence(int instance_id, const cc::SurfaceSequence& sequence); |
257 void OnRequireSequence(int instance_id, | 272 void OnRequireSequence(int instance_id, |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 | 381 |
367 // The last tooltip that was set with SetTooltipText(). | 382 // The last tooltip that was set with SetTooltipText(). |
368 base::string16 current_tooltip_text_; | 383 base::string16 current_tooltip_text_; |
369 | 384 |
370 scoped_ptr<EmbedderVisibilityObserver> embedder_visibility_observer_; | 385 scoped_ptr<EmbedderVisibilityObserver> embedder_visibility_observer_; |
371 WebContentsImpl* owner_web_contents_; | 386 WebContentsImpl* owner_web_contents_; |
372 | 387 |
373 // Indicates whether this guest has been attached to a container. | 388 // Indicates whether this guest has been attached to a container. |
374 bool attached_; | 389 bool attached_; |
375 | 390 |
| 391 // Used to signal if a browser plugin has been attached since the last time |
| 392 // the compositing surface was set. |
| 393 bool has_attached_since_surface_set_; |
| 394 |
376 // An identifier that uniquely identifies a browser plugin within an embedder. | 395 // An identifier that uniquely identifies a browser plugin within an embedder. |
377 int browser_plugin_instance_id_; | 396 int browser_plugin_instance_id_; |
378 gfx::Rect guest_window_rect_; | 397 gfx::Rect guest_window_rect_; |
379 bool focused_; | 398 bool focused_; |
380 bool mouse_locked_; | 399 bool mouse_locked_; |
381 bool pending_lock_request_; | 400 bool pending_lock_request_; |
382 bool guest_visible_; | 401 bool guest_visible_; |
383 bool embedder_visible_; | 402 bool embedder_visible_; |
384 // Whether the browser plugin is inside a plugin document. | 403 // Whether the browser plugin is inside a plugin document. |
385 bool is_full_page_plugin_; | 404 bool is_full_page_plugin_; |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
437 // Weak pointer used to ask GeolocationPermissionContext about geolocation | 456 // Weak pointer used to ask GeolocationPermissionContext about geolocation |
438 // permission. | 457 // permission. |
439 base::WeakPtrFactory<BrowserPluginGuest> weak_ptr_factory_; | 458 base::WeakPtrFactory<BrowserPluginGuest> weak_ptr_factory_; |
440 | 459 |
441 DISALLOW_COPY_AND_ASSIGN(BrowserPluginGuest); | 460 DISALLOW_COPY_AND_ASSIGN(BrowserPluginGuest); |
442 }; | 461 }; |
443 | 462 |
444 } // namespace content | 463 } // namespace content |
445 | 464 |
446 #endif // CONTENT_BROWSER_BROWSER_PLUGIN_BROWSER_PLUGIN_GUEST_H_ | 465 #endif // CONTENT_BROWSER_BROWSER_PLUGIN_BROWSER_PLUGIN_GUEST_H_ |
OLD | NEW |