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

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: Sync to trunk 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 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
211 void PrerenderRenderWidgetHostView::StartPluginIme() {
212 NOTREACHED();
213 }
214
215 bool PrerenderRenderWidgetHostView::PostProcessEventForPluginIme(
216 const NativeWebKeyboardEvent& event) {
217 NOTREACHED();
218 return false;
219 }
220
221 gfx::PluginWindowHandle
222 PrerenderRenderWidgetHostView::AllocateFakePluginWindowHandle(
223 bool opaque, bool root) {
224 NOTREACHED();
225 return gfx::kNullPluginWindow;
226 }
227
228 void PrerenderRenderWidgetHostView::DestroyFakePluginWindowHandle(
229 gfx::PluginWindowHandle window) {
230 NOTREACHED();
231 }
232
233 void PrerenderRenderWidgetHostView::AcceleratedSurfaceSetIOSurface(
234 gfx::PluginWindowHandle window,
235 int32 width,
236 int32 height,
237 uint64 io_surface_identifier) {
238 }
239
240 void PrerenderRenderWidgetHostView::AcceleratedSurfaceSetTransportDIB(
241 gfx::PluginWindowHandle window,
242 int32 width,
243 int32 height,
244 TransportDIB::Handle transport_dib) {
245 }
246
247 void PrerenderRenderWidgetHostView::AcceleratedSurfaceBuffersSwapped(
248 gfx::PluginWindowHandle window,
249 uint64 surface_id,
250 int renderer_id,
251 int32 route_id,
252 int gpu_host_id,
253 uint64 swap_buffers_count) {
254 }
255
256 void PrerenderRenderWidgetHostView::GpuRenderingStateDidChange() {
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 }
271
272 void PrerenderRenderWidgetHostView::AcceleratedCompositingActivated(
273 bool activated) {
274 }
275 #endif // defined(TOOLKIT_USES_GTK)
276
277 #if defined(OS_WIN)
278 void PrerenderRenderWidgetHostView::WillWmDestroy() {
279 }
280
281 void PrerenderRenderWidgetHostView::ShowCompositorHostWindow(bool show) {
282 }
283 #endif // defined(OS_WIN)
284
285 gfx::PluginWindowHandle
286 PrerenderRenderWidgetHostView::GetCompositingSurface() {
287 return gfx::kNullPluginWindow;
288 }
289
290 void PrerenderRenderWidgetHostView::SetVisuallyDeemphasized(
291 const SkColor* color, bool animate) {
292 // This will not be called until the RVH is swapped into a tab.
293 NOTREACHED();
294 }
295
296 void PrerenderRenderWidgetHostView::SetBackground(const SkBitmap& background) {
297 // This will not be called for HTTP RenderViews.
298 NOTREACHED();
299 }
300
301 bool PrerenderRenderWidgetHostView::ContainsNativeView(
302 gfx::NativeView native_view) const {
303 return false;
304 }
305
306 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_render_widget_host_view.h ('k') | chrome/browser/prerender/prerender_resource_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698