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

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: Let ResizeWebWidget decide whether to resize 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
« no previous file with comments | « content/renderer/render_widget.h ('k') | third_party/WebKit/Source/core/frame/FrameView.h » ('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 <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 ResizeParams& params) {
1095 bool resized = size_ != params.new_size ||
1096 physical_backing_size_ != params.physical_backing_size;
no sievers 2016/04/13 18:40:24 I'm wondering: If physical backing size changed to
bokan 2016/04/13 20:29:25 sgtm. I'll put up a new patch with that change (an
no sievers 2016/04/13 23:04:31 ok, lgtm if you want to do that in a separate patc
1097
1098 size_ = params.new_size;
1099 physical_backing_size_ = params.physical_backing_size;
1100
1101 gfx::Size new_widget_size = size_;
1102 if (IsUseZoomForDSFEnabled()) {
no sievers 2016/04/13 18:40:23 nit: and maybe line 1102-1105 can just be a helper
bokan 2016/04/13 20:29:25 Done.
1103 new_widget_size = gfx::ScaleToCeiledSize(new_widget_size,
1104 GetOriginalDeviceScaleFactor());
1105 }
1106
1107 if (resized)
1108 webwidget_->resize(new_widget_size);
1109 }
1110
1101 void RenderWidget::Resize(const ResizeParams& params) { 1111 void RenderWidget::Resize(const ResizeParams& params) {
1102 bool orientation_changed = 1112 bool orientation_changed =
1103 screen_info_.orientationAngle != params.screen_info.orientationAngle || 1113 screen_info_.orientationAngle != params.screen_info.orientationAngle ||
1104 screen_info_.orientationType != params.screen_info.orientationType; 1114 screen_info_.orientationType != params.screen_info.orientationType;
1105 1115
1106 screen_info_ = params.screen_info; 1116 screen_info_ = params.screen_info;
1107 SetDeviceScaleFactor(screen_info_.deviceScaleFactor); 1117 SetDeviceScaleFactor(screen_info_.deviceScaleFactor);
1108 1118
1109 if (resizing_mode_selector_->NeverUsesSynchronousResize()) { 1119 if (resizing_mode_selector_->NeverUsesSynchronousResize()) {
1110 // A resize ack shouldn't be requested if we have not ACK'd the previous 1120 // A resize ack shouldn't be requested if we have not ACK'd the previous
1111 // one. 1121 // one.
1112 DCHECK(!params.needs_resize_ack || !next_paint_is_resize_ack()); 1122 DCHECK(!params.needs_resize_ack || !next_paint_is_resize_ack());
1113 } 1123 }
1114 1124
1115 // Ignore this during shutdown. 1125 // Ignore this during shutdown.
1116 if (!webwidget_) 1126 if (!webwidget_)
1117 return; 1127 return;
1118 1128
1119 if (compositor_) 1129 if (compositor_)
1120 compositor_->setViewportSize(params.physical_backing_size); 1130 compositor_->setViewportSize(params.physical_backing_size);
1121 1131
1122 bool resized = size_ != params.new_size ||
1123 physical_backing_size_ != params.physical_backing_size;
1124
1125 size_ = params.new_size;
1126 physical_backing_size_ = params.physical_backing_size;
1127
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; 1132 visible_viewport_size_ = params.visible_viewport_size;
1131 resizer_rect_ = params.resizer_rect; 1133 resizer_rect_ = params.resizer_rect;
1132 1134
1133 // NOTE: We may have entered fullscreen mode without changing our size. 1135 // NOTE: We may have entered fullscreen mode without changing our size.
1134 bool fullscreen_change = 1136 bool fullscreen_change =
1135 is_fullscreen_granted_ != params.is_fullscreen_granted; 1137 is_fullscreen_granted_ != params.is_fullscreen_granted;
1136 is_fullscreen_granted_ = params.is_fullscreen_granted; 1138 is_fullscreen_granted_ = params.is_fullscreen_granted;
1137 display_mode_ = params.display_mode; 1139 display_mode_ = params.display_mode;
1138 1140
1139 webwidget_->setTopControlsHeight(params.top_controls_height, 1141 // When resizing, we want to wait to paint before ACK'ing the resize. This
1140 top_controls_shrink_blink_size_); 1142 // ensures that we only resize as fast as we can paint. We only need to
1143 // send an ACK if we are resized to a non-empty rect.
no sievers 2016/04/13 18:40:23 nit: This comment was a bit out of place even befo
bokan 2016/04/13 20:29:25 Done.
1144 ResizeWebWidget(params);
1141 1145
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; 1146 WebSize visual_viewport_size;
1154 1147
1155 if (IsUseZoomForDSFEnabled()) { 1148 if (IsUseZoomForDSFEnabled()) {
1156 visual_viewport_size = gfx::ScaleToCeiledSize( 1149 visual_viewport_size = gfx::ScaleToCeiledSize(
1157 params.visible_viewport_size, 1150 params.visible_viewport_size,
1158 GetOriginalDeviceScaleFactor()); 1151 GetOriginalDeviceScaleFactor());
1159 } else { 1152 } else {
1160 visual_viewport_size = visible_viewport_size_; 1153 visual_viewport_size = visible_viewport_size_;
1161 } 1154 }
1162 1155
(...skipping 985 matching lines...) Expand 10 before | Expand all | Expand 10 after
2148 } 2141 }
2149 2142
2150 float RenderWidget::GetOriginalDeviceScaleFactor() const { 2143 float RenderWidget::GetOriginalDeviceScaleFactor() const {
2151 return 2144 return
2152 screen_metrics_emulator_ ? 2145 screen_metrics_emulator_ ?
2153 screen_metrics_emulator_->original_screen_info().deviceScaleFactor : 2146 screen_metrics_emulator_->original_screen_info().deviceScaleFactor :
2154 device_scale_factor_; 2147 device_scale_factor_;
2155 } 2148 }
2156 2149
2157 } // namespace content 2150 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_widget.h ('k') | third_party/WebKit/Source/core/frame/FrameView.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698