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

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

Issue 476113004: Replace overdraw_bottom_height with top_controls_layout_height. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix ScrollViewportRounding test Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « content/renderer/render_widget.h ('k') | no next file » | 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 "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 // The following methods alter handlers' behavior for messages related to 189 // The following methods alter handlers' behavior for messages related to
190 // widget size and position. 190 // widget size and position.
191 void OnResizeMessage(const ViewMsg_Resize_Params& params); 191 void OnResizeMessage(const ViewMsg_Resize_Params& params);
192 void OnUpdateScreenRectsMessage(const gfx::Rect& view_screen_rect, 192 void OnUpdateScreenRectsMessage(const gfx::Rect& view_screen_rect,
193 const gfx::Rect& window_screen_rect); 193 const gfx::Rect& window_screen_rect);
194 void OnShowContextMenu(ContextMenuParams* params); 194 void OnShowContextMenu(ContextMenuParams* params);
195 gfx::Rect AdjustValidationMessageAnchor(const gfx::Rect& anchor); 195 gfx::Rect AdjustValidationMessageAnchor(const gfx::Rect& anchor);
196 196
197 private: 197 private:
198 void Reapply(); 198 void Reapply();
199 void Apply(float overdraw_bottom_height, 199 void Apply(float top_controls_layout_height,
200 gfx::Rect resizer_rect, 200 gfx::Rect resizer_rect,
201 bool is_fullscreen); 201 bool is_fullscreen);
202 202
203 RenderWidget* widget_; 203 RenderWidget* widget_;
204 204
205 // Parameters as passed by RenderWidget::EnableScreenMetricsEmulation. 205 // Parameters as passed by RenderWidget::EnableScreenMetricsEmulation.
206 WebDeviceEmulationParams params_; 206 WebDeviceEmulationParams params_;
207 207
208 // The computed scale and offset used to fit widget into browser window. 208 // The computed scale and offset used to fit widget into browser window.
209 float scale_; 209 float scale_;
(...skipping 16 matching lines...) Expand all
226 const WebDeviceEmulationParams& params) 226 const WebDeviceEmulationParams& params)
227 : widget_(widget), 227 : widget_(widget),
228 params_(params), 228 params_(params),
229 scale_(1.f) { 229 scale_(1.f) {
230 original_size_ = widget_->size_; 230 original_size_ = widget_->size_;
231 original_physical_backing_size_ = widget_->physical_backing_size_; 231 original_physical_backing_size_ = widget_->physical_backing_size_;
232 original_visible_viewport_size_ = widget_->visible_viewport_size_; 232 original_visible_viewport_size_ = widget_->visible_viewport_size_;
233 original_screen_info_ = widget_->screen_info_; 233 original_screen_info_ = widget_->screen_info_;
234 original_view_screen_rect_ = widget_->view_screen_rect_; 234 original_view_screen_rect_ = widget_->view_screen_rect_;
235 original_window_screen_rect_ = widget_->window_screen_rect_; 235 original_window_screen_rect_ = widget_->window_screen_rect_;
236 Apply(widget_->overdraw_bottom_height_, widget_->resizer_rect_, 236 Apply(widget_->top_controls_layout_height_, widget_->resizer_rect_,
237 widget_->is_fullscreen_); 237 widget_->is_fullscreen_);
238 } 238 }
239 239
240 RenderWidget::ScreenMetricsEmulator::~ScreenMetricsEmulator() { 240 RenderWidget::ScreenMetricsEmulator::~ScreenMetricsEmulator() {
241 widget_->screen_info_ = original_screen_info_; 241 widget_->screen_info_ = original_screen_info_;
242 242
243 widget_->SetDeviceScaleFactor(original_screen_info_.deviceScaleFactor); 243 widget_->SetDeviceScaleFactor(original_screen_info_.deviceScaleFactor);
244 widget_->SetScreenMetricsEmulationParameters(0.f, gfx::Point(), 1.f); 244 widget_->SetScreenMetricsEmulationParameters(0.f, gfx::Point(), 1.f);
245 widget_->view_screen_rect_ = original_view_screen_rect_; 245 widget_->view_screen_rect_ = original_view_screen_rect_;
246 widget_->window_screen_rect_ = original_window_screen_rect_; 246 widget_->window_screen_rect_ = original_window_screen_rect_;
247 widget_->Resize(original_size_, original_physical_backing_size_, 247 widget_->Resize(original_size_,
248 widget_->overdraw_bottom_height_, original_visible_viewport_size_, 248 original_physical_backing_size_,
249 widget_->resizer_rect_, widget_->is_fullscreen_, NO_RESIZE_ACK); 249 widget_->top_controls_layout_height_,
250 original_visible_viewport_size_,
251 widget_->resizer_rect_,
252 widget_->is_fullscreen_,
253 NO_RESIZE_ACK);
250 } 254 }
251 255
252 void RenderWidget::ScreenMetricsEmulator::ChangeEmulationParams( 256 void RenderWidget::ScreenMetricsEmulator::ChangeEmulationParams(
253 const WebDeviceEmulationParams& params) { 257 const WebDeviceEmulationParams& params) {
254 params_ = params; 258 params_ = params;
255 Reapply(); 259 Reapply();
256 } 260 }
257 261
258 void RenderWidget::ScreenMetricsEmulator::Reapply() { 262 void RenderWidget::ScreenMetricsEmulator::Reapply() {
259 Apply(widget_->overdraw_bottom_height_, widget_->resizer_rect_, 263 Apply(widget_->top_controls_layout_height_, widget_->resizer_rect_,
260 widget_->is_fullscreen_); 264 widget_->is_fullscreen_);
261 } 265 }
262 266
263 void RenderWidget::ScreenMetricsEmulator::Apply( 267 void RenderWidget::ScreenMetricsEmulator::Apply(
264 float overdraw_bottom_height, 268 float top_controls_layout_height,
265 gfx::Rect resizer_rect, 269 gfx::Rect resizer_rect,
266 bool is_fullscreen) { 270 bool is_fullscreen) {
267 applied_widget_rect_.set_size(gfx::Size(params_.viewSize)); 271 applied_widget_rect_.set_size(gfx::Size(params_.viewSize));
268 if (!applied_widget_rect_.width()) 272 if (!applied_widget_rect_.width())
269 applied_widget_rect_.set_width(original_size_.width()); 273 applied_widget_rect_.set_width(original_size_.width());
270 if (!applied_widget_rect_.height()) 274 if (!applied_widget_rect_.height())
271 applied_widget_rect_.set_height(original_size_.height()); 275 applied_widget_rect_.set_height(original_size_.height());
272 276
273 if (params_.fitToView && !original_size_.IsEmpty()) { 277 if (params_.fitToView && !original_size_.IsEmpty()) {
274 int original_width = std::max(original_size_.width(), 1); 278 int original_width = std::max(original_size_.width(), 1);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 // root layer. 317 // root layer.
314 widget_->SetScreenMetricsEmulationParameters( 318 widget_->SetScreenMetricsEmulationParameters(
315 original_screen_info_.deviceScaleFactor, offset_, scale_); 319 original_screen_info_.deviceScaleFactor, offset_, scale_);
316 320
317 widget_->SetDeviceScaleFactor(applied_device_scale_factor); 321 widget_->SetDeviceScaleFactor(applied_device_scale_factor);
318 widget_->view_screen_rect_ = applied_widget_rect_; 322 widget_->view_screen_rect_ = applied_widget_rect_;
319 323
320 gfx::Size physical_backing_size = gfx::ToCeiledSize(gfx::ScaleSize( 324 gfx::Size physical_backing_size = gfx::ToCeiledSize(gfx::ScaleSize(
321 original_size_, original_screen_info_.deviceScaleFactor)); 325 original_size_, original_screen_info_.deviceScaleFactor));
322 widget_->Resize(applied_widget_rect_.size(), physical_backing_size, 326 widget_->Resize(applied_widget_rect_.size(), physical_backing_size,
323 overdraw_bottom_height, applied_widget_rect_.size(), resizer_rect, 327 top_controls_layout_height, applied_widget_rect_.size(), resizer_rect,
324 is_fullscreen, NO_RESIZE_ACK); 328 is_fullscreen, NO_RESIZE_ACK);
325 } 329 }
326 330
327 void RenderWidget::ScreenMetricsEmulator::OnResizeMessage( 331 void RenderWidget::ScreenMetricsEmulator::OnResizeMessage(
328 const ViewMsg_Resize_Params& params) { 332 const ViewMsg_Resize_Params& params) {
329 bool need_ack = params.new_size != original_size_ && 333 bool need_ack = params.new_size != original_size_ &&
330 !params.new_size.IsEmpty() && !params.physical_backing_size.IsEmpty(); 334 !params.new_size.IsEmpty() && !params.physical_backing_size.IsEmpty();
331 original_size_ = params.new_size; 335 original_size_ = params.new_size;
332 original_physical_backing_size_ = params.physical_backing_size; 336 original_physical_backing_size_ = params.physical_backing_size;
333 original_screen_info_ = params.screen_info; 337 original_screen_info_ = params.screen_info;
334 original_visible_viewport_size_ = params.visible_viewport_size; 338 original_visible_viewport_size_ = params.visible_viewport_size;
335 Apply(params.overdraw_bottom_height, params.resizer_rect, 339 Apply(params.top_controls_layout_height, params.resizer_rect,
336 params.is_fullscreen); 340 params.is_fullscreen);
337 341
338 if (need_ack) { 342 if (need_ack) {
339 widget_->set_next_paint_is_resize_ack(); 343 widget_->set_next_paint_is_resize_ack();
340 if (widget_->compositor_) 344 if (widget_->compositor_)
341 widget_->compositor_->SetNeedsRedrawRect(gfx::Rect(widget_->size_)); 345 widget_->compositor_->SetNeedsRedrawRect(gfx::Rect(widget_->size_));
342 } 346 }
343 } 347 }
344 348
345 void RenderWidget::ScreenMetricsEmulator::OnUpdateScreenRectsMessage( 349 void RenderWidget::ScreenMetricsEmulator::OnUpdateScreenRectsMessage(
(...skipping 26 matching lines...) Expand all
372 RenderWidget::RenderWidget(blink::WebPopupType popup_type, 376 RenderWidget::RenderWidget(blink::WebPopupType popup_type,
373 const blink::WebScreenInfo& screen_info, 377 const blink::WebScreenInfo& screen_info,
374 bool swapped_out, 378 bool swapped_out,
375 bool hidden, 379 bool hidden,
376 bool never_visible) 380 bool never_visible)
377 : routing_id_(MSG_ROUTING_NONE), 381 : routing_id_(MSG_ROUTING_NONE),
378 surface_id_(0), 382 surface_id_(0),
379 webwidget_(NULL), 383 webwidget_(NULL),
380 opener_id_(MSG_ROUTING_NONE), 384 opener_id_(MSG_ROUTING_NONE),
381 init_complete_(false), 385 init_complete_(false),
382 overdraw_bottom_height_(0.f), 386 top_controls_layout_height_(0.f),
383 next_paint_flags_(0), 387 next_paint_flags_(0),
384 auto_resize_mode_(false), 388 auto_resize_mode_(false),
385 need_update_rect_for_auto_resize_(false), 389 need_update_rect_for_auto_resize_(false),
386 did_show_(false), 390 did_show_(false),
387 is_hidden_(hidden), 391 is_hidden_(hidden),
388 never_visible_(never_visible), 392 never_visible_(never_visible),
389 is_fullscreen_(false), 393 is_fullscreen_(false),
390 has_focus_(false), 394 has_focus_(false),
391 handling_input_event_(false), 395 handling_input_event_(false),
392 handling_ime_event_(false), 396 handling_ime_event_(false),
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
635 639
636 // If given a messsage without a routing ID, then assign our routing ID. 640 // If given a messsage without a routing ID, then assign our routing ID.
637 if (message->routing_id() == MSG_ROUTING_NONE) 641 if (message->routing_id() == MSG_ROUTING_NONE)
638 message->set_routing_id(routing_id_); 642 message->set_routing_id(routing_id_);
639 643
640 return RenderThread::Get()->Send(message); 644 return RenderThread::Get()->Send(message);
641 } 645 }
642 646
643 void RenderWidget::Resize(const gfx::Size& new_size, 647 void RenderWidget::Resize(const gfx::Size& new_size,
644 const gfx::Size& physical_backing_size, 648 const gfx::Size& physical_backing_size,
645 float overdraw_bottom_height, 649 float top_controls_layout_height,
646 const gfx::Size& visible_viewport_size, 650 const gfx::Size& visible_viewport_size,
647 const gfx::Rect& resizer_rect, 651 const gfx::Rect& resizer_rect,
648 bool is_fullscreen, 652 bool is_fullscreen,
649 ResizeAck resize_ack) { 653 ResizeAck resize_ack) {
650 if (resizing_mode_selector_->NeverUsesSynchronousResize()) { 654 if (resizing_mode_selector_->NeverUsesSynchronousResize()) {
651 // A resize ack shouldn't be requested if we have not ACK'd the previous 655 // A resize ack shouldn't be requested if we have not ACK'd the previous
652 // one. 656 // one.
653 DCHECK(resize_ack != SEND_RESIZE_ACK || !next_paint_is_resize_ack()); 657 DCHECK(resize_ack != SEND_RESIZE_ACK || !next_paint_is_resize_ack());
654 DCHECK(resize_ack == SEND_RESIZE_ACK || resize_ack == NO_RESIZE_ACK); 658 DCHECK(resize_ack == SEND_RESIZE_ACK || resize_ack == NO_RESIZE_ACK);
655 } 659 }
656 660
657 // Ignore this during shutdown. 661 // Ignore this during shutdown.
658 if (!webwidget_) 662 if (!webwidget_)
659 return; 663 return;
660 664
661 if (compositor_) { 665 if (compositor_) {
662 compositor_->setViewportSize(new_size, physical_backing_size); 666 compositor_->setViewportSize(new_size, physical_backing_size);
663 compositor_->SetOverdrawBottomHeight(overdraw_bottom_height); 667 compositor_->SetTopControlsLayoutHeight(top_controls_layout_height);
664 } 668 }
665 669
666 physical_backing_size_ = physical_backing_size; 670 physical_backing_size_ = physical_backing_size;
667 overdraw_bottom_height_ = overdraw_bottom_height; 671 top_controls_layout_height_ = top_controls_layout_height;
668 visible_viewport_size_ = visible_viewport_size; 672 visible_viewport_size_ = visible_viewport_size;
669 resizer_rect_ = resizer_rect; 673 resizer_rect_ = resizer_rect;
670 674
671 // NOTE: We may have entered fullscreen mode without changing our size. 675 // NOTE: We may have entered fullscreen mode without changing our size.
672 bool fullscreen_change = is_fullscreen_ != is_fullscreen; 676 bool fullscreen_change = is_fullscreen_ != is_fullscreen;
673 if (fullscreen_change) 677 if (fullscreen_change)
674 WillToggleFullscreen(); 678 WillToggleFullscreen();
675 is_fullscreen_ = is_fullscreen; 679 is_fullscreen_ = is_fullscreen;
676 680
677 if (size_ != new_size) { 681 if (size_ != new_size) {
(...skipping 23 matching lines...) Expand all
701 705
702 if (fullscreen_change) 706 if (fullscreen_change)
703 DidToggleFullscreen(); 707 DidToggleFullscreen();
704 708
705 // If a resize ack is requested and it isn't set-up, then no more resizes will 709 // If a resize ack is requested and it isn't set-up, then no more resizes will
706 // come in and in general things will go wrong. 710 // come in and in general things will go wrong.
707 DCHECK(resize_ack != SEND_RESIZE_ACK || next_paint_is_resize_ack()); 711 DCHECK(resize_ack != SEND_RESIZE_ACK || next_paint_is_resize_ack());
708 } 712 }
709 713
710 void RenderWidget::ResizeSynchronously(const gfx::Rect& new_position) { 714 void RenderWidget::ResizeSynchronously(const gfx::Rect& new_position) {
711 Resize(new_position.size(), new_position.size(), overdraw_bottom_height_, 715 Resize(new_position.size(),
712 visible_viewport_size_, gfx::Rect(), is_fullscreen_, NO_RESIZE_ACK); 716 new_position.size(),
717 top_controls_layout_height_,
718 visible_viewport_size_,
719 gfx::Rect(),
720 is_fullscreen_,
721 NO_RESIZE_ACK);
713 view_screen_rect_ = new_position; 722 view_screen_rect_ = new_position;
714 window_screen_rect_ = new_position; 723 window_screen_rect_ = new_position;
715 if (!did_show_) 724 if (!did_show_)
716 initial_pos_ = new_position; 725 initial_pos_ = new_position;
717 } 726 }
718 727
719 void RenderWidget::OnClose() { 728 void RenderWidget::OnClose() {
720 if (closing_) 729 if (closing_)
721 return; 730 return;
722 closing_ = true; 731 closing_ = true;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
755 screen_metrics_emulator_->OnResizeMessage(params); 764 screen_metrics_emulator_->OnResizeMessage(params);
756 return; 765 return;
757 } 766 }
758 767
759 bool orientation_changed = 768 bool orientation_changed =
760 screen_info_.orientationAngle != params.screen_info.orientationAngle; 769 screen_info_.orientationAngle != params.screen_info.orientationAngle;
761 770
762 screen_info_ = params.screen_info; 771 screen_info_ = params.screen_info;
763 SetDeviceScaleFactor(screen_info_.deviceScaleFactor); 772 SetDeviceScaleFactor(screen_info_.deviceScaleFactor);
764 Resize(params.new_size, params.physical_backing_size, 773 Resize(params.new_size, params.physical_backing_size,
765 params.overdraw_bottom_height, params.visible_viewport_size, 774 params.top_controls_layout_height,
766 params.resizer_rect, params.is_fullscreen, SEND_RESIZE_ACK); 775 params.visible_viewport_size, params.resizer_rect,
776 params.is_fullscreen, SEND_RESIZE_ACK);
767 777
768 if (orientation_changed) 778 if (orientation_changed)
769 OnOrientationChange(); 779 OnOrientationChange();
770 } 780 }
771 781
772 void RenderWidget::OnChangeResizeRect(const gfx::Rect& resizer_rect) { 782 void RenderWidget::OnChangeResizeRect(const gfx::Rect& resizer_rect) {
773 if (resizer_rect_ == resizer_rect) 783 if (resizer_rect_ == resizer_rect)
774 return; 784 return;
775 resizer_rect_ = resizer_rect; 785 resizer_rect_ = resizer_rect;
776 if (webwidget_) 786 if (webwidget_)
(...skipping 1382 matching lines...) Expand 10 before | Expand all | Expand 10 after
2159 void RenderWidget::RegisterVideoHoleFrame(RenderFrameImpl* frame) { 2169 void RenderWidget::RegisterVideoHoleFrame(RenderFrameImpl* frame) {
2160 video_hole_frames_.AddObserver(frame); 2170 video_hole_frames_.AddObserver(frame);
2161 } 2171 }
2162 2172
2163 void RenderWidget::UnregisterVideoHoleFrame(RenderFrameImpl* frame) { 2173 void RenderWidget::UnregisterVideoHoleFrame(RenderFrameImpl* frame) {
2164 video_hole_frames_.RemoveObserver(frame); 2174 video_hole_frames_.RemoveObserver(frame);
2165 } 2175 }
2166 #endif // defined(VIDEO_HOLE) 2176 #endif // defined(VIDEO_HOLE)
2167 2177
2168 } // namespace content 2178 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_widget.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698