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

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: 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
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 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
629 633
630 // If given a messsage without a routing ID, then assign our routing ID. 634 // If given a messsage without a routing ID, then assign our routing ID.
631 if (message->routing_id() == MSG_ROUTING_NONE) 635 if (message->routing_id() == MSG_ROUTING_NONE)
632 message->set_routing_id(routing_id_); 636 message->set_routing_id(routing_id_);
633 637
634 return RenderThread::Get()->Send(message); 638 return RenderThread::Get()->Send(message);
635 } 639 }
636 640
637 void RenderWidget::Resize(const gfx::Size& new_size, 641 void RenderWidget::Resize(const gfx::Size& new_size,
638 const gfx::Size& physical_backing_size, 642 const gfx::Size& physical_backing_size,
639 float overdraw_bottom_height, 643 float top_controls_layout_height,
640 const gfx::Size& visible_viewport_size, 644 const gfx::Size& visible_viewport_size,
641 const gfx::Rect& resizer_rect, 645 const gfx::Rect& resizer_rect,
642 bool is_fullscreen, 646 bool is_fullscreen,
643 ResizeAck resize_ack) { 647 ResizeAck resize_ack) {
644 if (resizing_mode_selector_->NeverUsesSynchronousResize()) { 648 if (resizing_mode_selector_->NeverUsesSynchronousResize()) {
645 // A resize ack shouldn't be requested if we have not ACK'd the previous 649 // A resize ack shouldn't be requested if we have not ACK'd the previous
646 // one. 650 // one.
647 DCHECK(resize_ack != SEND_RESIZE_ACK || !next_paint_is_resize_ack()); 651 DCHECK(resize_ack != SEND_RESIZE_ACK || !next_paint_is_resize_ack());
648 DCHECK(resize_ack == SEND_RESIZE_ACK || resize_ack == NO_RESIZE_ACK); 652 DCHECK(resize_ack == SEND_RESIZE_ACK || resize_ack == NO_RESIZE_ACK);
649 } 653 }
650 654
651 // Ignore this during shutdown. 655 // Ignore this during shutdown.
652 if (!webwidget_) 656 if (!webwidget_)
653 return; 657 return;
654 658
655 if (compositor_) { 659 if (compositor_) {
656 compositor_->setViewportSize(new_size, physical_backing_size); 660 compositor_->setViewportSize(new_size, physical_backing_size);
657 compositor_->SetOverdrawBottomHeight(overdraw_bottom_height); 661 compositor_->SetTopControlsLayoutHeight(top_controls_layout_height);
658 } 662 }
659 663
660 physical_backing_size_ = physical_backing_size; 664 physical_backing_size_ = physical_backing_size;
661 overdraw_bottom_height_ = overdraw_bottom_height; 665 top_controls_layout_height_ = top_controls_layout_height;
662 visible_viewport_size_ = visible_viewport_size; 666 visible_viewport_size_ = visible_viewport_size;
663 resizer_rect_ = resizer_rect; 667 resizer_rect_ = resizer_rect;
664 668
665 // NOTE: We may have entered fullscreen mode without changing our size. 669 // NOTE: We may have entered fullscreen mode without changing our size.
666 bool fullscreen_change = is_fullscreen_ != is_fullscreen; 670 bool fullscreen_change = is_fullscreen_ != is_fullscreen;
667 if (fullscreen_change) 671 if (fullscreen_change)
668 WillToggleFullscreen(); 672 WillToggleFullscreen();
669 is_fullscreen_ = is_fullscreen; 673 is_fullscreen_ = is_fullscreen;
670 674
671 if (size_ != new_size) { 675 if (size_ != new_size) {
(...skipping 23 matching lines...) Expand all
695 699
696 if (fullscreen_change) 700 if (fullscreen_change)
697 DidToggleFullscreen(); 701 DidToggleFullscreen();
698 702
699 // If a resize ack is requested and it isn't set-up, then no more resizes will 703 // If a resize ack is requested and it isn't set-up, then no more resizes will
700 // come in and in general things will go wrong. 704 // come in and in general things will go wrong.
701 DCHECK(resize_ack != SEND_RESIZE_ACK || next_paint_is_resize_ack()); 705 DCHECK(resize_ack != SEND_RESIZE_ACK || next_paint_is_resize_ack());
702 } 706 }
703 707
704 void RenderWidget::ResizeSynchronously(const gfx::Rect& new_position) { 708 void RenderWidget::ResizeSynchronously(const gfx::Rect& new_position) {
705 Resize(new_position.size(), new_position.size(), overdraw_bottom_height_, 709 Resize(new_position.size(),
706 visible_viewport_size_, gfx::Rect(), is_fullscreen_, NO_RESIZE_ACK); 710 new_position.size(),
711 top_controls_layout_height_,
712 visible_viewport_size_,
713 gfx::Rect(),
714 is_fullscreen_,
715 NO_RESIZE_ACK);
707 view_screen_rect_ = new_position; 716 view_screen_rect_ = new_position;
708 window_screen_rect_ = new_position; 717 window_screen_rect_ = new_position;
709 if (!did_show_) 718 if (!did_show_)
710 initial_pos_ = new_position; 719 initial_pos_ = new_position;
711 } 720 }
712 721
713 void RenderWidget::OnClose() { 722 void RenderWidget::OnClose() {
714 if (closing_) 723 if (closing_)
715 return; 724 return;
716 closing_ = true; 725 closing_ = true;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 screen_metrics_emulator_->OnResizeMessage(params); 758 screen_metrics_emulator_->OnResizeMessage(params);
750 return; 759 return;
751 } 760 }
752 761
753 bool orientation_changed = 762 bool orientation_changed =
754 screen_info_.orientationAngle != params.screen_info.orientationAngle; 763 screen_info_.orientationAngle != params.screen_info.orientationAngle;
755 764
756 screen_info_ = params.screen_info; 765 screen_info_ = params.screen_info;
757 SetDeviceScaleFactor(screen_info_.deviceScaleFactor); 766 SetDeviceScaleFactor(screen_info_.deviceScaleFactor);
758 Resize(params.new_size, params.physical_backing_size, 767 Resize(params.new_size, params.physical_backing_size,
759 params.overdraw_bottom_height, params.visible_viewport_size, 768 params.top_controls_layout_height,
760 params.resizer_rect, params.is_fullscreen, SEND_RESIZE_ACK); 769 params.visible_viewport_size, params.resizer_rect,
770 params.is_fullscreen, SEND_RESIZE_ACK);
761 771
762 if (orientation_changed) 772 if (orientation_changed)
763 OnOrientationChange(); 773 OnOrientationChange();
764 } 774 }
765 775
766 void RenderWidget::OnChangeResizeRect(const gfx::Rect& resizer_rect) { 776 void RenderWidget::OnChangeResizeRect(const gfx::Rect& resizer_rect) {
767 if (resizer_rect_ == resizer_rect) 777 if (resizer_rect_ == resizer_rect)
768 return; 778 return;
769 resizer_rect_ = resizer_rect; 779 resizer_rect_ = resizer_rect;
770 if (webwidget_) 780 if (webwidget_)
(...skipping 1385 matching lines...) Expand 10 before | Expand all | Expand 10 after
2156 void RenderWidget::RegisterVideoHoleFrame(RenderFrameImpl* frame) { 2166 void RenderWidget::RegisterVideoHoleFrame(RenderFrameImpl* frame) {
2157 video_hole_frames_.AddObserver(frame); 2167 video_hole_frames_.AddObserver(frame);
2158 } 2168 }
2159 2169
2160 void RenderWidget::UnregisterVideoHoleFrame(RenderFrameImpl* frame) { 2170 void RenderWidget::UnregisterVideoHoleFrame(RenderFrameImpl* frame) {
2161 video_hole_frames_.RemoveObserver(frame); 2171 video_hole_frames_.RemoveObserver(frame);
2162 } 2172 }
2163 #endif // defined(VIDEO_HOLE) 2173 #endif // defined(VIDEO_HOLE)
2164 2174
2165 } // namespace content 2175 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698