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

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

Issue 220263003: [DevTools] Migrate device emulation to WebDeviceEmulationParams. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 6 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
« no previous file with comments | « content/renderer/render_widget.h ('k') | no next file » | 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 #include "content/renderer/render_widget.h" 5 #include "content/renderer/render_widget.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/debug/trace_event.h" 9 #include "base/debug/trace_event.h"
10 #include "base/debug/trace_event_synthetic_delay.h" 10 #include "base/debug/trace_event_synthetic_delay.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 #include "content/renderer/renderer_webkitplatformsupport_impl.h" 47 #include "content/renderer/renderer_webkitplatformsupport_impl.h"
48 #include "content/renderer/resizing_mode_selector.h" 48 #include "content/renderer/resizing_mode_selector.h"
49 #include "ipc/ipc_sync_message.h" 49 #include "ipc/ipc_sync_message.h"
50 #include "skia/ext/platform_canvas.h" 50 #include "skia/ext/platform_canvas.h"
51 #include "third_party/WebKit/public/platform/WebCursorInfo.h" 51 #include "third_party/WebKit/public/platform/WebCursorInfo.h"
52 #include "third_party/WebKit/public/platform/WebGraphicsContext3D.h" 52 #include "third_party/WebKit/public/platform/WebGraphicsContext3D.h"
53 #include "third_party/WebKit/public/platform/WebRect.h" 53 #include "third_party/WebKit/public/platform/WebRect.h"
54 #include "third_party/WebKit/public/platform/WebScreenInfo.h" 54 #include "third_party/WebKit/public/platform/WebScreenInfo.h"
55 #include "third_party/WebKit/public/platform/WebSize.h" 55 #include "third_party/WebKit/public/platform/WebSize.h"
56 #include "third_party/WebKit/public/platform/WebString.h" 56 #include "third_party/WebKit/public/platform/WebString.h"
57 #include "third_party/WebKit/public/web/WebDeviceEmulationParams.h"
57 #include "third_party/WebKit/public/web/WebPagePopup.h" 58 #include "third_party/WebKit/public/web/WebPagePopup.h"
58 #include "third_party/WebKit/public/web/WebPopupMenu.h" 59 #include "third_party/WebKit/public/web/WebPopupMenu.h"
59 #include "third_party/WebKit/public/web/WebPopupMenuInfo.h" 60 #include "third_party/WebKit/public/web/WebPopupMenuInfo.h"
60 #include "third_party/WebKit/public/web/WebRange.h" 61 #include "third_party/WebKit/public/web/WebRange.h"
61 #include "third_party/skia/include/core/SkShader.h" 62 #include "third_party/skia/include/core/SkShader.h"
62 #include "ui/base/ui_base_switches.h" 63 #include "ui/base/ui_base_switches.h"
63 #include "ui/gfx/frame_time.h" 64 #include "ui/gfx/frame_time.h"
64 #include "ui/gfx/point_conversions.h" 65 #include "ui/gfx/point_conversions.h"
65 #include "ui/gfx/rect_conversions.h" 66 #include "ui/gfx/rect_conversions.h"
66 #include "ui/gfx/size_conversions.h" 67 #include "ui/gfx/size_conversions.h"
(...skipping 10 matching lines...) Expand all
77 #if defined(OS_POSIX) 78 #if defined(OS_POSIX)
78 #include "ipc/ipc_channel_posix.h" 79 #include "ipc/ipc_channel_posix.h"
79 #include "third_party/skia/include/core/SkMallocPixelRef.h" 80 #include "third_party/skia/include/core/SkMallocPixelRef.h"
80 #include "third_party/skia/include/core/SkPixelRef.h" 81 #include "third_party/skia/include/core/SkPixelRef.h"
81 #endif // defined(OS_POSIX) 82 #endif // defined(OS_POSIX)
82 83
83 #include "third_party/WebKit/public/web/WebWidget.h" 84 #include "third_party/WebKit/public/web/WebWidget.h"
84 85
85 using blink::WebCompositionUnderline; 86 using blink::WebCompositionUnderline;
86 using blink::WebCursorInfo; 87 using blink::WebCursorInfo;
88 using blink::WebDeviceEmulationParams;
87 using blink::WebGestureEvent; 89 using blink::WebGestureEvent;
88 using blink::WebInputEvent; 90 using blink::WebInputEvent;
89 using blink::WebKeyboardEvent; 91 using blink::WebKeyboardEvent;
90 using blink::WebMouseEvent; 92 using blink::WebMouseEvent;
91 using blink::WebMouseWheelEvent; 93 using blink::WebMouseWheelEvent;
92 using blink::WebNavigationPolicy; 94 using blink::WebNavigationPolicy;
93 using blink::WebPagePopup; 95 using blink::WebPagePopup;
94 using blink::WebPopupMenu; 96 using blink::WebPopupMenu;
95 using blink::WebPopupMenuInfo; 97 using blink::WebPopupMenuInfo;
96 using blink::WebPopupType; 98 using blink::WebPopupType;
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 } // namespace 156 } // namespace
155 157
156 namespace content { 158 namespace content {
157 159
158 // RenderWidget::ScreenMetricsEmulator ---------------------------------------- 160 // RenderWidget::ScreenMetricsEmulator ----------------------------------------
159 161
160 class RenderWidget::ScreenMetricsEmulator { 162 class RenderWidget::ScreenMetricsEmulator {
161 public: 163 public:
162 ScreenMetricsEmulator( 164 ScreenMetricsEmulator(
163 RenderWidget* widget, 165 RenderWidget* widget,
164 const gfx::Rect& device_rect, 166 const WebDeviceEmulationParams& params);
165 const gfx::Rect& widget_rect,
166 float device_scale_factor,
167 bool fit_to_view);
168 virtual ~ScreenMetricsEmulator(); 167 virtual ~ScreenMetricsEmulator();
169 168
169 // Scale and offset used to convert between host coordinates
170 // and webwidget coordinates.
170 float scale() { return scale_; } 171 float scale() { return scale_; }
171 gfx::Point offset() { return offset_; } 172 gfx::Point offset() { return offset_; }
172 gfx::Rect widget_rect() const { return widget_rect_; } 173 gfx::Rect applied_widget_rect() const { return applied_widget_rect_; }
173 gfx::Rect original_screen_rect() const { return original_view_screen_rect_; } 174 gfx::Rect original_screen_rect() const { return original_view_screen_rect_; }
174 const WebScreenInfo& original_screen_info() { return original_screen_info_; } 175 const WebScreenInfo& original_screen_info() { return original_screen_info_; }
175 176
176 void ChangeEmulationParams( 177 void ChangeEmulationParams(
177 const gfx::Rect& device_rect, 178 const WebDeviceEmulationParams& params);
178 const gfx::Rect& widget_rect,
179 float device_scale_factor,
180 bool fit_to_view);
181 179
182 // The following methods alter handlers' behavior for messages related to 180 // The following methods alter handlers' behavior for messages related to
183 // widget size and position. 181 // widget size and position.
184 void OnResizeMessage(const ViewMsg_Resize_Params& params); 182 void OnResizeMessage(const ViewMsg_Resize_Params& params);
185 void OnUpdateScreenRectsMessage(const gfx::Rect& view_screen_rect, 183 void OnUpdateScreenRectsMessage(const gfx::Rect& view_screen_rect,
186 const gfx::Rect& window_screen_rect); 184 const gfx::Rect& window_screen_rect);
187 void OnShowContextMenu(ContextMenuParams* params); 185 void OnShowContextMenu(ContextMenuParams* params);
188 186
189 private: 187 private:
190 void CalculateScaleAndOffset(); 188 void Reapply();
191 void Apply(float overdraw_bottom_height, 189 void Apply(float overdraw_bottom_height,
192 gfx::Rect resizer_rect, bool is_fullscreen); 190 gfx::Rect resizer_rect, bool is_fullscreen);
193 191
194 RenderWidget* widget_; 192 RenderWidget* widget_;
195 193
196 // Parameters as passed by RenderWidget::EnableScreenMetricsEmulation. 194 // Parameters as passed by RenderWidget::EnableScreenMetricsEmulation.
197 gfx::Rect device_rect_; 195 WebDeviceEmulationParams params_;
198 gfx::Rect widget_rect_;
199 float device_scale_factor_;
200 bool fit_to_view_;
201 196
202 // The computed scale and offset used to fit widget into browser window. 197 // The computed scale and offset used to fit widget into browser window.
203 float scale_; 198 float scale_;
204 gfx::Point offset_; 199 gfx::Point offset_;
205 200
201 // Widget rect as passed to webwidget.
202 gfx::Rect applied_widget_rect_;
203
206 // Original values to restore back after emulation ends. 204 // Original values to restore back after emulation ends.
207 gfx::Size original_size_; 205 gfx::Size original_size_;
208 gfx::Size original_physical_backing_size_; 206 gfx::Size original_physical_backing_size_;
209 blink::WebScreenInfo original_screen_info_; 207 blink::WebScreenInfo original_screen_info_;
210 gfx::Rect original_view_screen_rect_; 208 gfx::Rect original_view_screen_rect_;
211 gfx::Rect original_window_screen_rect_; 209 gfx::Rect original_window_screen_rect_;
212 }; 210 };
213 211
214 RenderWidget::ScreenMetricsEmulator::ScreenMetricsEmulator( 212 RenderWidget::ScreenMetricsEmulator::ScreenMetricsEmulator(
215 RenderWidget* widget, 213 RenderWidget* widget,
216 const gfx::Rect& device_rect, 214 const WebDeviceEmulationParams& params)
217 const gfx::Rect& widget_rect,
218 float device_scale_factor,
219 bool fit_to_view)
220 : widget_(widget), 215 : widget_(widget),
221 device_rect_(device_rect), 216 params_(params),
222 widget_rect_(widget_rect),
223 device_scale_factor_(device_scale_factor),
224 fit_to_view_(fit_to_view),
225 scale_(1.f) { 217 scale_(1.f) {
226 original_size_ = widget_->size_; 218 original_size_ = widget_->size_;
227 original_physical_backing_size_ = widget_->physical_backing_size_; 219 original_physical_backing_size_ = widget_->physical_backing_size_;
228 original_screen_info_ = widget_->screen_info_; 220 original_screen_info_ = widget_->screen_info_;
229 original_view_screen_rect_ = widget_->view_screen_rect_; 221 original_view_screen_rect_ = widget_->view_screen_rect_;
230 original_window_screen_rect_ = widget_->window_screen_rect_; 222 original_window_screen_rect_ = widget_->window_screen_rect_;
231 Apply(widget_->overdraw_bottom_height_, 223 Apply(widget_->overdraw_bottom_height_,
232 widget_->resizer_rect_, widget_->is_fullscreen_); 224 widget_->resizer_rect_, widget_->is_fullscreen_);
233 } 225 }
234 226
235 RenderWidget::ScreenMetricsEmulator::~ScreenMetricsEmulator() { 227 RenderWidget::ScreenMetricsEmulator::~ScreenMetricsEmulator() {
236 widget_->screen_info_ = original_screen_info_; 228 widget_->screen_info_ = original_screen_info_;
237 229
238 widget_->SetDeviceScaleFactor(original_screen_info_.deviceScaleFactor); 230 widget_->SetDeviceScaleFactor(original_screen_info_.deviceScaleFactor);
239 widget_->SetScreenMetricsEmulationParameters(0.f, gfx::Point(), 1.f); 231 widget_->SetScreenMetricsEmulationParameters(0.f, gfx::Point(), 1.f);
240 widget_->view_screen_rect_ = original_view_screen_rect_; 232 widget_->view_screen_rect_ = original_view_screen_rect_;
241 widget_->window_screen_rect_ = original_window_screen_rect_; 233 widget_->window_screen_rect_ = original_window_screen_rect_;
242 widget_->Resize(original_size_, original_physical_backing_size_, 234 widget_->Resize(original_size_, original_physical_backing_size_,
243 widget_->overdraw_bottom_height_, widget_->resizer_rect_, 235 widget_->overdraw_bottom_height_, widget_->resizer_rect_,
244 widget_->is_fullscreen_, NO_RESIZE_ACK); 236 widget_->is_fullscreen_, NO_RESIZE_ACK);
245 } 237 }
246 238
247 void RenderWidget::ScreenMetricsEmulator::ChangeEmulationParams( 239 void RenderWidget::ScreenMetricsEmulator::ChangeEmulationParams(
248 const gfx::Rect& device_rect, 240 const WebDeviceEmulationParams& params) {
249 const gfx::Rect& widget_rect, 241 params_ = params;
250 float device_scale_factor, 242 Reapply();
251 bool fit_to_view) { 243 }
252 device_rect_ = device_rect; 244
253 widget_rect_ = widget_rect; 245 void RenderWidget::ScreenMetricsEmulator::Reapply() {
254 device_scale_factor_ = device_scale_factor;
255 fit_to_view_ = fit_to_view;
256 Apply(widget_->overdraw_bottom_height_, 246 Apply(widget_->overdraw_bottom_height_,
257 widget_->resizer_rect_, widget_->is_fullscreen_); 247 widget_->resizer_rect_, widget_->is_fullscreen_);
258 } 248 }
259 249
260 void RenderWidget::ScreenMetricsEmulator::CalculateScaleAndOffset() { 250 void RenderWidget::ScreenMetricsEmulator::Apply(
261 if (fit_to_view_) { 251 float overdraw_bottom_height, gfx::Rect resizer_rect, bool is_fullscreen) {
252 applied_widget_rect_.set_size(params_.viewSize.isEmpty() ?
253 original_size_ : gfx::Size(params_.viewSize));
254
255 if (params_.fitToView) {
262 DCHECK(!original_size_.IsEmpty()); 256 DCHECK(!original_size_.IsEmpty());
263 257
264 int width_with_gutter = 258 int width_with_gutter =
265 std::max(original_size_.width() - 2 * device_rect_.x(), 1); 259 std::max(original_size_.width() - 2 * params_.viewInsets.width, 1);
266 int height_with_gutter = 260 int height_with_gutter =
267 std::max(original_size_.height() - 2 * device_rect_.y(), 1); 261 std::max(original_size_.height() - 2 * params_.viewInsets.height, 1);
268 float width_ratio = 262 float width_ratio =
269 static_cast<float>(widget_rect_.width()) / width_with_gutter; 263 static_cast<float>(applied_widget_rect_.width()) / width_with_gutter;
270 float height_ratio = 264 float height_ratio =
271 static_cast<float>(widget_rect_.height()) / height_with_gutter; 265 static_cast<float>(applied_widget_rect_.height()) / height_with_gutter;
272 float ratio = std::max(1.0f, std::max(width_ratio, height_ratio)); 266 float ratio = std::max(1.0f, std::max(width_ratio, height_ratio));
273 scale_ = 1.f / ratio; 267 scale_ = 1.f / ratio;
274 268
275 // Center emulated view inside available view space. 269 // Center emulated view inside available view space.
276 offset_.set_x((original_size_.width() - scale_ * widget_rect_.width()) / 2); 270 offset_.set_x(
271 (original_size_.width() - scale_ * applied_widget_rect_.width()) / 2);
277 offset_.set_y( 272 offset_.set_y(
278 (original_size_.height() - scale_ * widget_rect_.height()) / 2); 273 (original_size_.height() - scale_ * applied_widget_rect_.height()) / 2);
279 } else { 274 } else {
280 scale_ = 1.f; 275 scale_ = 1.f;
281 offset_.SetPoint(0, 0); 276 offset_.SetPoint(0, 0);
282 } 277 }
283 }
284 278
285 void RenderWidget::ScreenMetricsEmulator::Apply( 279 if (params_.screenPosition == WebDeviceEmulationParams::Desktop) {
286 float overdraw_bottom_height, gfx::Rect resizer_rect, bool is_fullscreen) { 280 applied_widget_rect_.set_origin(original_view_screen_rect_.origin());
287 gfx::Rect applied_widget_rect = widget_rect_;
288 if (widget_rect_.size().IsEmpty()) {
289 scale_ = 1.f;
290 offset_.SetPoint(0, 0);
291 applied_widget_rect =
292 gfx::Rect(original_view_screen_rect_.origin(), original_size_);
293 } else {
294 CalculateScaleAndOffset();
295 }
296
297 if (device_rect_.size().IsEmpty()) {
298 widget_->screen_info_.rect = original_screen_info_.rect; 281 widget_->screen_info_.rect = original_screen_info_.rect;
299 widget_->screen_info_.availableRect = original_screen_info_.availableRect; 282 widget_->screen_info_.availableRect = original_screen_info_.availableRect;
300 widget_->window_screen_rect_ = original_window_screen_rect_; 283 widget_->window_screen_rect_ = original_window_screen_rect_;
301 } else { 284 } else {
302 widget_->screen_info_.rect = gfx::Rect(device_rect_.size()); 285 applied_widget_rect_.set_origin(gfx::Point(0, 0));
303 widget_->screen_info_.availableRect = gfx::Rect(device_rect_.size()); 286 widget_->screen_info_.rect = applied_widget_rect_;
304 widget_->window_screen_rect_ = widget_->screen_info_.availableRect; 287 widget_->screen_info_.availableRect = applied_widget_rect_;
288 widget_->window_screen_rect_ = applied_widget_rect_;
305 } 289 }
306 290
307 float applied_device_scale_factor = device_scale_factor_ ? 291 float applied_device_scale_factor = params_.deviceScaleFactor ?
308 device_scale_factor_ : original_screen_info_.deviceScaleFactor; 292 params_.deviceScaleFactor : original_screen_info_.deviceScaleFactor;
309 widget_->screen_info_.deviceScaleFactor = applied_device_scale_factor; 293 widget_->screen_info_.deviceScaleFactor = applied_device_scale_factor;
310 294
311 // Pass three emulation parameters to the blink side: 295 // Pass three emulation parameters to the blink side:
312 // - we keep the real device scale factor in compositor to produce sharp image 296 // - we keep the real device scale factor in compositor to produce sharp image
313 // even when emulating different scale factor; 297 // even when emulating different scale factor;
314 // - in order to fit into view, WebView applies offset and scale to the 298 // - in order to fit into view, WebView applies offset and scale to the
315 // root layer. 299 // root layer.
316 widget_->SetScreenMetricsEmulationParameters( 300 widget_->SetScreenMetricsEmulationParameters(
317 original_screen_info_.deviceScaleFactor, offset_, scale_); 301 original_screen_info_.deviceScaleFactor, offset_, scale_);
318 302
319 widget_->SetDeviceScaleFactor(applied_device_scale_factor); 303 widget_->SetDeviceScaleFactor(applied_device_scale_factor);
320 widget_->view_screen_rect_ = applied_widget_rect; 304 widget_->view_screen_rect_ = applied_widget_rect_;
321 305
322 gfx::Size physical_backing_size = gfx::ToCeiledSize(gfx::ScaleSize( 306 gfx::Size physical_backing_size = gfx::ToCeiledSize(gfx::ScaleSize(
323 original_size_, original_screen_info_.deviceScaleFactor)); 307 original_size_, original_screen_info_.deviceScaleFactor));
324 widget_->Resize(applied_widget_rect.size(), physical_backing_size, 308 widget_->Resize(applied_widget_rect_.size(), physical_backing_size,
325 overdraw_bottom_height, resizer_rect, is_fullscreen, NO_RESIZE_ACK); 309 overdraw_bottom_height, resizer_rect, is_fullscreen, NO_RESIZE_ACK);
326 } 310 }
327 311
328 void RenderWidget::ScreenMetricsEmulator::OnResizeMessage( 312 void RenderWidget::ScreenMetricsEmulator::OnResizeMessage(
329 const ViewMsg_Resize_Params& params) { 313 const ViewMsg_Resize_Params& params) {
330 bool need_ack = params.new_size != original_size_ && 314 bool need_ack = params.new_size != original_size_ &&
331 !params.new_size.IsEmpty() && !params.physical_backing_size.IsEmpty(); 315 !params.new_size.IsEmpty() && !params.physical_backing_size.IsEmpty();
332 original_size_ = params.new_size; 316 original_size_ = params.new_size;
333 original_physical_backing_size_ = params.physical_backing_size; 317 original_physical_backing_size_ = params.physical_backing_size;
334 original_screen_info_ = params.screen_info; 318 original_screen_info_ = params.screen_info;
335 Apply(params.overdraw_bottom_height, params.resizer_rect, 319 Apply(params.overdraw_bottom_height, params.resizer_rect,
336 params.is_fullscreen); 320 params.is_fullscreen);
337 321
338 if (need_ack) { 322 if (need_ack) {
339 widget_->set_next_paint_is_resize_ack(); 323 widget_->set_next_paint_is_resize_ack();
340 if (widget_->compositor_) 324 if (widget_->compositor_)
341 widget_->compositor_->SetNeedsRedrawRect(gfx::Rect(widget_->size_)); 325 widget_->compositor_->SetNeedsRedrawRect(gfx::Rect(widget_->size_));
342 } 326 }
343 } 327 }
344 328
345 void RenderWidget::ScreenMetricsEmulator::OnUpdateScreenRectsMessage( 329 void RenderWidget::ScreenMetricsEmulator::OnUpdateScreenRectsMessage(
346 const gfx::Rect& view_screen_rect, 330 const gfx::Rect& view_screen_rect,
347 const gfx::Rect& window_screen_rect) { 331 const gfx::Rect& window_screen_rect) {
348 original_view_screen_rect_ = view_screen_rect; 332 original_view_screen_rect_ = view_screen_rect;
349 original_window_screen_rect_ = window_screen_rect; 333 original_window_screen_rect_ = window_screen_rect;
350 if (device_rect_.size().IsEmpty()) 334 if (params_.screenPosition == WebDeviceEmulationParams::Desktop)
351 widget_->window_screen_rect_ = window_screen_rect; 335 Reapply();
352 if (widget_rect_.size().IsEmpty())
353 widget_->view_screen_rect_ = view_screen_rect;
354 } 336 }
355 337
356 void RenderWidget::ScreenMetricsEmulator::OnShowContextMenu( 338 void RenderWidget::ScreenMetricsEmulator::OnShowContextMenu(
357 ContextMenuParams* params) { 339 ContextMenuParams* params) {
358 params->x *= scale_; 340 params->x *= scale_;
359 params->x += offset_.x(); 341 params->x += offset_.x();
360 params->y *= scale_; 342 params->y *= scale_;
361 params->y += offset_.y(); 343 params->y += offset_.y();
362 } 344 }
363 345
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
541 523
542 bool RenderWidget::UsingSynchronousRendererCompositor() const { 524 bool RenderWidget::UsingSynchronousRendererCompositor() const {
543 #if defined(OS_ANDROID) 525 #if defined(OS_ANDROID)
544 return SynchronousCompositorFactory::GetInstance() != NULL; 526 return SynchronousCompositorFactory::GetInstance() != NULL;
545 #else 527 #else
546 return false; 528 return false;
547 #endif 529 #endif
548 } 530 }
549 531
550 void RenderWidget::EnableScreenMetricsEmulation( 532 void RenderWidget::EnableScreenMetricsEmulation(
551 const gfx::Rect& device_rect, 533 const WebDeviceEmulationParams& params) {
552 const gfx::Rect& widget_rect, 534 if (!screen_metrics_emulator_)
553 float device_scale_factor, 535 screen_metrics_emulator_.reset(new ScreenMetricsEmulator(this, params));
554 bool fit_to_view) { 536 else
555 if (!screen_metrics_emulator_) { 537 screen_metrics_emulator_->ChangeEmulationParams(params);
556 screen_metrics_emulator_.reset(new ScreenMetricsEmulator(this,
557 device_rect, widget_rect, device_scale_factor, fit_to_view));
558 } else {
559 screen_metrics_emulator_->ChangeEmulationParams(device_rect,
560 widget_rect, device_scale_factor, fit_to_view);
561 }
562 } 538 }
563 539
564 void RenderWidget::DisableScreenMetricsEmulation() { 540 void RenderWidget::DisableScreenMetricsEmulation() {
565 screen_metrics_emulator_.reset(); 541 screen_metrics_emulator_.reset();
566 } 542 }
567 543
568 void RenderWidget::SetPopupOriginAdjustmentsForEmulation( 544 void RenderWidget::SetPopupOriginAdjustmentsForEmulation(
569 ScreenMetricsEmulator* emulator) { 545 ScreenMetricsEmulator* emulator) {
570 popup_origin_scale_for_emulation_ = emulator->scale(); 546 popup_origin_scale_for_emulation_ = emulator->scale();
571 popup_view_origin_for_emulation_ = emulator->widget_rect().origin(); 547 popup_view_origin_for_emulation_ = emulator->applied_widget_rect().origin();
572 popup_screen_origin_for_emulation_ = gfx::Point( 548 popup_screen_origin_for_emulation_ = gfx::Point(
573 emulator->original_screen_rect().origin().x() + emulator->offset().x(), 549 emulator->original_screen_rect().origin().x() + emulator->offset().x(),
574 emulator->original_screen_rect().origin().y() + emulator->offset().y()); 550 emulator->original_screen_rect().origin().y() + emulator->offset().y());
575 screen_info_ = emulator->original_screen_info(); 551 screen_info_ = emulator->original_screen_info();
576 device_scale_factor_ = screen_info_.deviceScaleFactor; 552 device_scale_factor_ = screen_info_.deviceScaleFactor;
577 } 553 }
578 554
579 void RenderWidget::SetScreenMetricsEmulationParameters( 555 void RenderWidget::SetScreenMetricsEmulationParameters(
580 float device_scale_factor, 556 float device_scale_factor,
581 const gfx::Point& root_layer_offset, 557 const gfx::Point& root_layer_offset,
(...skipping 2314 matching lines...) Expand 10 before | Expand all | Expand 10 after
2896 2872
2897 void RenderWidget::RegisterSwappedOutChildFrame(RenderFrameImpl* frame) { 2873 void RenderWidget::RegisterSwappedOutChildFrame(RenderFrameImpl* frame) {
2898 swapped_out_frames_.AddObserver(frame); 2874 swapped_out_frames_.AddObserver(frame);
2899 } 2875 }
2900 2876
2901 void RenderWidget::UnregisterSwappedOutChildFrame(RenderFrameImpl* frame) { 2877 void RenderWidget::UnregisterSwappedOutChildFrame(RenderFrameImpl* frame) {
2902 swapped_out_frames_.RemoveObserver(frame); 2878 swapped_out_frames_.RemoveObserver(frame);
2903 } 2879 }
2904 2880
2905 } // namespace content 2881 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_widget.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698