Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |