Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(30)

Side by Side Diff: chrome/browser/prerender/prerender_render_widget_host_view.cc

Issue 6685012: Give prerendering RVH's RenderWidgetHostViews. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: 'queued' renamed to 'pending' Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/prerender/prerender_render_widget_host_view.h"
6
7 #include "base/logging.h"
8 #include "chrome/browser/prerender/prerender_contents.h"
9 #include "chrome/browser/prerender/prerender_final_status.h"
10 #include "content/browser/renderer_host/render_widget_host.h"
11
12 namespace prerender {
13
14 PrerenderRenderWidgetHostView::PrerenderRenderWidgetHostView(
15 RenderWidgetHost* render_widget_host,
16 PrerenderContents* prerender_contents)
17 : render_widget_host_(render_widget_host),
18 prerender_contents_(prerender_contents) {
19 render_widget_host_->set_view(this);
20 }
21
22 PrerenderRenderWidgetHostView::~PrerenderRenderWidgetHostView() {
23 }
24
25 void PrerenderRenderWidgetHostView::Init(RenderWidgetHostView* view) {
26 #if defined(OS_MACOSX)
27 cocoa_view_bounds_ = view->GetViewBounds();
28 root_window_rect_ = view->GetRootWindowRect();
29 #endif // defined(OS_MACOSX)
30 SetBounds(view->GetViewBounds());
31
32 // PrerenderRenderWidgetHostViews are always hidden. This has reduces the
33 // process priority of the render process while prerendering, and prevents it
34 // from painting anything until the page is actually displayed.
35 WasHidden();
36 }
37
38 void PrerenderRenderWidgetHostView::InitAsPopup(
39 RenderWidgetHostView* parent_host_view, const gfx::Rect& pos) {
40 NOTREACHED();
41 }
42
43 void PrerenderRenderWidgetHostView::InitAsFullscreen() {
44 NOTREACHED();
45 }
46
47 RenderWidgetHost* PrerenderRenderWidgetHostView::GetRenderWidgetHost() const {
48 return render_widget_host_;
49 }
50
51 void PrerenderRenderWidgetHostView::DidBecomeSelected() {
52 // The View won't be shown during prerendering.
53 NOTREACHED();
54 }
55
56 void PrerenderRenderWidgetHostView::WasHidden() {
57 render_widget_host_->WasHidden();
58 }
59
60 void PrerenderRenderWidgetHostView::SetSize(const gfx::Size& size) {
61 SetBounds(gfx::Rect(GetViewBounds().origin(), size));
62 }
63
64 void PrerenderRenderWidgetHostView::SetBounds(const gfx::Rect& rect) {
65 bounds_ = rect;
66 if (render_widget_host_)
67 render_widget_host_->WasResized();
68 }
69
70 gfx::NativeView PrerenderRenderWidgetHostView::GetNativeView() {
71 return NULL;
72 }
73
74 void PrerenderRenderWidgetHostView::MovePluginWindows(
75 const std::vector<webkit::npapi::WebPluginGeometry>& moves) {
76 // Since a PrerenderRenderWidgetHostView is always hidden and plugins are not
77 // loaded during prerendering, this will never be called.
78 NOTREACHED();
79 }
80
81 void PrerenderRenderWidgetHostView::Focus() {
82 // A PrerenderRenderWidgetHostView can never be focused, as it's always
83 // hidden.
84 NOTREACHED();
85 }
86
87 void PrerenderRenderWidgetHostView::Blur() {
88 }
89
90 bool PrerenderRenderWidgetHostView::HasFocus() {
91 return false;
92 }
93
94 void PrerenderRenderWidgetHostView::Show() {
95 // A PrerenderRenderWidgetHostView can never be shown, as it is not yet
96 // associated with a tab.
97 NOTREACHED();
98 }
99
100 void PrerenderRenderWidgetHostView::Hide() {
101 WasHidden();
102 }
103
104 bool PrerenderRenderWidgetHostView::IsShowing() {
105 return false;
106 }
107
108 gfx::Rect PrerenderRenderWidgetHostView::GetViewBounds() const {
109 return bounds_;
110 }
111
112 void PrerenderRenderWidgetHostView::UpdateCursor(const WebCursor& cursor) {
113 // The cursor should only be updated in response to a mouse event, which
114 // hidden RenderViews don't have.
115 NOTREACHED();
116 }
117
118 void PrerenderRenderWidgetHostView::SetIsLoading(bool is_loading) {
119 // Do nothing. PrerenderContents manages this flag.
120 }
121
122 void PrerenderRenderWidgetHostView::ImeUpdateTextInputState(
123 WebKit::WebTextInputType type,
124 const gfx::Rect& caret_rect) {
125 // Not called on hidden views.
126 NOTREACHED();
127 }
128
129 void PrerenderRenderWidgetHostView::ImeCancelComposition() {
130 // Not called on hidden views.
131 NOTREACHED();
132 }
133
134 void PrerenderRenderWidgetHostView::DidUpdateBackingStore(
135 const gfx::Rect& scroll_rect, int scroll_dx, int scroll_dy,
136 const std::vector<gfx::Rect>& copy_rects) {
137 // Since prerendering RenderViewsHosts are always hidden, this will not be
138 // be called.
139 NOTREACHED();
140 }
141
142 void PrerenderRenderWidgetHostView::RenderViewGone(
143 base::TerminationStatus status, int error_code) {
144 // TODO(mmenke): This should result in the PrerenderContents cancelling the
145 // prerender itself.
146 Destroy();
147 }
148
149 void PrerenderRenderWidgetHostView::WillDestroyRenderWidget(
150 RenderWidgetHost* rwh) {
151 if (rwh == render_widget_host_)
152 render_widget_host_ = NULL;
153 }
154
155 void PrerenderRenderWidgetHostView::Destroy() {
156 delete this;
157 }
158
159 void PrerenderRenderWidgetHostView::SetTooltipText(
160 const std::wstring& tooltip_text) {
161 // Since this is only set on mouse move and the View can't be focused, this
162 // will never be called.
163 NOTREACHED();
164 }
165
166 BackingStore* PrerenderRenderWidgetHostView::AllocBackingStore(
167 const gfx::Size& size) {
168 // Since prerendering RenderViewsHosts are always hidden, this will not be
169 // be called.
170 NOTREACHED();
171 return NULL;
172 }
173
174 #if defined(OS_MACOSX)
175 void PrerenderRenderWidgetHostView::SetTakesFocusOnlyOnMouseDown(bool flag) {
176 // This is only used by on RenderWidgetHosts currently in a TabContents.
177 NOTREACHED();
178 }
179
180 gfx::Rect PrerenderRenderWidgetHostView::GetViewCocoaBounds() const {
181 return cocoa_view_bounds_;
182 }
183
184 gfx::Rect PrerenderRenderWidgetHostView::GetRootWindowRect() {
185 return root_window_rect_;
186 }
187
188 void PrerenderRenderWidgetHostView::SetActive(bool active) {
189 // This view can never be made visible.
190 NOTREACHED();
191 }
192
193 void PrerenderRenderWidgetHostView::SetWindowVisibility(bool visible) {
194 // This view can never be made visible.
195 NOTREACHED();
196 }
197
198 void PrerenderRenderWidgetHostView::WindowFrameChanged() {
199 // Since there's no frame, and nothing to notify |this| of its change, this
200 // will never get called.
201 NOTREACHED();
202 }
203
204 // Since plugins are not loaded until the prerendered page is displayed, none of
205 // the following functions will be called.
206 void PrerenderRenderWidgetHostView::PluginFocusChanged(bool focused,
207 int plugin_id) {
208 NOTREACHED();
209 }
210 void PrerenderRenderWidgetHostView::StartPluginIme() {
sky 2011/04/19 17:08:37 Add newlines between all methods (you were initial
mmenke 2011/04/19 17:29:38 Done.
211 NOTREACHED();
212 }
213 bool PrerenderRenderWidgetHostView::PostProcessEventForPluginIme(
214 const NativeWebKeyboardEvent& event) {
215 NOTREACHED();
216 return false;
217 }
218 gfx::PluginWindowHandle
219 PrerenderRenderWidgetHostView::AllocateFakePluginWindowHandle(
220 bool opaque, bool root) {
221 NOTREACHED();
222 prerender_contents_->set_pending_final_status(FINAL_STATUS_COMPOSITING);
223 return gfx::kNullPluginWindow;
224 }
225 void PrerenderRenderWidgetHostView::DestroyFakePluginWindowHandle(
226 gfx::PluginWindowHandle window) {
227 NOTREACHED();
228 }
229 void PrerenderRenderWidgetHostView::AcceleratedSurfaceSetIOSurface(
230 gfx::PluginWindowHandle window,
231 int32 width,
232 int32 height,
233 uint64 io_surface_identifier) {
234 NOTREACHED();
235 }
236 void PrerenderRenderWidgetHostView::AcceleratedSurfaceSetTransportDIB(
237 gfx::PluginWindowHandle window,
238 int32 width,
239 int32 height,
240 TransportDIB::Handle transport_dib) {
241 NOTREACHED();
242 }
243 void PrerenderRenderWidgetHostView::AcceleratedSurfaceBuffersSwapped(
244 gfx::PluginWindowHandle window,
245 uint64 surface_id,
246 int renderer_id,
247 int32 route_id,
248 int gpu_host_id,
249 uint64 swap_buffers_count) {
250 NOTREACHED();
251 }
252
253 void PrerenderRenderWidgetHostView::GpuRenderingStateDidChange() {
254 // This will not be called, since AcquireCompositingSurface returns a NULL
255 // window handle.
256 NOTREACHED();
257 }
258 #endif // defined(OS_MACOSX)
259
260 #if defined(TOOLKIT_USES_GTK)
261 void PrerenderRenderWidgetHostView::CreatePluginContainer(
262 gfx::PluginWindowHandle id) {
263 // Since plugins are not loaded until the prerendered page is loaded, this
264 // should never be called.
265 NOTREACHED();
266 }
267
268 void PrerenderRenderWidgetHostView::DestroyPluginContainer(
269 gfx::PluginWindowHandle id) {
270 // Since plugins are not loaded until the prerendered page is loaded, this
271 // should never be called.
272 NOTREACHED();
273 }
274
275 void PrerenderRenderWidgetHostView::AcceleratedCompositingActivated(
276 bool activated) {
277 // This will not be called, since AcquireCompositingSurface returns a NULL
278 // window handle.
279 DCHECK(!activated);
280 if (activated)
281 prerender_contents_->set_pending_final_status(FINAL_STATUS_COMPOSITING);
282 }
283 #endif // defined(TOOLKIT_USES_GTK)
284
285 #if defined(OS_WIN)
286 void PrerenderRenderWidgetHostView::WillWmDestroy() {
287 // Will never be called for a view not in a TabContents.
288 NOTREACHED();
289 }
290
291 void PrerenderRenderWidgetHostView::ShowCompositorHostWindow(bool show) {
292 // This will not be called, since AcquireCompositingSurface returns a NULL
293 // window handle.
294 DCHECK(!show);
295 if (show)
296 prerender_contents_->set_pending_final_status(FINAL_STATUS_COMPOSITING);
297 }
298 #endif // defined(OS_WIN)
299
300 gfx::PluginWindowHandle
301 PrerenderRenderWidgetHostView::AcquireCompositingSurface() {
302 // Cancel prerendering if try to use a compositing surface.
303 prerender_contents_->set_pending_final_status(FINAL_STATUS_COMPOSITING);
304 return gfx::kNullPluginWindow;
305 }
306
307 void PrerenderRenderWidgetHostView::ReleaseCompositingSurface(
308 gfx::PluginWindowHandle surface) {
309 // This should not be called, since AcquireCompositingSurface returns a null
310 // window.
311 DCHECK_EQ(surface, gfx::kNullPluginWindow);
312 }
313
314 void PrerenderRenderWidgetHostView::SetVisuallyDeemphasized(
315 const SkColor* color, bool animate) {
316 // This will not be called until the RVH is swapped into a tab.
317 NOTREACHED();
318 }
319
320 void PrerenderRenderWidgetHostView::SetBackground(const SkBitmap& background) {
321 // This will not be called for HTTP RenderViews.
322 NOTREACHED();
323 }
324
325 bool PrerenderRenderWidgetHostView::ContainsNativeView(
326 gfx::NativeView native_view) const {
327 return false;
328 }
329
330 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698