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

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: Build fix after rebase Created 4 years, 7 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 <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 blink::WebPopupType popup_type, 238 blink::WebPopupType popup_type,
239 const blink::WebScreenInfo& screen_info, 239 const blink::WebScreenInfo& screen_info,
240 bool swapped_out, 240 bool swapped_out,
241 bool hidden, 241 bool hidden,
242 bool never_visible) 242 bool never_visible)
243 : routing_id_(MSG_ROUTING_NONE), 243 : routing_id_(MSG_ROUTING_NONE),
244 compositor_deps_(compositor_deps), 244 compositor_deps_(compositor_deps),
245 webwidget_(nullptr), 245 webwidget_(nullptr),
246 owner_delegate_(nullptr), 246 owner_delegate_(nullptr),
247 opener_id_(MSG_ROUTING_NONE), 247 opener_id_(MSG_ROUTING_NONE),
248 top_controls_shrink_blink_size_(false),
249 top_controls_height_(0.f),
250 next_paint_flags_(0), 248 next_paint_flags_(0),
251 auto_resize_mode_(false), 249 auto_resize_mode_(false),
252 need_update_rect_for_auto_resize_(false), 250 need_update_rect_for_auto_resize_(false),
253 did_show_(false), 251 did_show_(false),
254 is_hidden_(hidden), 252 is_hidden_(hidden),
255 compositor_never_visible_(never_visible), 253 compositor_never_visible_(never_visible),
256 is_fullscreen_granted_(false), 254 is_fullscreen_granted_(false),
257 display_mode_(blink::WebDisplayModeUndefined), 255 display_mode_(blink::WebDisplayModeUndefined),
258 ime_event_guard_(nullptr), 256 ime_event_guard_(nullptr),
259 closing_(false), 257 closing_(false),
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 return RenderThread::Get()->Send(message); 533 return RenderThread::Get()->Send(message);
536 } 534 }
537 535
538 void RenderWidget::SetWindowRectSynchronously( 536 void RenderWidget::SetWindowRectSynchronously(
539 const gfx::Rect& new_window_rect) { 537 const gfx::Rect& new_window_rect) {
540 ResizeParams params; 538 ResizeParams params;
541 params.screen_info = screen_info_; 539 params.screen_info = screen_info_;
542 params.new_size = new_window_rect.size(); 540 params.new_size = new_window_rect.size();
543 params.physical_backing_size = 541 params.physical_backing_size =
544 gfx::ScaleToCeiledSize(new_window_rect.size(), device_scale_factor_); 542 gfx::ScaleToCeiledSize(new_window_rect.size(), device_scale_factor_);
545 params.top_controls_shrink_blink_size = top_controls_shrink_blink_size_;
546 params.top_controls_height = top_controls_height_;
547 params.visible_viewport_size = new_window_rect.size(); 543 params.visible_viewport_size = new_window_rect.size();
548 params.resizer_rect = gfx::Rect(); 544 params.resizer_rect = gfx::Rect();
549 params.is_fullscreen_granted = is_fullscreen_granted_; 545 params.is_fullscreen_granted = is_fullscreen_granted_;
550 params.display_mode = display_mode_; 546 params.display_mode = display_mode_;
551 params.needs_resize_ack = false; 547 params.needs_resize_ack = false;
552 Resize(params); 548 Resize(params);
553 549
554 view_screen_rect_ = new_window_rect; 550 view_screen_rect_ = new_window_rect;
555 window_screen_rect_ = new_window_rect; 551 window_screen_rect_ = new_window_rect;
556 if (!did_show_) 552 if (!did_show_)
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
604 } 600 }
605 601
606 void RenderWidget::OnEnableDeviceEmulation( 602 void RenderWidget::OnEnableDeviceEmulation(
607 const blink::WebDeviceEmulationParams& params) { 603 const blink::WebDeviceEmulationParams& params) {
608 if (!screen_metrics_emulator_) { 604 if (!screen_metrics_emulator_) {
609 ResizeParams resize_params; 605 ResizeParams resize_params;
610 resize_params.screen_info = screen_info_; 606 resize_params.screen_info = screen_info_;
611 resize_params.new_size = size_; 607 resize_params.new_size = size_;
612 resize_params.physical_backing_size = physical_backing_size_; 608 resize_params.physical_backing_size = physical_backing_size_;
613 resize_params.visible_viewport_size = visible_viewport_size_; 609 resize_params.visible_viewport_size = visible_viewport_size_;
614 resize_params.top_controls_shrink_blink_size =
615 top_controls_shrink_blink_size_;
616 resize_params.top_controls_height = top_controls_height_;
617 resize_params.resizer_rect = resizer_rect_; 610 resize_params.resizer_rect = resizer_rect_;
618 resize_params.is_fullscreen_granted = is_fullscreen_granted_; 611 resize_params.is_fullscreen_granted = is_fullscreen_granted_;
619 resize_params.display_mode = display_mode_; 612 resize_params.display_mode = display_mode_;
620 screen_metrics_emulator_.reset(new RenderWidgetScreenMetricsEmulator( 613 screen_metrics_emulator_.reset(new RenderWidgetScreenMetricsEmulator(
621 this, params, resize_params, view_screen_rect_, window_screen_rect_)); 614 this, params, resize_params, view_screen_rect_, window_screen_rect_));
622 screen_metrics_emulator_->Apply(); 615 screen_metrics_emulator_->Apply();
623 } else { 616 } else {
624 screen_metrics_emulator_->ChangeEmulationParams(params); 617 screen_metrics_emulator_->ChangeEmulationParams(params);
625 } 618 }
626 } 619 }
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after
1108 1101
1109 /////////////////////////////////////////////////////////////////////////////// 1102 ///////////////////////////////////////////////////////////////////////////////
1110 // RenderWidgetScreenMetricsDelegate 1103 // RenderWidgetScreenMetricsDelegate
1111 1104
1112 void RenderWidget::Redraw() { 1105 void RenderWidget::Redraw() {
1113 set_next_paint_is_resize_ack(); 1106 set_next_paint_is_resize_ack();
1114 if (compositor_) 1107 if (compositor_)
1115 compositor_->SetNeedsRedrawRect(gfx::Rect(size_)); 1108 compositor_->SetNeedsRedrawRect(gfx::Rect(size_));
1116 } 1109 }
1117 1110
1111 void RenderWidget::ResizeWebWidget() {
1112 webwidget_->resize(GetSizeForWebWidget());
1113 }
1114
1115 gfx::Size RenderWidget::GetSizeForWebWidget() const {
1116 if (IsUseZoomForDSFEnabled())
1117 return gfx::ScaleToCeiledSize(size_, GetOriginalDeviceScaleFactor());
1118
1119 return size_;
1120 }
1121
1118 void RenderWidget::Resize(const ResizeParams& params) { 1122 void RenderWidget::Resize(const ResizeParams& params) {
1119 bool orientation_changed = 1123 bool orientation_changed =
1120 screen_info_.orientationAngle != params.screen_info.orientationAngle || 1124 screen_info_.orientationAngle != params.screen_info.orientationAngle ||
1121 screen_info_.orientationType != params.screen_info.orientationType; 1125 screen_info_.orientationType != params.screen_info.orientationType;
1122 1126
1123 screen_info_ = params.screen_info; 1127 screen_info_ = params.screen_info;
1124 SetDeviceScaleFactor(screen_info_.deviceScaleFactor); 1128 SetDeviceScaleFactor(screen_info_.deviceScaleFactor);
1125 1129
1126 if (resizing_mode_selector_->NeverUsesSynchronousResize()) { 1130 if (resizing_mode_selector_->NeverUsesSynchronousResize()) {
1127 // A resize ack shouldn't be requested if we have not ACK'd the previous 1131 // A resize ack shouldn't be requested if we have not ACK'd the previous
1128 // one. 1132 // one.
1129 DCHECK(!params.needs_resize_ack || !next_paint_is_resize_ack()); 1133 DCHECK(!params.needs_resize_ack || !next_paint_is_resize_ack());
1130 } 1134 }
1131 1135
1132 // Ignore this during shutdown. 1136 // Ignore this during shutdown.
1133 if (!webwidget_) 1137 if (!webwidget_)
1134 return; 1138 return;
1135 1139
1136 if (compositor_) 1140 if (compositor_)
1137 compositor_->setViewportSize(params.physical_backing_size); 1141 compositor_->setViewportSize(params.physical_backing_size);
1138 1142
1139 size_ = params.new_size;
1140 physical_backing_size_ = params.physical_backing_size;
1141
1142 top_controls_shrink_blink_size_ = params.top_controls_shrink_blink_size;
1143 top_controls_height_ = params.top_controls_height;
1144 visible_viewport_size_ = params.visible_viewport_size; 1143 visible_viewport_size_ = params.visible_viewport_size;
1145 resizer_rect_ = params.resizer_rect; 1144 resizer_rect_ = params.resizer_rect;
1146 1145
1147 // NOTE: We may have entered fullscreen mode without changing our size. 1146 // NOTE: We may have entered fullscreen mode without changing our size.
1148 bool fullscreen_change = 1147 bool fullscreen_change =
1149 is_fullscreen_granted_ != params.is_fullscreen_granted; 1148 is_fullscreen_granted_ != params.is_fullscreen_granted;
1150 is_fullscreen_granted_ = params.is_fullscreen_granted; 1149 is_fullscreen_granted_ = params.is_fullscreen_granted;
1151 display_mode_ = params.display_mode; 1150 display_mode_ = params.display_mode;
1152 1151
1153 webwidget_->setTopControlsHeight(params.top_controls_height, 1152 size_ = params.new_size;
1154 top_controls_shrink_blink_size_); 1153 physical_backing_size_ = params.physical_backing_size;
1155 1154
1156 gfx::Size new_widget_size = size_; 1155 ResizeWebWidget();
1157 if (IsUseZoomForDSFEnabled()) {
1158 new_widget_size = gfx::ScaleToCeiledSize(new_widget_size,
1159 GetOriginalDeviceScaleFactor());
1160 }
1161 // When resizing, we want to wait to paint before ACK'ing the resize. This
1162 // ensures that we only resize as fast as we can paint. We only need to
1163 // send an ACK if we are resized to a non-empty rect.
1164 webwidget_->resize(new_widget_size);
1165 1156
1166 WebSize visual_viewport_size; 1157 WebSize visual_viewport_size;
1167 1158
1168 if (IsUseZoomForDSFEnabled()) { 1159 if (IsUseZoomForDSFEnabled()) {
1169 visual_viewport_size = gfx::ScaleToCeiledSize( 1160 visual_viewport_size = gfx::ScaleToCeiledSize(
1170 params.visible_viewport_size, 1161 params.visible_viewport_size,
1171 GetOriginalDeviceScaleFactor()); 1162 GetOriginalDeviceScaleFactor());
1172 } else { 1163 } else {
1173 visual_viewport_size = visible_viewport_size_; 1164 visual_viewport_size = visible_viewport_size_;
1174 } 1165 }
1175 1166
1176 webwidget()->resizeVisualViewport(visual_viewport_size); 1167 webwidget()->resizeVisualViewport(visual_viewport_size);
1177 1168
1169 // When resizing, we want to wait to paint before ACK'ing the resize. This
1170 // ensures that we only resize as fast as we can paint. We only need to
1171 // send an ACK if we are resized to a non-empty rect.
1178 if (params.new_size.IsEmpty() || params.physical_backing_size.IsEmpty()) { 1172 if (params.new_size.IsEmpty() || params.physical_backing_size.IsEmpty()) {
1179 // In this case there is no paint/composite and therefore no 1173 // In this case there is no paint/composite and therefore no
1180 // ViewHostMsg_UpdateRect to send the resize ack with. We'd need to send the 1174 // ViewHostMsg_UpdateRect to send the resize ack with. We'd need to send the
1181 // ack through a fake ViewHostMsg_UpdateRect or a different message. 1175 // ack through a fake ViewHostMsg_UpdateRect or a different message.
1182 DCHECK(!params.needs_resize_ack); 1176 DCHECK(!params.needs_resize_ack);
1183 } 1177 }
1184 1178
1185 // Send the Resize_ACK flag once we paint again if requested. 1179 // Send the Resize_ACK flag once we paint again if requested.
1186 if (params.needs_resize_ack) 1180 if (params.needs_resize_ack)
1187 set_next_paint_is_resize_ack(); 1181 set_next_paint_is_resize_ack();
(...skipping 921 matching lines...) Expand 10 before | Expand all | Expand 10 after
2109 } 2103 }
2110 2104
2111 float RenderWidget::GetOriginalDeviceScaleFactor() const { 2105 float RenderWidget::GetOriginalDeviceScaleFactor() const {
2112 return 2106 return
2113 screen_metrics_emulator_ ? 2107 screen_metrics_emulator_ ?
2114 screen_metrics_emulator_->original_screen_info().deviceScaleFactor : 2108 screen_metrics_emulator_->original_screen_info().deviceScaleFactor :
2115 device_scale_factor_; 2109 device_scale_factor_;
2116 } 2110 }
2117 2111
2118 } // namespace content 2112 } // 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