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

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: Created 7 years, 3 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
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 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 namespace IPC { 47 namespace IPC {
48 class SyncMessage; 48 class SyncMessage;
49 } 49 }
50 50
51 namespace WebKit { 51 namespace WebKit {
52 class WebGestureEvent; 52 class WebGestureEvent;
53 class WebInputEvent; 53 class WebInputEvent;
54 class WebKeyboardEvent; 54 class WebKeyboardEvent;
55 class WebMouseEvent; 55 class WebMouseEvent;
56 class WebTouchEvent; 56 class WebTouchEvent;
57 class WebTouchPoint;
57 struct WebPoint; 58 struct WebPoint;
58 struct WebRenderingStatsImpl; 59 struct WebRenderingStatsImpl;
59 } 60 }
60 61
61 namespace cc { class OutputSurface; } 62 namespace cc { class OutputSurface; }
62 63
63 namespace ui { 64 namespace ui {
64 class Range; 65 class Range;
65 } 66 }
66 67
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 virtual void SetBackground(const SkBitmap& bitmap); 275 virtual void SetBackground(const SkBitmap& bitmap);
275 276
276 // Resizes the render widget. 277 // Resizes the render widget.
277 void Resize(const gfx::Size& new_size, 278 void Resize(const gfx::Size& new_size,
278 const gfx::Size& physical_backing_size, 279 const gfx::Size& physical_backing_size,
279 float overdraw_bottom_height, 280 float overdraw_bottom_height,
280 const gfx::Rect& resizer_rect, 281 const gfx::Rect& resizer_rect,
281 bool is_fullscreen, 282 bool is_fullscreen,
282 ResizeAck resize_ack); 283 ResizeAck resize_ack);
283 284
285 // Emulates device and widget metrics. Supplied values override everything
286 // coming from host.
287 void EmulateDevice(bool enabled,
288 const gfx::Size& device_size,
289 const gfx::Rect& widget_rect,
290 float device_scale_factor,
291 bool fit_to_view);
292
284 // RenderWidget IPC message handlers 293 // RenderWidget IPC message handlers
285 void OnHandleInputEvent(const WebKit::WebInputEvent* event, 294 void OnHandleInputEvent(const WebKit::WebInputEvent* event,
286 const ui::LatencyInfo& latency_info, 295 const ui::LatencyInfo& latency_info,
287 bool keyboard_shortcut); 296 bool keyboard_shortcut);
288 void OnCursorVisibilityChange(bool is_visible); 297 void OnCursorVisibilityChange(bool is_visible);
289 void OnMouseCaptureLost(); 298 void OnMouseCaptureLost();
290 virtual void OnSetFocus(bool enable); 299 virtual void OnSetFocus(bool enable);
291 void OnClose(); 300 void OnClose();
292 void OnCreatingNewAck(); 301 void OnCreatingNewAck();
293 virtual void OnResize(const ViewMsg_Resize_Params& params); 302 virtual void OnResize(const ViewMsg_Resize_Params& params);
294 void OnChangeResizeRect(const gfx::Rect& resizer_rect); 303 void OnChangeResizeRect(const gfx::Rect& resizer_rect);
295 virtual void OnWasHidden(); 304 virtual void OnWasHidden();
296 virtual void OnWasShown(bool needs_repainting); 305 virtual void OnWasShown(bool needs_repainting);
297 virtual void OnWasSwappedOut(); 306 virtual void OnWasSwappedOut();
307 void OnEmulateDeviceAck(bool enabled);
298 void OnUpdateRectAck(); 308 void OnUpdateRectAck();
299 void OnCreateVideoAck(int32 video_id); 309 void OnCreateVideoAck(int32 video_id);
300 void OnUpdateVideoAck(int32 video_id); 310 void OnUpdateVideoAck(int32 video_id);
301 void OnRequestMoveAck(); 311 void OnRequestMoveAck();
302 void OnSetInputMethodActive(bool is_active); 312 void OnSetInputMethodActive(bool is_active);
303 virtual void OnImeSetComposition( 313 virtual void OnImeSetComposition(
304 const string16& text, 314 const string16& text,
305 const std::vector<WebKit::WebCompositionUnderline>& underlines, 315 const std::vector<WebKit::WebCompositionUnderline>& underlines,
306 int selection_start, 316 int selection_start,
307 int selection_end); 317 int selection_end);
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after
728 738
729 uint32 next_output_surface_id_; 739 uint32 next_output_surface_id_;
730 740
731 #if defined(OS_ANDROID) 741 #if defined(OS_ANDROID)
732 // A counter for number of outstanding messages from the renderer to the 742 // A counter for number of outstanding messages from the renderer to the
733 // browser regarding IME-type events that have not been acknowledged by the 743 // browser regarding IME-type events that have not been acknowledged by the
734 // browser. If this value is not 0 IME events will be dropped. 744 // browser. If this value is not 0 IME events will be dropped.
735 int outstanding_ime_acks_; 745 int outstanding_ime_acks_;
736 #endif 746 #endif
737 747
748 // Helper class which is managing device emulation.
749 // TODO(dgozman): fit to view is not supported yet.
750 class DeviceEmulationHelper {
jam 2013/09/11 02:59:47 nit: since this is a private class, just forward d
dgozman 2013/09/13 11:32:36 Unfortunately, this class is also used by RenderVi
751 public:
752 DeviceEmulationHelper(const gfx::Size& device_size,
753 const gfx::Rect& widget_rect,
754 float device_scale_factor,
755 bool fit_to_view);
756 virtual ~DeviceEmulationHelper();
757
758 void BeginEmulation(RenderWidget* widget);
759 void ChangeEmulationParams(RenderWidget* widget,
760 DeviceEmulationHelper* params);
761 void EndEmulation(RenderWidget* widget);
762
763 void OnResizeMessage(RenderWidget* widget,
764 const ViewMsg_Resize_Params& params);
765 void OnUpdateScreenRectsMessage(RenderWidget* widget,
766 const gfx::Rect view_screen_rect,
767 const gfx::Rect window_screen_rect);
768 WebKit::WebInputEvent* ConvertInputEventToEmulated(
769 RenderWidget* widget, const WebKit::WebInputEvent* event);
770
771 void PopupCreated(RenderWidget* widget, RenderWidget* popup);
772 WebKit::WebRect ConvertPopupScreenRectFromEmulated(
773 RenderWidget* popup, const WebKit::WebRect& rect);
774
775 private:
776 void Apply(RenderWidget* widget, float overdraw_bottom_height,
777 gfx::Rect resizer_rect, bool is_fullscreen);
778 void ConvertMouseEventToEmulated(WebKit::WebMouseEvent* event);
779 void ConvertTouchPointToEmulated(WebKit::WebTouchPoint* point);
780
781 gfx::Size device_size_;
782 gfx::Rect widget_rect_;
783 float device_scale_factor_;
784 bool fit_to_view_;
785
786 gfx::Size original_size_;
787 gfx::Size original_physical_backing_size_;
788 WebKit::WebScreenInfo original_screen_info_;
789 gfx::Rect original_view_screen_rect_;
790 gfx::Rect original_window_screen_rect_;
791
792 base::WeakPtrFactory<DeviceEmulationHelper> weak_ptr_factory_;
793
794 DISALLOW_COPY_AND_ASSIGN(DeviceEmulationHelper);
795 };
796
797 scoped_ptr<DeviceEmulationHelper> device_emulation_helper_;
798
799 // Popup has a weak ptr to the device emulation helper of creator.
800 base::WeakPtr<DeviceEmulationHelper> popup_device_emulation_helper_;
801
802 // While we send ViewMsg_EmulateDevice to the host, these store the requested
803 // emulation parameters.
804 scoped_ptr<DeviceEmulationHelper> pending_device_emulation_helper_;
805 bool pending_device_emulation_enabled_;
806
738 base::WeakPtrFactory<RenderWidget> weak_ptr_factory_; 807 base::WeakPtrFactory<RenderWidget> weak_ptr_factory_;
739 808
740 DISALLOW_COPY_AND_ASSIGN(RenderWidget); 809 DISALLOW_COPY_AND_ASSIGN(RenderWidget);
741 }; 810 };
742 811
743 } // namespace content 812 } // namespace content
744 813
745 #endif // CONTENT_RENDERER_RENDER_WIDGET_H_ 814 #endif // CONTENT_RENDERER_RENDER_WIDGET_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698