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 represents the browser side of browser <--> renderer | 5 // A BrowserPluginGuest represents the browser side of browser <--> renderer |
6 // communication. A BrowserPlugin (a WebPlugin) is on the renderer side of | 6 // communication. A BrowserPlugin (a WebPlugin) is on the renderer side of |
7 // browser <--> guest renderer communication. The 'guest' renderer is a | 7 // browser <--> guest renderer communication. The 'guest' renderer is a |
8 // <browser> tag. | 8 // <browser> tag. |
9 // | 9 // |
10 // BrowserPluginGuest lives on the UI thread of the browser process. It has a | 10 // BrowserPluginGuest lives on the UI thread of the browser process. It has a |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
77 | 77 |
78 void set_guest_hang_timeout_for_testing(const base::TimeDelta& timeout) { | 78 void set_guest_hang_timeout_for_testing(const base::TimeDelta& timeout) { |
79 guest_hang_timeout_ = timeout; | 79 guest_hang_timeout_ = timeout; |
80 } | 80 } |
81 | 81 |
82 void set_embedder_render_process_host( | 82 void set_embedder_render_process_host( |
83 RenderProcessHost* render_process_host) { | 83 RenderProcessHost* render_process_host) { |
84 embedder_render_process_host_ = render_process_host; | 84 embedder_render_process_host_ = render_process_host; |
85 } | 85 } |
86 | 86 |
| 87 bool visible() const { return visible_; } |
| 88 |
87 // NotificationObserver implementation. | 89 // NotificationObserver implementation. |
88 virtual void Observe(int type, | 90 virtual void Observe(int type, |
89 const NotificationSource& source, | 91 const NotificationSource& source, |
90 const NotificationDetails& details) OVERRIDE; | 92 const NotificationDetails& details) OVERRIDE; |
91 | 93 |
92 // WebContentsObserver implementation. | 94 // WebContentsObserver implementation. |
93 virtual void DidStartProvisionalLoadForFrame( | 95 virtual void DidStartProvisionalLoadForFrame( |
94 int64 frame_id, | 96 int64 frame_id, |
95 bool is_main_frame, | 97 bool is_main_frame, |
96 const GURL& validated_url, | 98 const GURL& validated_url, |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 const gfx::Rect& initial_pos); | 136 const gfx::Rect& initial_pos); |
135 void SetCursor(const WebCursor& cursor); | 137 void SetCursor(const WebCursor& cursor); |
136 // Handles input event acks so they are sent to browser plugin host (via | 138 // Handles input event acks so they are sent to browser plugin host (via |
137 // embedder) instead of default view/widget host. | 139 // embedder) instead of default view/widget host. |
138 void HandleInputEventAck(RenderViewHost* render_view_host, bool handled); | 140 void HandleInputEventAck(RenderViewHost* render_view_host, bool handled); |
139 | 141 |
140 // The guest needs to notify the plugin in the embedder to start (or stop) | 142 // The guest needs to notify the plugin in the embedder to start (or stop) |
141 // accepting touch events. | 143 // accepting touch events. |
142 void SetIsAcceptingTouchEvents(bool accept); | 144 void SetIsAcceptingTouchEvents(bool accept); |
143 | 145 |
| 146 // The guest WebContents is visible if both its embedder is visible and |
| 147 // the browser plugin element is visible. If either one is not then the |
| 148 // WebContents is marked as hidden. A hidden WebContents will consume |
| 149 // fewer GPU and CPU resources. |
| 150 // |
| 151 // When the every WebContents in a RenderProcessHost is hidden, it will lower |
| 152 // the priority of the process (see RenderProcessHostImpl::WidgetHidden). |
| 153 // |
| 154 // It will also send a message to the guest renderer process to cleanup |
| 155 // resources such as dropping back buffers and adjusting memory limits (if in |
| 156 // compositing mode, see CCLayerTreeHost::setVisible). |
| 157 // |
| 158 // Additionally it will slow down Javascript execution and garbage collection. |
| 159 // See RenderThreadImpl::IdleHandler (executed when hidden) and |
| 160 // RenderThreadImpl::IdleHandlerInForegroundTab (executed when visible). |
| 161 void SetVisibility(bool embedder_visible, bool visible); |
| 162 |
144 // Exposes the protected web_contents() from WebContentsObserver. | 163 // Exposes the protected web_contents() from WebContentsObserver. |
145 WebContents* GetWebContents(); | 164 WebContents* GetWebContents(); |
146 | 165 |
147 // Kill the guest process. | 166 // Kill the guest process. |
148 void Terminate(); | 167 void Terminate(); |
149 | 168 |
150 // Overridden in tests. | 169 // Overridden in tests. |
151 virtual bool ViewTakeFocus(bool reverse); | 170 virtual bool ViewTakeFocus(bool reverse); |
152 // If possible, navigate the guest to |relative_index| entries away from the | 171 // If possible, navigate the guest to |relative_index| entries away from the |
153 // current navigation entry. | 172 // current navigation entry. |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 size_t damage_buffer_size_; | 226 size_t damage_buffer_size_; |
208 #endif | 227 #endif |
209 gfx::Size damage_view_size_; | 228 gfx::Size damage_view_size_; |
210 float damage_buffer_scale_factor_; | 229 float damage_buffer_scale_factor_; |
211 scoped_ptr<IPC::Message> pending_input_event_reply_; | 230 scoped_ptr<IPC::Message> pending_input_event_reply_; |
212 gfx::Rect guest_rect_; | 231 gfx::Rect guest_rect_; |
213 WebCursor cursor_; | 232 WebCursor cursor_; |
214 IDMap<RenderViewHost> pending_updates_; | 233 IDMap<RenderViewHost> pending_updates_; |
215 int pending_update_counter_; | 234 int pending_update_counter_; |
216 base::TimeDelta guest_hang_timeout_; | 235 base::TimeDelta guest_hang_timeout_; |
| 236 bool visible_; |
217 | 237 |
218 DISALLOW_COPY_AND_ASSIGN(BrowserPluginGuest); | 238 DISALLOW_COPY_AND_ASSIGN(BrowserPluginGuest); |
219 }; | 239 }; |
220 | 240 |
221 } // namespace content | 241 } // namespace content |
222 | 242 |
223 #endif // CONTENT_BROWSER_BROWSER_PLUGIN_BROWSER_PLUGIN_GUEST_H_ | 243 #endif // CONTENT_BROWSER_BROWSER_PLUGIN_BROWSER_PLUGIN_GUEST_H_ |
OLD | NEW |