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