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

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

Issue 964403003: Make it possible to set the display mode from Chromium (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Re-enable test for Android, force "was resized" IPC message there. Created 5 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') | content/renderer/resizing_mode_selector.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 #include "content/renderer/render_widget.h" 5 #include "content/renderer/render_widget.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 void OnUpdateScreenRectsMessage(const gfx::Rect& view_screen_rect, 262 void OnUpdateScreenRectsMessage(const gfx::Rect& view_screen_rect,
263 const gfx::Rect& window_screen_rect); 263 const gfx::Rect& window_screen_rect);
264 void OnShowContextMenu(ContextMenuParams* params); 264 void OnShowContextMenu(ContextMenuParams* params);
265 gfx::Rect AdjustValidationMessageAnchor(const gfx::Rect& anchor); 265 gfx::Rect AdjustValidationMessageAnchor(const gfx::Rect& anchor);
266 266
267 private: 267 private:
268 void Reapply(); 268 void Reapply();
269 void Apply(bool top_controls_shrink_blink_size, 269 void Apply(bool top_controls_shrink_blink_size,
270 float top_controls_height, 270 float top_controls_height,
271 gfx::Rect resizer_rect, 271 gfx::Rect resizer_rect,
272 bool is_fullscreen_granted); 272 bool is_fullscreen_granted,
273 blink::WebDisplayMode display_mode);
273 274
274 RenderWidget* widget_; 275 RenderWidget* widget_;
275 276
276 // Parameters as passed by RenderWidget::EnableScreenMetricsEmulation. 277 // Parameters as passed by RenderWidget::EnableScreenMetricsEmulation.
277 WebDeviceEmulationParams params_; 278 WebDeviceEmulationParams params_;
278 279
279 // The computed scale and offset used to fit widget into browser window. 280 // The computed scale and offset used to fit widget into browser window.
280 float scale_; 281 float scale_;
281 gfx::PointF offset_; 282 gfx::PointF offset_;
282 283
(...skipping 17 matching lines...) Expand all
300 scale_(1.f) { 301 scale_(1.f) {
301 original_size_ = widget_->size_; 302 original_size_ = widget_->size_;
302 original_physical_backing_size_ = widget_->physical_backing_size_; 303 original_physical_backing_size_ = widget_->physical_backing_size_;
303 original_visible_viewport_size_ = widget_->visible_viewport_size_; 304 original_visible_viewport_size_ = widget_->visible_viewport_size_;
304 original_screen_info_ = widget_->screen_info_; 305 original_screen_info_ = widget_->screen_info_;
305 original_view_screen_rect_ = widget_->view_screen_rect_; 306 original_view_screen_rect_ = widget_->view_screen_rect_;
306 original_window_screen_rect_ = widget_->window_screen_rect_; 307 original_window_screen_rect_ = widget_->window_screen_rect_;
307 Apply(widget_->top_controls_shrink_blink_size_, 308 Apply(widget_->top_controls_shrink_blink_size_,
308 widget_->top_controls_height_, 309 widget_->top_controls_height_,
309 widget_->resizer_rect_, 310 widget_->resizer_rect_,
310 widget_->is_fullscreen_granted_); 311 widget_->is_fullscreen_granted_,
312 widget_->display_mode_);
311 } 313 }
312 314
313 RenderWidget::ScreenMetricsEmulator::~ScreenMetricsEmulator() { 315 RenderWidget::ScreenMetricsEmulator::~ScreenMetricsEmulator() {
314 widget_->screen_info_ = original_screen_info_; 316 widget_->screen_info_ = original_screen_info_;
315 317
316 widget_->SetDeviceScaleFactor(original_screen_info_.deviceScaleFactor); 318 widget_->SetDeviceScaleFactor(original_screen_info_.deviceScaleFactor);
317 widget_->SetScreenMetricsEmulationParameters(false, params_); 319 widget_->SetScreenMetricsEmulationParameters(false, params_);
318 widget_->view_screen_rect_ = original_view_screen_rect_; 320 widget_->view_screen_rect_ = original_view_screen_rect_;
319 widget_->window_screen_rect_ = original_window_screen_rect_; 321 widget_->window_screen_rect_ = original_window_screen_rect_;
320 widget_->Resize(original_size_, 322 widget_->Resize(original_size_,
321 original_physical_backing_size_, 323 original_physical_backing_size_,
322 widget_->top_controls_shrink_blink_size_, 324 widget_->top_controls_shrink_blink_size_,
323 widget_->top_controls_height_, 325 widget_->top_controls_height_,
324 original_visible_viewport_size_, 326 original_visible_viewport_size_,
325 widget_->resizer_rect_, 327 widget_->resizer_rect_,
326 widget_->is_fullscreen_granted_, 328 widget_->is_fullscreen_granted_,
329 widget_->display_mode_,
327 NO_RESIZE_ACK); 330 NO_RESIZE_ACK);
328 } 331 }
329 332
330 void RenderWidget::ScreenMetricsEmulator::ChangeEmulationParams( 333 void RenderWidget::ScreenMetricsEmulator::ChangeEmulationParams(
331 const WebDeviceEmulationParams& params) { 334 const WebDeviceEmulationParams& params) {
332 params_ = params; 335 params_ = params;
333 Reapply(); 336 Reapply();
334 } 337 }
335 338
336 void RenderWidget::ScreenMetricsEmulator::Reapply() { 339 void RenderWidget::ScreenMetricsEmulator::Reapply() {
337 Apply(widget_->top_controls_shrink_blink_size_, 340 Apply(widget_->top_controls_shrink_blink_size_,
338 widget_->top_controls_height_, 341 widget_->top_controls_height_,
339 widget_->resizer_rect_, 342 widget_->resizer_rect_,
340 widget_->is_fullscreen_granted_); 343 widget_->is_fullscreen_granted_,
344 widget_->display_mode_);
341 } 345 }
342 346
343 void RenderWidget::ScreenMetricsEmulator::Apply( 347 void RenderWidget::ScreenMetricsEmulator::Apply(
344 bool top_controls_shrink_blink_size, 348 bool top_controls_shrink_blink_size,
345 float top_controls_height, 349 float top_controls_height,
346 gfx::Rect resizer_rect, 350 gfx::Rect resizer_rect,
347 bool is_fullscreen_granted) { 351 bool is_fullscreen_granted,
352 blink::WebDisplayMode display_mode) {
348 applied_widget_rect_.set_size(gfx::Size(params_.viewSize)); 353 applied_widget_rect_.set_size(gfx::Size(params_.viewSize));
349 if (!applied_widget_rect_.width()) 354 if (!applied_widget_rect_.width())
350 applied_widget_rect_.set_width(original_size_.width()); 355 applied_widget_rect_.set_width(original_size_.width());
351 if (!applied_widget_rect_.height()) 356 if (!applied_widget_rect_.height())
352 applied_widget_rect_.set_height(original_size_.height()); 357 applied_widget_rect_.set_height(original_size_.height());
353 358
354 if (params_.fitToView && !original_size_.IsEmpty()) { 359 if (params_.fitToView && !original_size_.IsEmpty()) {
355 int original_width = std::max(original_size_.width(), 1); 360 int original_width = std::max(original_size_.width(), 1);
356 int original_height = std::max(original_size_.height(), 1); 361 int original_height = std::max(original_size_.height(), 1);
357 float width_ratio = 362 float width_ratio =
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 408
404 gfx::Size physical_backing_size = gfx::ToCeiledSize(gfx::ScaleSize( 409 gfx::Size physical_backing_size = gfx::ToCeiledSize(gfx::ScaleSize(
405 original_size_, original_screen_info_.deviceScaleFactor)); 410 original_size_, original_screen_info_.deviceScaleFactor));
406 widget_->Resize(applied_widget_rect_.size(), 411 widget_->Resize(applied_widget_rect_.size(),
407 physical_backing_size, 412 physical_backing_size,
408 top_controls_shrink_blink_size, 413 top_controls_shrink_blink_size,
409 top_controls_height, 414 top_controls_height,
410 applied_widget_rect_.size(), 415 applied_widget_rect_.size(),
411 resizer_rect, 416 resizer_rect,
412 is_fullscreen_granted, 417 is_fullscreen_granted,
418 display_mode,
413 NO_RESIZE_ACK); 419 NO_RESIZE_ACK);
414 } 420 }
415 421
416 void RenderWidget::ScreenMetricsEmulator::OnResizeMessage( 422 void RenderWidget::ScreenMetricsEmulator::OnResizeMessage(
417 const ViewMsg_Resize_Params& params) { 423 const ViewMsg_Resize_Params& params) {
418 bool need_ack = params.new_size != original_size_ && 424 bool need_ack = params.new_size != original_size_ &&
419 !params.new_size.IsEmpty() && !params.physical_backing_size.IsEmpty(); 425 !params.new_size.IsEmpty() && !params.physical_backing_size.IsEmpty();
420 original_size_ = params.new_size; 426 original_size_ = params.new_size;
421 original_physical_backing_size_ = params.physical_backing_size; 427 original_physical_backing_size_ = params.physical_backing_size;
422 original_screen_info_ = params.screen_info; 428 original_screen_info_ = params.screen_info;
423 original_visible_viewport_size_ = params.visible_viewport_size; 429 original_visible_viewport_size_ = params.visible_viewport_size;
424 Apply(params.top_controls_shrink_blink_size, 430 Apply(params.top_controls_shrink_blink_size,
425 params.top_controls_height, 431 params.top_controls_height,
426 params.resizer_rect, 432 params.resizer_rect,
427 params.is_fullscreen_granted); 433 params.is_fullscreen_granted,
434 params.display_mode);
428 435
429 if (need_ack) { 436 if (need_ack) {
430 widget_->set_next_paint_is_resize_ack(); 437 widget_->set_next_paint_is_resize_ack();
431 if (widget_->compositor_) 438 if (widget_->compositor_)
432 widget_->compositor_->SetNeedsRedrawRect(gfx::Rect(widget_->size_)); 439 widget_->compositor_->SetNeedsRedrawRect(gfx::Rect(widget_->size_));
433 } 440 }
434 } 441 }
435 442
436 void RenderWidget::ScreenMetricsEmulator::OnUpdateScreenRectsMessage( 443 void RenderWidget::ScreenMetricsEmulator::OnUpdateScreenRectsMessage(
437 const gfx::Rect& view_screen_rect, 444 const gfx::Rect& view_screen_rect,
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 init_complete_(false), 480 init_complete_(false),
474 top_controls_shrink_blink_size_(false), 481 top_controls_shrink_blink_size_(false),
475 top_controls_height_(0.f), 482 top_controls_height_(0.f),
476 next_paint_flags_(0), 483 next_paint_flags_(0),
477 auto_resize_mode_(false), 484 auto_resize_mode_(false),
478 need_update_rect_for_auto_resize_(false), 485 need_update_rect_for_auto_resize_(false),
479 did_show_(false), 486 did_show_(false),
480 is_hidden_(hidden), 487 is_hidden_(hidden),
481 never_visible_(never_visible), 488 never_visible_(never_visible),
482 is_fullscreen_granted_(false), 489 is_fullscreen_granted_(false),
490 display_mode_(blink::WebDisplayModeUndefined),
483 has_focus_(false), 491 has_focus_(false),
484 handling_input_event_(false), 492 handling_input_event_(false),
485 handling_ime_event_(false), 493 handling_ime_event_(false),
486 handling_event_type_(WebInputEvent::Undefined), 494 handling_event_type_(WebInputEvent::Undefined),
487 ignore_ack_for_mouse_move_from_debugger_(false), 495 ignore_ack_for_mouse_move_from_debugger_(false),
488 closing_(false), 496 closing_(false),
489 host_closing_(false), 497 host_closing_(false),
490 is_swapped_out_(swapped_out), 498 is_swapped_out_(swapped_out),
491 input_method_is_active_(false), 499 input_method_is_active_(false),
492 text_input_type_(ui::TEXT_INPUT_TYPE_NONE), 500 text_input_type_(ui::TEXT_INPUT_TYPE_NONE),
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
765 return RenderThread::Get()->Send(message); 773 return RenderThread::Get()->Send(message);
766 } 774 }
767 775
768 void RenderWidget::Resize(const gfx::Size& new_size, 776 void RenderWidget::Resize(const gfx::Size& new_size,
769 const gfx::Size& physical_backing_size, 777 const gfx::Size& physical_backing_size,
770 bool top_controls_shrink_blink_size, 778 bool top_controls_shrink_blink_size,
771 float top_controls_height, 779 float top_controls_height,
772 const gfx::Size& visible_viewport_size, 780 const gfx::Size& visible_viewport_size,
773 const gfx::Rect& resizer_rect, 781 const gfx::Rect& resizer_rect,
774 bool is_fullscreen_granted, 782 bool is_fullscreen_granted,
783 blink::WebDisplayMode display_mode,
775 const ResizeAck resize_ack) { 784 const ResizeAck resize_ack) {
776 if (resizing_mode_selector_->NeverUsesSynchronousResize()) { 785 if (resizing_mode_selector_->NeverUsesSynchronousResize()) {
777 // A resize ack shouldn't be requested if we have not ACK'd the previous 786 // A resize ack shouldn't be requested if we have not ACK'd the previous
778 // one. 787 // one.
779 DCHECK(resize_ack != SEND_RESIZE_ACK || !next_paint_is_resize_ack()); 788 DCHECK(resize_ack != SEND_RESIZE_ACK || !next_paint_is_resize_ack());
780 DCHECK(resize_ack == SEND_RESIZE_ACK || resize_ack == NO_RESIZE_ACK); 789 DCHECK(resize_ack == SEND_RESIZE_ACK || resize_ack == NO_RESIZE_ACK);
781 } 790 }
782 791
783 // Ignore this during shutdown. 792 // Ignore this during shutdown.
784 if (!webwidget_) 793 if (!webwidget_)
785 return; 794 return;
786 795
787 if (compositor_) { 796 if (compositor_) {
788 compositor_->setViewportSize(new_size, physical_backing_size); 797 compositor_->setViewportSize(new_size, physical_backing_size);
789 } 798 }
790 799
791 physical_backing_size_ = physical_backing_size; 800 physical_backing_size_ = physical_backing_size;
792 top_controls_shrink_blink_size_ = top_controls_shrink_blink_size; 801 top_controls_shrink_blink_size_ = top_controls_shrink_blink_size;
793 top_controls_height_ = top_controls_height; 802 top_controls_height_ = top_controls_height;
794 visible_viewport_size_ = visible_viewport_size; 803 visible_viewport_size_ = visible_viewport_size;
795 resizer_rect_ = resizer_rect; 804 resizer_rect_ = resizer_rect;
796 805
797 // NOTE: We may have entered fullscreen mode without changing our size. 806 // NOTE: We may have entered fullscreen mode without changing our size.
798 bool fullscreen_change = is_fullscreen_granted_ != is_fullscreen_granted; 807 bool fullscreen_change = is_fullscreen_granted_ != is_fullscreen_granted;
799 if (fullscreen_change) 808 if (fullscreen_change)
800 WillToggleFullscreen(); 809 WillToggleFullscreen();
801 is_fullscreen_granted_ = is_fullscreen_granted; 810 is_fullscreen_granted_ = is_fullscreen_granted;
811 display_mode_ = display_mode;
802 812
803 webwidget_->setTopControlsHeight(top_controls_height, 813 webwidget_->setTopControlsHeight(top_controls_height,
804 top_controls_shrink_blink_size_); 814 top_controls_shrink_blink_size_);
805 815
806 if (size_ != new_size) { 816 if (size_ != new_size) {
807 size_ = new_size; 817 size_ = new_size;
808 818
809 // When resizing, we want to wait to paint before ACK'ing the resize. This 819 // When resizing, we want to wait to paint before ACK'ing the resize. This
810 // ensures that we only resize as fast as we can paint. We only need to 820 // ensures that we only resize as fast as we can paint. We only need to
811 // send an ACK if we are resized to a non-empty rect. 821 // send an ACK if we are resized to a non-empty rect.
(...skipping 25 matching lines...) Expand all
837 847
838 void RenderWidget::SetWindowRectSynchronously( 848 void RenderWidget::SetWindowRectSynchronously(
839 const gfx::Rect& new_window_rect) { 849 const gfx::Rect& new_window_rect) {
840 Resize(new_window_rect.size(), 850 Resize(new_window_rect.size(),
841 new_window_rect.size(), 851 new_window_rect.size(),
842 top_controls_shrink_blink_size_, 852 top_controls_shrink_blink_size_,
843 top_controls_height_, 853 top_controls_height_,
844 new_window_rect.size(), 854 new_window_rect.size(),
845 gfx::Rect(), 855 gfx::Rect(),
846 is_fullscreen_granted_, 856 is_fullscreen_granted_,
857 display_mode_,
847 NO_RESIZE_ACK); 858 NO_RESIZE_ACK);
848 view_screen_rect_ = new_window_rect; 859 view_screen_rect_ = new_window_rect;
849 window_screen_rect_ = new_window_rect; 860 window_screen_rect_ = new_window_rect;
850 if (!did_show_) 861 if (!did_show_)
851 initial_rect_ = new_window_rect; 862 initial_rect_ = new_window_rect;
852 } 863 }
853 864
854 void RenderWidget::OnClose() { 865 void RenderWidget::OnClose() {
855 if (closing_) 866 if (closing_)
856 return; 867 return;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
897 908
898 screen_info_ = params.screen_info; 909 screen_info_ = params.screen_info;
899 SetDeviceScaleFactor(screen_info_.deviceScaleFactor); 910 SetDeviceScaleFactor(screen_info_.deviceScaleFactor);
900 Resize(params.new_size, 911 Resize(params.new_size,
901 params.physical_backing_size, 912 params.physical_backing_size,
902 params.top_controls_shrink_blink_size, 913 params.top_controls_shrink_blink_size,
903 params.top_controls_height, 914 params.top_controls_height,
904 params.visible_viewport_size, 915 params.visible_viewport_size,
905 params.resizer_rect, 916 params.resizer_rect,
906 params.is_fullscreen_granted, 917 params.is_fullscreen_granted,
918 params.display_mode,
907 params.needs_resize_ack ? SEND_RESIZE_ACK : NO_RESIZE_ACK); 919 params.needs_resize_ack ? SEND_RESIZE_ACK : NO_RESIZE_ACK);
908 920
909 if (orientation_changed) 921 if (orientation_changed)
910 OnOrientationChange(); 922 OnOrientationChange();
911 } 923 }
912 924
913 void RenderWidget::OnEnableDeviceEmulation( 925 void RenderWidget::OnEnableDeviceEmulation(
914 const blink::WebDeviceEmulationParams& params) { 926 const blink::WebDeviceEmulationParams& params) {
915 if (!screen_metrics_emulator_) 927 if (!screen_metrics_emulator_)
916 screen_metrics_emulator_.reset(new ScreenMetricsEmulator(this, params)); 928 screen_metrics_emulator_.reset(new ScreenMetricsEmulator(this, params));
(...skipping 1511 matching lines...) Expand 10 before | Expand all | Expand 10 after
2428 void RenderWidget::RegisterVideoHoleFrame(RenderFrameImpl* frame) { 2440 void RenderWidget::RegisterVideoHoleFrame(RenderFrameImpl* frame) {
2429 video_hole_frames_.AddObserver(frame); 2441 video_hole_frames_.AddObserver(frame);
2430 } 2442 }
2431 2443
2432 void RenderWidget::UnregisterVideoHoleFrame(RenderFrameImpl* frame) { 2444 void RenderWidget::UnregisterVideoHoleFrame(RenderFrameImpl* frame) {
2433 video_hole_frames_.RemoveObserver(frame); 2445 video_hole_frames_.RemoveObserver(frame);
2434 } 2446 }
2435 #endif // defined(VIDEO_HOLE) 2447 #endif // defined(VIDEO_HOLE)
2436 2448
2437 } // namespace content 2449 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_widget.h ('k') | content/renderer/resizing_mode_selector.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698