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

Side by Side Diff: content/browser/renderer_host/render_widget_host_impl.cc

Issue 659093002: Pass the size to the RenderView on creation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@java_enum
Patch Set: Created 6 years, 1 month 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
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/browser/renderer_host/render_widget_host_impl.h" 5 #include "content/browser/renderer_host/render_widget_host_impl.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 #include <set> 8 #include <set>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 bool hidden) 160 bool hidden)
161 : view_(NULL), 161 : view_(NULL),
162 renderer_initialized_(false), 162 renderer_initialized_(false),
163 hung_renderer_delay_ms_(kHungRendererDelayMs), 163 hung_renderer_delay_ms_(kHungRendererDelayMs),
164 delegate_(delegate), 164 delegate_(delegate),
165 process_(process), 165 process_(process),
166 routing_id_(routing_id), 166 routing_id_(routing_id),
167 surface_id_(0), 167 surface_id_(0),
168 is_loading_(false), 168 is_loading_(false),
169 is_hidden_(hidden), 169 is_hidden_(hidden),
170 is_fullscreen_(false),
171 repaint_ack_pending_(false), 170 repaint_ack_pending_(false),
172 resize_ack_pending_(false), 171 resize_ack_pending_(false),
173 screen_info_out_of_date_(false), 172 screen_info_out_of_date_(false),
174 top_controls_layout_height_(0.f),
175 should_auto_resize_(false), 173 should_auto_resize_(false),
176 waiting_for_screen_rects_ack_(false), 174 waiting_for_screen_rects_ack_(false),
177 needs_repainting_on_restore_(false), 175 needs_repainting_on_restore_(false),
178 is_unresponsive_(false), 176 is_unresponsive_(false),
179 in_flight_event_count_(0), 177 in_flight_event_count_(0),
180 in_get_backing_store_(false), 178 in_get_backing_store_(false),
181 ignore_input_events_(false), 179 ignore_input_events_(false),
182 input_method_active_(false), 180 input_method_active_(false),
183 text_direction_updated_(false), 181 text_direction_updated_(false),
184 text_direction_(blink::WebTextDirectionLeftToRight), 182 text_direction_(blink::WebTextDirectionLeftToRight),
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 // By invoking WasResized the renderer is updated as necessary. WasResized 555 // By invoking WasResized the renderer is updated as necessary. WasResized
558 // does nothing if the sizes are already in sync. 556 // does nothing if the sizes are already in sync.
559 // 557 //
560 // TODO: ideally ViewMsg_WasShown would take a size. This way, the renderer 558 // TODO: ideally ViewMsg_WasShown would take a size. This way, the renderer
561 // could handle both the restore and resize at once. This isn't that big a 559 // could handle both the restore and resize at once. This isn't that big a
562 // deal as RenderWidget::WasShown delays updating, so that the resize from 560 // deal as RenderWidget::WasShown delays updating, so that the resize from
563 // WasResized is usually processed before the renderer is painted. 561 // WasResized is usually processed before the renderer is painted.
564 WasResized(); 562 WasResized();
565 } 563 }
566 564
565 void RenderWidgetHostImpl::GetResizeParams(
566 ViewMsg_Resize_Params* resize_params) {
567 if (!screen_info_) {
568 screen_info_.reset(new blink::WebScreenInfo);
569 GetWebScreenInfo(screen_info_.get());
570 }
571 resize_params->screen_info = *screen_info_;
572 resize_params->new_size =
573 (view_) ? view_->GetRequestedRendererSize() : gfx::Size();
piman 2014/10/29 18:42:57 nit: no need for () around view_. It might be mor
mkosiba (inactive) 2014/10/31 14:35:06 All are great suggestions! I think I'll go with th
574 resize_params->resizer_rect = GetRootWindowResizerRect();
575 resize_params->physical_backing_size =
576 (view_) ? view_->GetPhysicalBackingSize() : gfx::Size();
577 resize_params->top_controls_layout_height =
578 (view_) ? view_->GetTopControlsLayoutHeight() : 0.f;
579 resize_params->visible_viewport_size =
580 (view_) ? view_->GetVisibleViewportSize() : gfx::Size();
581 resize_params->is_fullscreen = IsFullscreen();
582 }
583
584 void RenderWidgetHostImpl::GetNewViewResizeParams(
585 ViewMsg_Resize_Params* resize_params) {
586 GetResizeParams(resize_params);
587
588 // We don't expect to receive an ACK when the requested size or the physical
589 // backing size is empty, or when the main viewport size didn't change.
590 if (!resize_params->new_size.IsEmpty() &&
591 !resize_params->physical_backing_size.IsEmpty()) {
592 resize_ack_pending_ = g_check_for_pending_resize_ack;
piman 2014/10/29 18:42:57 MMh, I certainly would not expect GetNewViewResize
mkosiba (inactive) 2014/10/31 14:35:06 that does indeed sound better. I guess I was tryin
593 }
594
595 DCHECK(!old_resize_params_);
596 old_resize_params_ =
597 make_scoped_ptr(new ViewMsg_Resize_Params(*resize_params));
598 }
599
567 void RenderWidgetHostImpl::WasResized() { 600 void RenderWidgetHostImpl::WasResized() {
568 // Skip if the |delegate_| has already been detached because 601 // Skip if the |delegate_| has already been detached because
569 // it's web contents is being deleted. 602 // it's web contents is being deleted.
570 if (resize_ack_pending_ || !process_->HasConnection() || !view_ || 603 if (resize_ack_pending_ || !process_->HasConnection() || !view_ ||
571 !renderer_initialized_ || should_auto_resize_ || !delegate_) { 604 !renderer_initialized_ || should_auto_resize_ || !delegate_) {
572 return; 605 return;
573 } 606 }
574 607
575 gfx::Size new_size(view_->GetRequestedRendererSize()); 608 bool size_changed = false;
609 bool side_payload_changed = screen_info_out_of_date_;
610 scoped_ptr<ViewMsg_Resize_Params> params(new ViewMsg_Resize_Params);
576 611
577 gfx::Size old_physical_backing_size = physical_backing_size_; 612 GetResizeParams(params.get());
578 physical_backing_size_ = view_->GetPhysicalBackingSize(); 613 if (old_resize_params_) {
579 bool was_fullscreen = is_fullscreen_; 614 size_changed = old_resize_params_->new_size != params->new_size;
580 is_fullscreen_ = IsFullscreen(); 615 side_payload_changed =
581 float old_top_controls_layout_height = 616 side_payload_changed ||
582 top_controls_layout_height_; 617 old_resize_params_->physical_backing_size !=
583 top_controls_layout_height_ = 618 params->physical_backing_size ||
584 view_->GetTopControlsLayoutHeight(); 619 old_resize_params_->is_fullscreen != params->is_fullscreen ||
585 gfx::Size old_visible_viewport_size = visible_viewport_size_; 620 old_resize_params_->top_controls_layout_height !=
586 visible_viewport_size_ = view_->GetVisibleViewportSize(); 621 params->top_controls_layout_height ||
587 622 old_resize_params_->visible_viewport_size !=
588 bool size_changed = new_size != last_requested_size_; 623 params->visible_viewport_size;
589 bool side_payload_changed = 624 }
590 screen_info_out_of_date_ ||
591 old_physical_backing_size != physical_backing_size_ ||
592 was_fullscreen != is_fullscreen_ ||
593 old_top_controls_layout_height !=
594 top_controls_layout_height_ ||
595 old_visible_viewport_size != visible_viewport_size_;
596 625
597 if (!size_changed && !side_payload_changed) 626 if (!size_changed && !side_payload_changed)
598 return; 627 return;
599 628
600 if (!screen_info_) { 629 // We don't expect to receive an ACK when the requested size or the physical
601 screen_info_.reset(new blink::WebScreenInfo); 630 // backing size is empty, or when the main viewport size didn't change.
602 GetWebScreenInfo(screen_info_.get()); 631 if (!params->new_size.IsEmpty() && !params->physical_backing_size.IsEmpty() &&
632 size_changed) {
633 resize_ack_pending_ = g_check_for_pending_resize_ack;
603 } 634 }
604 635
605 // We don't expect to receive an ACK when the requested size or the physical 636 if (!Send(new ViewMsg_Resize(routing_id_, *params))) {
606 // backing size is empty, or when the main viewport size didn't change.
607 if (!new_size.IsEmpty() && !physical_backing_size_.IsEmpty() && size_changed)
608 resize_ack_pending_ = g_check_for_pending_resize_ack;
609
610 ViewMsg_Resize_Params params;
611 params.screen_info = *screen_info_;
612 params.new_size = new_size;
613 params.physical_backing_size = physical_backing_size_;
614 params.top_controls_layout_height = top_controls_layout_height_;
615 params.visible_viewport_size = visible_viewport_size_;
616 params.resizer_rect = GetRootWindowResizerRect();
617 params.is_fullscreen = is_fullscreen_;
618 if (!Send(new ViewMsg_Resize(routing_id_, params))) {
619 resize_ack_pending_ = false; 637 resize_ack_pending_ = false;
620 } else { 638 } else {
621 last_requested_size_ = new_size; 639 old_resize_params_.swap(params);
622 } 640 }
623 } 641 }
624 642
625 void RenderWidgetHostImpl::ResizeRectChanged(const gfx::Rect& new_rect) { 643 void RenderWidgetHostImpl::ResizeRectChanged(const gfx::Rect& new_rect) {
626 Send(new ViewMsg_ChangeResizeRect(routing_id_, new_rect)); 644 Send(new ViewMsg_ChangeResizeRect(routing_id_, new_rect));
627 } 645 }
628 646
629 void RenderWidgetHostImpl::GotFocus() { 647 void RenderWidgetHostImpl::GotFocus() {
630 Focus(); 648 Focus();
631 if (delegate_) 649 if (delegate_)
(...skipping 1767 matching lines...) Expand 10 before | Expand all | Expand 10 after
2399 } 2417 }
2400 #endif 2418 #endif
2401 2419
2402 SkColorType RenderWidgetHostImpl::PreferredReadbackFormat() { 2420 SkColorType RenderWidgetHostImpl::PreferredReadbackFormat() {
2403 if (view_) 2421 if (view_)
2404 return view_->PreferredReadbackFormat(); 2422 return view_->PreferredReadbackFormat();
2405 return kN32_SkColorType; 2423 return kN32_SkColorType;
2406 } 2424 }
2407 2425
2408 } // namespace content 2426 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698