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

Side by Side Diff: content/renderer/render_widget.h

Issue 23364004: Implementation of device metrics emulation in render view. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Rebase Created 7 years, 2 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
« no previous file with comments | « content/renderer/render_view_impl.cc ('k') | content/renderer/render_widget.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #ifndef CONTENT_RENDERER_RENDER_WIDGET_H_ 5 #ifndef CONTENT_RENDERER_RENDER_WIDGET_H_
6 #define CONTENT_RENDERER_RENDER_WIDGET_H_ 6 #define CONTENT_RENDERER_RENDER_WIDGET_H_
7 7
8 #include <deque> 8 #include <deque>
9 #include <map> 9 #include <map>
10 10
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 struct WebRenderingStatsImpl; 58 struct WebRenderingStatsImpl;
59 } 59 }
60 60
61 namespace cc { class OutputSurface; } 61 namespace cc { class OutputSurface; }
62 62
63 namespace gfx { 63 namespace gfx {
64 class Range; 64 class Range;
65 } 65 }
66 66
67 namespace content { 67 namespace content {
68 class ExternalPopupMenu;
68 class PepperPluginInstanceImpl; 69 class PepperPluginInstanceImpl;
69 class RenderWidgetCompositor; 70 class RenderWidgetCompositor;
70 class RenderWidgetTest; 71 class RenderWidgetTest;
72 struct ContextMenuParams;
71 struct GpuRenderingStats; 73 struct GpuRenderingStats;
72 struct WebPluginGeometry; 74 struct WebPluginGeometry;
73 75
74 // RenderWidget provides a communication bridge between a WebWidget and 76 // RenderWidget provides a communication bridge between a WebWidget and
75 // a RenderWidgetHost, the latter of which lives in a different process. 77 // a RenderWidgetHost, the latter of which lives in a different process.
76 class CONTENT_EXPORT RenderWidget 78 class CONTENT_EXPORT RenderWidget
77 : public IPC::Listener, 79 : public IPC::Listener,
78 public IPC::Sender, 80 public IPC::Sender,
79 NON_EXPORTED_BASE(virtual public WebKit::WebWidgetClient), 81 NON_EXPORTED_BASE(virtual public WebKit::WebWidgetClient),
80 NON_EXPORTED_BASE(public WebGraphicsContext3DSwapBuffersClient), 82 NON_EXPORTED_BASE(public WebGraphicsContext3DSwapBuffersClient),
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 virtual void InstrumentWillBeginFrame() {} 218 virtual void InstrumentWillBeginFrame() {}
217 virtual void InstrumentDidBeginFrame() {} 219 virtual void InstrumentDidBeginFrame() {}
218 virtual void InstrumentDidCancelFrame() {} 220 virtual void InstrumentDidCancelFrame() {}
219 virtual void InstrumentWillComposite() {} 221 virtual void InstrumentWillComposite() {}
220 222
221 virtual bool AllowPartialSwap() const; 223 virtual bool AllowPartialSwap() const;
222 bool UsingSynchronousRendererCompositor() const; 224 bool UsingSynchronousRendererCompositor() const;
223 225
224 bool is_swapped_out() { return is_swapped_out_; } 226 bool is_swapped_out() { return is_swapped_out_; }
225 227
228 // ScreenMetricsEmulator class manages screen emulation inside a render
229 // widget. This includes resizing, placing view on the screen at desired
230 // position, changing device scale factor, and scaling down the whole
231 // widget if required to fit into the browser window.
232 class ScreenMetricsEmulator;
233
234 // Emulates screen and widget metrics. Supplied values override everything
235 // coming from host.
236 void EnableScreenMetricsEmulation(
237 const gfx::Size& device_size,
238 const gfx::Rect& widget_rect,
239 float device_scale_factor,
240 bool fit_to_view);
241 void DisableScreenMetricsEmulation();
242 void SetPopupOriginAdjustmentsForEmulation(ScreenMetricsEmulator* emulator);
243
226 protected: 244 protected:
227 // Friend RefCounted so that the dtor can be non-public. Using this class 245 // Friend RefCounted so that the dtor can be non-public. Using this class
228 // without ref-counting is an error. 246 // without ref-counting is an error.
229 friend class base::RefCounted<RenderWidget>; 247 friend class base::RefCounted<RenderWidget>;
230 // For unit tests. 248 // For unit tests.
231 friend class RenderWidgetTest; 249 friend class RenderWidgetTest;
232 250
233 enum ResizeAck { 251 enum ResizeAck {
234 SEND_RESIZE_ACK, 252 SEND_RESIZE_ACK,
235 NO_RESIZE_ACK, 253 NO_RESIZE_ACK,
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 // mainly intended to be used in conjuction with WebView::SetIsTransparent(). 302 // mainly intended to be used in conjuction with WebView::SetIsTransparent().
285 virtual void SetBackground(const SkBitmap& bitmap); 303 virtual void SetBackground(const SkBitmap& bitmap);
286 304
287 // Resizes the render widget. 305 // Resizes the render widget.
288 void Resize(const gfx::Size& new_size, 306 void Resize(const gfx::Size& new_size,
289 const gfx::Size& physical_backing_size, 307 const gfx::Size& physical_backing_size,
290 float overdraw_bottom_height, 308 float overdraw_bottom_height,
291 const gfx::Rect& resizer_rect, 309 const gfx::Rect& resizer_rect,
292 bool is_fullscreen, 310 bool is_fullscreen,
293 ResizeAck resize_ack); 311 ResizeAck resize_ack);
312 virtual void SetScreenMetricsEmulationParameters(
313 float device_scale_factor, float root_layer_scale);
314 void SetExternalPopupOriginAdjustmentsForEmulation(
315 ExternalPopupMenu* popup, ScreenMetricsEmulator* emulator);
316 virtual void OnShowHostContextMenu(ContextMenuParams* params);
294 317
295 // RenderWidget IPC message handlers 318 // RenderWidget IPC message handlers
296 void OnHandleInputEvent(const WebKit::WebInputEvent* event, 319 void OnHandleInputEvent(const WebKit::WebInputEvent* event,
297 const ui::LatencyInfo& latency_info, 320 const ui::LatencyInfo& latency_info,
298 bool keyboard_shortcut); 321 bool keyboard_shortcut);
299 void OnCursorVisibilityChange(bool is_visible); 322 void OnCursorVisibilityChange(bool is_visible);
300 void OnMouseCaptureLost(); 323 void OnMouseCaptureLost();
301 virtual void OnSetFocus(bool enable); 324 virtual void OnSetFocus(bool enable);
302 void OnClose(); 325 void OnClose();
303 void OnCreatingNewAck(); 326 void OnCreatingNewAck();
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after
745 768
746 uint32 next_output_surface_id_; 769 uint32 next_output_surface_id_;
747 770
748 #if defined(OS_ANDROID) 771 #if defined(OS_ANDROID)
749 // A counter for number of outstanding messages from the renderer to the 772 // A counter for number of outstanding messages from the renderer to the
750 // browser regarding IME-type events that have not been acknowledged by the 773 // browser regarding IME-type events that have not been acknowledged by the
751 // browser. If this value is not 0 IME events will be dropped. 774 // browser. If this value is not 0 IME events will be dropped.
752 int outstanding_ime_acks_; 775 int outstanding_ime_acks_;
753 #endif 776 #endif
754 777
778 scoped_ptr<ScreenMetricsEmulator> screen_metrics_emulator_;
779
780 // Popups may be displaced when screen metrics emulation is enabled.
781 // These values are used to properly adjust popup position.
782 gfx::Point popup_view_origin_for_emulation_;
783 gfx::Point popup_screen_origin_for_emulation_;
784 float popup_origin_scale_for_emulation_;
785
755 base::WeakPtrFactory<RenderWidget> weak_ptr_factory_; 786 base::WeakPtrFactory<RenderWidget> weak_ptr_factory_;
756 787
757 DISALLOW_COPY_AND_ASSIGN(RenderWidget); 788 DISALLOW_COPY_AND_ASSIGN(RenderWidget);
758 }; 789 };
759 790
760 } // namespace content 791 } // namespace content
761 792
762 #endif // CONTENT_RENDERER_RENDER_WIDGET_H_ 793 #endif // CONTENT_RENDERER_RENDER_WIDGET_H_
OLDNEW
« no previous file with comments | « content/renderer/render_view_impl.cc ('k') | content/renderer/render_widget.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698