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

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: --CompositingStuff 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 LOG(WARNING) << "Here?";
20 render_widget_host_->set_view(this);
21 }
22
23 PrerenderRenderWidgetHostView::~PrerenderRenderWidgetHostView() {
24 }
25
26 void PrerenderRenderWidgetHostView::Init(RenderWidgetHostView* view) {
27 #if defined(OS_MACOSX)
28 cocoa_view_bounds_ = view->GetViewBounds();
29 root_window_rect_ = view->GetRootWindowRect();
30 #endif // defined(OS_MACOSX)
31 SetBounds(view->GetViewBounds());
32
33 // PrerenderRenderWidgetHostViews are always hidden. This reduces the
34 // process priority of the render process while prerendering, and prevents it
35 // from painting anything until the page is actually displayed.
36 WasHidden();
37 }
38
39 void PrerenderRenderWidgetHostView::InitAsPopup(
40 RenderWidgetHostView* parent_host_view, const gfx::Rect& pos) {
41 NOTREACHED();
42 }
43
44 void PrerenderRenderWidgetHostView::InitAsFullscreen() {
45 NOTREACHED();
46 }
47
48 RenderWidgetHost* PrerenderRenderWidgetHostView::GetRenderWidgetHost() const {
49 return render_widget_host_;
50 }
51
52 void PrerenderRenderWidgetHostView::DidBecomeSelected() {
53 // The View won't be shown during prerendering.
54 NOTREACHED();
55 }
56
57 void PrerenderRenderWidgetHostView::WasHidden() {
58 render_widget_host_->WasHidden();
59 }
60
61 void PrerenderRenderWidgetHostView::SetSize(const gfx::Size& size) {
62 SetBounds(gfx::Rect(GetViewBounds().origin(), size));
63 }
64
65 void PrerenderRenderWidgetHostView::SetBounds(const gfx::Rect& rect) {
66 bounds_ = rect;
67 if (render_widget_host_)
68 render_widget_host_->WasResized();
69 }
70
71 gfx::NativeView PrerenderRenderWidgetHostView::GetNativeView() {
72 return NULL;
73 }
74
75 void PrerenderRenderWidgetHostView::MovePluginWindows(
76 const std::vector<webkit::npapi::WebPluginGeometry>& moves) {
77 // Since a PrerenderRenderWidgetHostView is always hidden and plugins are not
78 // loaded during prerendering, this will never be called.
79 NOTREACHED();
80 }
81
82 void PrerenderRenderWidgetHostView::Focus() {
83 // A PrerenderRenderWidgetHostView can never be focused, as it's always
84 // hidden.
85 NOTREACHED();
86 }
87
88 void PrerenderRenderWidgetHostView::Blur() {
89 }
90
91 bool PrerenderRenderWidgetHostView::HasFocus() {
92 return false;
93 }
94
95 void PrerenderRenderWidgetHostView::Show() {
96 // A PrerenderRenderWidgetHostView can never be shown, as it is not yet
97 // associated with a tab.
98 NOTREACHED();
99 }
100
101 void PrerenderRenderWidgetHostView::Hide() {
102 WasHidden();
103 }
104
105 bool PrerenderRenderWidgetHostView::IsShowing() {
106 return false;
107 }
108
109 gfx::Rect PrerenderRenderWidgetHostView::GetViewBounds() const {
110 return bounds_;
111 }
112
113 void PrerenderRenderWidgetHostView::UpdateCursor(const WebCursor& cursor) {
114 // The cursor should only be updated in response to a mouse event, which
115 // hidden RenderViews don't have.
116 NOTREACHED();
117 }
118
119 void PrerenderRenderWidgetHostView::SetIsLoading(bool is_loading) {
120 // Do nothing. PrerenderContents manages this flag.
121 }
122
123 void PrerenderRenderWidgetHostView::ImeUpdateTextInputState(
124 WebKit::WebTextInputType type,
125 const gfx::Rect& caret_rect) {
126 // Not called on hidden views.
127 NOTREACHED();
128 }
129
130 void PrerenderRenderWidgetHostView::ImeCancelComposition() {
131 // Not called on hidden views.
132 NOTREACHED();
133 }
134
135 void PrerenderRenderWidgetHostView::DidUpdateBackingStore(
136 const gfx::Rect& scroll_rect, int scroll_dx, int scroll_dy,
137 const std::vector<gfx::Rect>& copy_rects) {
138 // Since prerendering RenderViewsHosts are always hidden, this will not be
139 // be called.
140 NOTREACHED();
141 }
142
143 void PrerenderRenderWidgetHostView::RenderViewGone(
144 base::TerminationStatus status, int error_code) {
145 // TODO(mmenke): This should result in the PrerenderContents cancelling the
146 // prerender itself.
147 Destroy();
148 }
149
150 void PrerenderRenderWidgetHostView::WillDestroyRenderWidget(
151 RenderWidgetHost* rwh) {
152 if (rwh == render_widget_host_)
153 render_widget_host_ = NULL;
154 }
155
156 void PrerenderRenderWidgetHostView::Destroy() {
157 delete this;
158 }
159
160 void PrerenderRenderWidgetHostView::SetTooltipText(
161 const std::wstring& tooltip_text) {
162 // Since this is only set on mouse move and the View can't be focused, this
163 // will never be called.
164 NOTREACHED();
165 }
166
167 BackingStore* PrerenderRenderWidgetHostView::AllocBackingStore(
168 const gfx::Size& size) {
169 // Since prerendering RenderViewsHosts are always hidden, this will not be
170 // be called.
171 NOTREACHED();
172 return NULL;
173 }
174
175 #if defined(OS_MACOSX)
176 void PrerenderRenderWidgetHostView::SetTakesFocusOnlyOnMouseDown(bool flag) {
177 // This is only used by on RenderWidgetHosts currently in a TabContents.
178 NOTREACHED();
179 }
180
181 gfx::Rect PrerenderRenderWidgetHostView::GetViewCocoaBounds() const {
182 return cocoa_view_bounds_;
183 }
184
185 gfx::Rect PrerenderRenderWidgetHostView::GetRootWindowRect() {
186 return root_window_rect_;
187 }
188
189 void PrerenderRenderWidgetHostView::SetActive(bool active) {
190 // This view can never be made visible.
191 NOTREACHED();
192 }
193
194 void PrerenderRenderWidgetHostView::SetWindowVisibility(bool visible) {
195 // This view can never be made visible.
196 NOTREACHED();
197 }
198
199 void PrerenderRenderWidgetHostView::WindowFrameChanged() {
200 // Since there's no frame, and nothing to notify |this| of its change, this
201 // will never get called.
202 NOTREACHED();
203 }
204
205 // Since plugins are not loaded until the prerendered page is displayed, none of
206 // the following functions will be called.
207 void PrerenderRenderWidgetHostView::PluginFocusChanged(bool focused,
208 int plugin_id) {
209 NOTREACHED();
210 }
211
212 void PrerenderRenderWidgetHostView::StartPluginIme() {
213 NOTREACHED();
214 }
215
216 bool PrerenderRenderWidgetHostView::PostProcessEventForPluginIme(
217 const NativeWebKeyboardEvent& event) {
218 NOTREACHED();
219 return false;
220 }
221
222 gfx::PluginWindowHandle
223 PrerenderRenderWidgetHostView::AllocateFakePluginWindowHandle(
224 bool opaque, bool root) {
225 NOTREACHED();
226 return gfx::kNullPluginWindow;
227 }
228
229 void PrerenderRenderWidgetHostView::DestroyFakePluginWindowHandle(
230 gfx::PluginWindowHandle window) {
231 NOTREACHED();
232 }
233
234 void PrerenderRenderWidgetHostView::AcceleratedSurfaceSetIOSurface(
235 gfx::PluginWindowHandle window,
236 int32 width,
237 int32 height,
238 uint64 io_surface_identifier) {
239 }
240
241 void PrerenderRenderWidgetHostView::AcceleratedSurfaceSetTransportDIB(
242 gfx::PluginWindowHandle window,
243 int32 width,
244 int32 height,
245 TransportDIB::Handle transport_dib) {
246 }
247
248 void PrerenderRenderWidgetHostView::AcceleratedSurfaceBuffersSwapped(
249 gfx::PluginWindowHandle window,
250 uint64 surface_id,
251 int renderer_id,
252 int32 route_id,
253 int gpu_host_id,
254 uint64 swap_buffers_count) {
255 }
256
257 void PrerenderRenderWidgetHostView::GpuRenderingStateDidChange() {
258 }
259 #endif // defined(OS_MACOSX)
260
261 #if defined(TOOLKIT_USES_GTK)
262 void PrerenderRenderWidgetHostView::CreatePluginContainer(
263 gfx::PluginWindowHandle id) {
264 // Since plugins are not loaded until the prerendered page is loaded, this
265 // should never be called.
266 NOTREACHED();
267 }
268
269 void PrerenderRenderWidgetHostView::DestroyPluginContainer(
270 gfx::PluginWindowHandle id) {
271 }
272
273 void PrerenderRenderWidgetHostView::AcceleratedCompositingActivated(
274 bool activated) {
275 }
276 #endif // defined(TOOLKIT_USES_GTK)
277
278 #if defined(OS_WIN)
279 void PrerenderRenderWidgetHostView::WillWmDestroy() {
280 }
281
282 void PrerenderRenderWidgetHostView::ShowCompositorHostWindow(bool show) {
283 }
284 #endif // defined(OS_WIN)
285
286 gfx::PluginWindowHandle
287 PrerenderRenderWidgetHostView::GetCompositingSurface() {
288 return gfx::kNullPluginWindow;
289 }
290
291 void PrerenderRenderWidgetHostView::SetVisuallyDeemphasized(
292 const SkColor* color, bool animate) {
293 // This will not be called until the RVH is swapped into a tab.
294 NOTREACHED();
295 }
296
297 void PrerenderRenderWidgetHostView::SetBackground(const SkBitmap& background) {
298 // This will not be called for HTTP RenderViews.
299 NOTREACHED();
300 }
301
302 bool PrerenderRenderWidgetHostView::ContainsNativeView(
303 gfx::NativeView native_view) const {
304 return false;
305 }
306
307 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698