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

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

Issue 1844013002: Fix main thread top controls scrolling to mirror CC. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@propertyTreesBoundsDelta
Patch Set: sievers@ review Created 4 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
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 <utility> 7 #include <utility>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 blink::WebPopupType popup_type, 211 blink::WebPopupType popup_type,
212 const blink::WebScreenInfo& screen_info, 212 const blink::WebScreenInfo& screen_info,
213 bool swapped_out, 213 bool swapped_out,
214 bool hidden, 214 bool hidden,
215 bool never_visible) 215 bool never_visible)
216 : routing_id_(MSG_ROUTING_NONE), 216 : routing_id_(MSG_ROUTING_NONE),
217 compositor_deps_(compositor_deps), 217 compositor_deps_(compositor_deps),
218 webwidget_(nullptr), 218 webwidget_(nullptr),
219 owner_delegate_(nullptr), 219 owner_delegate_(nullptr),
220 opener_id_(MSG_ROUTING_NONE), 220 opener_id_(MSG_ROUTING_NONE),
221 top_controls_shrink_blink_size_(false),
222 top_controls_height_(0.f),
223 next_paint_flags_(0), 221 next_paint_flags_(0),
224 auto_resize_mode_(false), 222 auto_resize_mode_(false),
225 need_update_rect_for_auto_resize_(false), 223 need_update_rect_for_auto_resize_(false),
226 did_show_(false), 224 did_show_(false),
227 is_hidden_(hidden), 225 is_hidden_(hidden),
228 compositor_never_visible_(never_visible), 226 compositor_never_visible_(never_visible),
229 is_fullscreen_granted_(false), 227 is_fullscreen_granted_(false),
230 display_mode_(blink::WebDisplayModeUndefined), 228 display_mode_(blink::WebDisplayModeUndefined),
231 ime_event_guard_(nullptr), 229 ime_event_guard_(nullptr),
232 closing_(false), 230 closing_(false),
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 return RenderThread::Get()->Send(message); 506 return RenderThread::Get()->Send(message);
509 } 507 }
510 508
511 void RenderWidget::SetWindowRectSynchronously( 509 void RenderWidget::SetWindowRectSynchronously(
512 const gfx::Rect& new_window_rect) { 510 const gfx::Rect& new_window_rect) {
513 ResizeParams params; 511 ResizeParams params;
514 params.screen_info = screen_info_; 512 params.screen_info = screen_info_;
515 params.new_size = new_window_rect.size(); 513 params.new_size = new_window_rect.size();
516 params.physical_backing_size = 514 params.physical_backing_size =
517 gfx::ScaleToCeiledSize(new_window_rect.size(), device_scale_factor_); 515 gfx::ScaleToCeiledSize(new_window_rect.size(), device_scale_factor_);
518 params.top_controls_shrink_blink_size = top_controls_shrink_blink_size_;
519 params.top_controls_height = top_controls_height_;
520 params.visible_viewport_size = new_window_rect.size(); 516 params.visible_viewport_size = new_window_rect.size();
521 params.resizer_rect = gfx::Rect(); 517 params.resizer_rect = gfx::Rect();
522 params.is_fullscreen_granted = is_fullscreen_granted_; 518 params.is_fullscreen_granted = is_fullscreen_granted_;
523 params.display_mode = display_mode_; 519 params.display_mode = display_mode_;
524 params.needs_resize_ack = false; 520 params.needs_resize_ack = false;
525 Resize(params); 521 Resize(params);
526 522
527 view_screen_rect_ = new_window_rect; 523 view_screen_rect_ = new_window_rect;
528 window_screen_rect_ = new_window_rect; 524 window_screen_rect_ = new_window_rect;
529 if (!did_show_) 525 if (!did_show_)
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
577 } 573 }
578 574
579 void RenderWidget::OnEnableDeviceEmulation( 575 void RenderWidget::OnEnableDeviceEmulation(
580 const blink::WebDeviceEmulationParams& params) { 576 const blink::WebDeviceEmulationParams& params) {
581 if (!screen_metrics_emulator_) { 577 if (!screen_metrics_emulator_) {
582 ResizeParams resize_params; 578 ResizeParams resize_params;
583 resize_params.screen_info = screen_info_; 579 resize_params.screen_info = screen_info_;
584 resize_params.new_size = size_; 580 resize_params.new_size = size_;
585 resize_params.physical_backing_size = physical_backing_size_; 581 resize_params.physical_backing_size = physical_backing_size_;
586 resize_params.visible_viewport_size = visible_viewport_size_; 582 resize_params.visible_viewport_size = visible_viewport_size_;
587 resize_params.top_controls_shrink_blink_size =
588 top_controls_shrink_blink_size_;
589 resize_params.top_controls_height = top_controls_height_;
590 resize_params.resizer_rect = resizer_rect_; 583 resize_params.resizer_rect = resizer_rect_;
591 resize_params.is_fullscreen_granted = is_fullscreen_granted_; 584 resize_params.is_fullscreen_granted = is_fullscreen_granted_;
592 resize_params.display_mode = display_mode_; 585 resize_params.display_mode = display_mode_;
593 screen_metrics_emulator_.reset(new RenderWidgetScreenMetricsEmulator( 586 screen_metrics_emulator_.reset(new RenderWidgetScreenMetricsEmulator(
594 this, params, resize_params, view_screen_rect_, window_screen_rect_)); 587 this, params, resize_params, view_screen_rect_, window_screen_rect_));
595 screen_metrics_emulator_->Apply(); 588 screen_metrics_emulator_->Apply();
596 } else { 589 } else {
597 screen_metrics_emulator_->ChangeEmulationParams(params); 590 screen_metrics_emulator_->ChangeEmulationParams(params);
598 } 591 }
599 } 592 }
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after
1091 1084
1092 /////////////////////////////////////////////////////////////////////////////// 1085 ///////////////////////////////////////////////////////////////////////////////
1093 // RenderWidgetScreenMetricsDelegate 1086 // RenderWidgetScreenMetricsDelegate
1094 1087
1095 void RenderWidget::Redraw() { 1088 void RenderWidget::Redraw() {
1096 set_next_paint_is_resize_ack(); 1089 set_next_paint_is_resize_ack();
1097 if (compositor_) 1090 if (compositor_)
1098 compositor_->SetNeedsRedrawRect(gfx::Rect(size_)); 1091 compositor_->SetNeedsRedrawRect(gfx::Rect(size_));
1099 } 1092 }
1100 1093
1094 void RenderWidget::ResizeWebWidget(const gfx::Size& new_size, bool resized) {
1095 if (resized)
no sievers 2016/04/12 22:44:12 Hmm, weird pattern with passing a bool to a functi
bokan 2016/04/13 17:25:39 Agree that its odd but I'm not sure there's a clea
1096 webwidget_->resize(new_size);
1097 }
1098
1101 void RenderWidget::Resize(const ResizeParams& params) { 1099 void RenderWidget::Resize(const ResizeParams& params) {
1102 bool orientation_changed = 1100 bool orientation_changed =
1103 screen_info_.orientationAngle != params.screen_info.orientationAngle || 1101 screen_info_.orientationAngle != params.screen_info.orientationAngle ||
1104 screen_info_.orientationType != params.screen_info.orientationType; 1102 screen_info_.orientationType != params.screen_info.orientationType;
1105 1103
1106 screen_info_ = params.screen_info; 1104 screen_info_ = params.screen_info;
1107 SetDeviceScaleFactor(screen_info_.deviceScaleFactor); 1105 SetDeviceScaleFactor(screen_info_.deviceScaleFactor);
1108 1106
1109 if (resizing_mode_selector_->NeverUsesSynchronousResize()) { 1107 if (resizing_mode_selector_->NeverUsesSynchronousResize()) {
1110 // A resize ack shouldn't be requested if we have not ACK'd the previous 1108 // A resize ack shouldn't be requested if we have not ACK'd the previous
1111 // one. 1109 // one.
1112 DCHECK(!params.needs_resize_ack || !next_paint_is_resize_ack()); 1110 DCHECK(!params.needs_resize_ack || !next_paint_is_resize_ack());
1113 } 1111 }
1114 1112
1115 // Ignore this during shutdown. 1113 // Ignore this during shutdown.
1116 if (!webwidget_) 1114 if (!webwidget_)
1117 return; 1115 return;
1118 1116
1119 if (compositor_) 1117 if (compositor_)
1120 compositor_->setViewportSize(params.physical_backing_size); 1118 compositor_->setViewportSize(params.physical_backing_size);
1121 1119
1122 bool resized = size_ != params.new_size || 1120 bool resized = size_ != params.new_size ||
1123 physical_backing_size_ != params.physical_backing_size; 1121 physical_backing_size_ != params.physical_backing_size;
1124 1122
1125 size_ = params.new_size; 1123 size_ = params.new_size;
1126 physical_backing_size_ = params.physical_backing_size; 1124 physical_backing_size_ = params.physical_backing_size;
1127 1125
1128 top_controls_shrink_blink_size_ = params.top_controls_shrink_blink_size;
1129 top_controls_height_ = params.top_controls_height;
1130 visible_viewport_size_ = params.visible_viewport_size; 1126 visible_viewport_size_ = params.visible_viewport_size;
1131 resizer_rect_ = params.resizer_rect; 1127 resizer_rect_ = params.resizer_rect;
1132 1128
1133 // NOTE: We may have entered fullscreen mode without changing our size. 1129 // NOTE: We may have entered fullscreen mode without changing our size.
1134 bool fullscreen_change = 1130 bool fullscreen_change =
1135 is_fullscreen_granted_ != params.is_fullscreen_granted; 1131 is_fullscreen_granted_ != params.is_fullscreen_granted;
1136 is_fullscreen_granted_ = params.is_fullscreen_granted; 1132 is_fullscreen_granted_ = params.is_fullscreen_granted;
1137 display_mode_ = params.display_mode; 1133 display_mode_ = params.display_mode;
1138 1134
1139 webwidget_->setTopControlsHeight(params.top_controls_height, 1135 gfx::Size new_widget_size = size_;
1140 top_controls_shrink_blink_size_); 1136 if (IsUseZoomForDSFEnabled()) {
1137 new_widget_size = gfx::ScaleToCeiledSize(new_widget_size,
1138 GetOriginalDeviceScaleFactor());
1139 }
1140 // When resizing, we want to wait to paint before ACK'ing the resize. This
1141 // ensures that we only resize as fast as we can paint. We only need to
1142 // send an ACK if we are resized to a non-empty rect.
1143 ResizeWebWidget(new_widget_size, resized);
1141 1144
1142 if (resized) {
1143 gfx::Size new_widget_size = size_;
1144 if (IsUseZoomForDSFEnabled()) {
1145 new_widget_size = gfx::ScaleToCeiledSize(new_widget_size,
1146 GetOriginalDeviceScaleFactor());
1147 }
1148 // When resizing, we want to wait to paint before ACK'ing the resize. This
1149 // ensures that we only resize as fast as we can paint. We only need to
1150 // send an ACK if we are resized to a non-empty rect.
1151 webwidget_->resize(new_widget_size);
1152 }
1153 WebSize visual_viewport_size; 1145 WebSize visual_viewport_size;
1154 1146
1155 if (IsUseZoomForDSFEnabled()) { 1147 if (IsUseZoomForDSFEnabled()) {
1156 visual_viewport_size = gfx::ScaleToCeiledSize( 1148 visual_viewport_size = gfx::ScaleToCeiledSize(
1157 params.visible_viewport_size, 1149 params.visible_viewport_size,
1158 GetOriginalDeviceScaleFactor()); 1150 GetOriginalDeviceScaleFactor());
1159 } else { 1151 } else {
1160 visual_viewport_size = visible_viewport_size_; 1152 visual_viewport_size = visible_viewport_size_;
1161 } 1153 }
1162 1154
(...skipping 985 matching lines...) Expand 10 before | Expand all | Expand 10 after
2148 } 2140 }
2149 2141
2150 float RenderWidget::GetOriginalDeviceScaleFactor() const { 2142 float RenderWidget::GetOriginalDeviceScaleFactor() const {
2151 return 2143 return
2152 screen_metrics_emulator_ ? 2144 screen_metrics_emulator_ ?
2153 screen_metrics_emulator_->original_screen_info().deviceScaleFactor : 2145 screen_metrics_emulator_->original_screen_info().deviceScaleFactor :
2154 device_scale_factor_; 2146 device_scale_factor_;
2155 } 2147 }
2156 2148
2157 } // namespace content 2149 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698