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

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

Issue 1093713002: Revert of Send resize event when the screen info changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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
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 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 hung_renderer_delay_( 163 hung_renderer_delay_(
164 base::TimeDelta::FromMilliseconds(kHungRendererDelayMs)), 164 base::TimeDelta::FromMilliseconds(kHungRendererDelayMs)),
165 delegate_(delegate), 165 delegate_(delegate),
166 process_(process), 166 process_(process),
167 routing_id_(routing_id), 167 routing_id_(routing_id),
168 surface_id_(0), 168 surface_id_(0),
169 is_loading_(false), 169 is_loading_(false),
170 is_hidden_(hidden), 170 is_hidden_(hidden),
171 repaint_ack_pending_(false), 171 repaint_ack_pending_(false),
172 resize_ack_pending_(false), 172 resize_ack_pending_(false),
173 screen_info_out_of_date_(true), 173 screen_info_out_of_date_(false),
174 auto_resize_enabled_(false), 174 auto_resize_enabled_(false),
175 waiting_for_screen_rects_ack_(false), 175 waiting_for_screen_rects_ack_(false),
176 needs_repainting_on_restore_(false), 176 needs_repainting_on_restore_(false),
177 is_unresponsive_(false), 177 is_unresponsive_(false),
178 in_flight_event_count_(0), 178 in_flight_event_count_(0),
179 in_get_backing_store_(false), 179 in_get_backing_store_(false),
180 ignore_input_events_(false), 180 ignore_input_events_(false),
181 input_method_active_(false), 181 input_method_active_(false),
182 text_direction_updated_(false), 182 text_direction_updated_(false),
183 text_direction_(blink::WebTextDirectionLeftToRight), 183 text_direction_(blink::WebTextDirectionLeftToRight),
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
570 // does nothing if the sizes are already in sync. 570 // does nothing if the sizes are already in sync.
571 // 571 //
572 // TODO: ideally ViewMsg_WasShown would take a size. This way, the renderer 572 // TODO: ideally ViewMsg_WasShown would take a size. This way, the renderer
573 // could handle both the restore and resize at once. This isn't that big a 573 // could handle both the restore and resize at once. This isn't that big a
574 // deal as RenderWidget::WasShown delays updating, so that the resize from 574 // deal as RenderWidget::WasShown delays updating, so that the resize from
575 // WasResized is usually processed before the renderer is painted. 575 // WasResized is usually processed before the renderer is painted.
576 WasResized(); 576 WasResized();
577 } 577 }
578 578
579 bool RenderWidgetHostImpl::GetResizeParams( 579 bool RenderWidgetHostImpl::GetResizeParams(
580 ViewMsg_Resize_Params* resize_params) const { 580 ViewMsg_Resize_Params* resize_params) {
581 DCHECK(!screen_info_out_of_date_);
582
583 *resize_params = ViewMsg_Resize_Params(); 581 *resize_params = ViewMsg_Resize_Params();
584 582
583 if (!screen_info_) {
584 screen_info_.reset(new blink::WebScreenInfo);
585 GetWebScreenInfo(screen_info_.get());
586 }
585 resize_params->screen_info = *screen_info_; 587 resize_params->screen_info = *screen_info_;
586 resize_params->resizer_rect = GetRootWindowResizerRect(); 588 resize_params->resizer_rect = GetRootWindowResizerRect();
587 589
588 if (view_) { 590 if (view_) {
589 resize_params->new_size = view_->GetRequestedRendererSize(); 591 resize_params->new_size = view_->GetRequestedRendererSize();
590 resize_params->physical_backing_size = view_->GetPhysicalBackingSize(); 592 resize_params->physical_backing_size = view_->GetPhysicalBackingSize();
591 resize_params->top_controls_height = view_->GetTopControlsHeight(); 593 resize_params->top_controls_height = view_->GetTopControlsHeight();
592 resize_params->top_controls_shrink_blink_size = 594 resize_params->top_controls_shrink_blink_size =
593 view_->DoTopControlsShrinkBlinkSize(); 595 view_->DoTopControlsShrinkBlinkSize();
594 resize_params->visible_viewport_size = view_->GetVisibleViewportSize(); 596 resize_params->visible_viewport_size = view_->GetVisibleViewportSize();
595 resize_params->is_fullscreen_granted = IsFullscreenGranted(); 597 resize_params->is_fullscreen_granted = IsFullscreenGranted();
596 } 598 }
597 599
598 const bool size_changed = 600 const bool size_changed =
599 !old_resize_params_ || 601 !old_resize_params_ ||
600 old_resize_params_->new_size != resize_params->new_size || 602 old_resize_params_->new_size != resize_params->new_size ||
601 (old_resize_params_->physical_backing_size.IsEmpty() && 603 (old_resize_params_->physical_backing_size.IsEmpty() &&
602 !resize_params->physical_backing_size.IsEmpty()); 604 !resize_params->physical_backing_size.IsEmpty());
603 bool dirty = 605 bool dirty =
604 size_changed || 606 size_changed || screen_info_out_of_date_ ||
605 old_resize_params_->physical_backing_size != 607 old_resize_params_->physical_backing_size !=
606 resize_params->physical_backing_size || 608 resize_params->physical_backing_size ||
607 old_resize_params_->is_fullscreen_granted != 609 old_resize_params_->is_fullscreen_granted !=
608 resize_params->is_fullscreen_granted || 610 resize_params->is_fullscreen_granted ||
609 old_resize_params_->top_controls_height != 611 old_resize_params_->top_controls_height !=
610 resize_params->top_controls_height || 612 resize_params->top_controls_height ||
611 old_resize_params_->top_controls_shrink_blink_size != 613 old_resize_params_->top_controls_shrink_blink_size !=
612 resize_params->top_controls_shrink_blink_size || 614 resize_params->top_controls_shrink_blink_size ||
613 old_resize_params_->visible_viewport_size != 615 old_resize_params_->visible_viewport_size !=
614 resize_params->visible_viewport_size; 616 resize_params->visible_viewport_size;
615 617
616 // We don't expect to receive an ACK when the requested size or the physical 618 // We don't expect to receive an ACK when the requested size or the physical
617 // backing size is empty, or when the main viewport size didn't change. 619 // backing size is empty, or when the main viewport size didn't change.
618 resize_params->needs_resize_ack = 620 resize_params->needs_resize_ack =
619 g_check_for_pending_resize_ack && !resize_params->new_size.IsEmpty() && 621 g_check_for_pending_resize_ack && !resize_params->new_size.IsEmpty() &&
620 !resize_params->physical_backing_size.IsEmpty() && size_changed; 622 !resize_params->physical_backing_size.IsEmpty() && size_changed;
621 623
622 return dirty; 624 return dirty;
623 } 625 }
624 626
625 bool RenderWidgetHostImpl::UpdateScreenInfo() {
626 if (!screen_info_out_of_date_)
627 return false;
628
629 screen_info_.reset(new blink::WebScreenInfo);
630 GetWebScreenInfo(screen_info_.get());
631 screen_info_out_of_date_ = false;
632
633 return true;
634 }
635
636 void RenderWidgetHostImpl::SetInitialRenderSizeParams( 627 void RenderWidgetHostImpl::SetInitialRenderSizeParams(
637 const ViewMsg_Resize_Params& resize_params) { 628 const ViewMsg_Resize_Params& resize_params) {
638 resize_ack_pending_ = resize_params.needs_resize_ack; 629 resize_ack_pending_ = resize_params.needs_resize_ack;
639 630
640 old_resize_params_ = 631 old_resize_params_ =
641 make_scoped_ptr(new ViewMsg_Resize_Params(resize_params)); 632 make_scoped_ptr(new ViewMsg_Resize_Params(resize_params));
642 } 633 }
643 634
644 void RenderWidgetHostImpl::WasResized() { 635 void RenderWidgetHostImpl::WasResized() {
645 // Skip if the |delegate_| has already been detached because 636 // Skip if the |delegate_| has already been detached because
646 // it's web contents is being deleted. 637 // it's web contents is being deleted.
647 if (resize_ack_pending_ || !process_->HasConnection() || !view_ || 638 if (resize_ack_pending_ || !process_->HasConnection() || !view_ ||
648 !renderer_initialized_ || auto_resize_enabled_ || !delegate_) { 639 !renderer_initialized_ || auto_resize_enabled_ || !delegate_) {
649 return; 640 return;
650 } 641 }
651 642
652 bool screen_info_was_updated = UpdateScreenInfo();
653 scoped_ptr<ViewMsg_Resize_Params> params(new ViewMsg_Resize_Params); 643 scoped_ptr<ViewMsg_Resize_Params> params(new ViewMsg_Resize_Params);
654 if (!GetResizeParams(params.get()) && !screen_info_was_updated) 644 if (!GetResizeParams(params.get()))
655 return; 645 return;
656 646
657 bool width_changed = 647 bool width_changed =
658 !old_resize_params_ || 648 !old_resize_params_ ||
659 old_resize_params_->new_size.width() != params->new_size.width(); 649 old_resize_params_->new_size.width() != params->new_size.width();
660 if (Send(new ViewMsg_Resize(routing_id_, *params))) { 650 if (Send(new ViewMsg_Resize(routing_id_, *params))) {
661 resize_ack_pending_ = params->needs_resize_ack; 651 resize_ack_pending_ = params->needs_resize_ack;
662 old_resize_params_.swap(params); 652 old_resize_params_.swap(params);
663 } 653 }
664 654
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after
1138 } 1128 }
1139 } 1129 }
1140 } 1130 }
1141 1131
1142 void RenderWidgetHostImpl::GetWebScreenInfo(blink::WebScreenInfo* result) { 1132 void RenderWidgetHostImpl::GetWebScreenInfo(blink::WebScreenInfo* result) {
1143 TRACE_EVENT0("renderer_host", "RenderWidgetHostImpl::GetWebScreenInfo"); 1133 TRACE_EVENT0("renderer_host", "RenderWidgetHostImpl::GetWebScreenInfo");
1144 if (view_) 1134 if (view_)
1145 view_->GetScreenInfo(result); 1135 view_->GetScreenInfo(result);
1146 else 1136 else
1147 RenderWidgetHostViewBase::GetDefaultScreenInfo(result); 1137 RenderWidgetHostViewBase::GetDefaultScreenInfo(result);
1148 // TODO(sievers): find a way to make this done another way so the method
1149 // can be const.
1150 latency_tracker_.set_device_scale_factor(result->deviceScaleFactor); 1138 latency_tracker_.set_device_scale_factor(result->deviceScaleFactor);
1139 screen_info_out_of_date_ = false;
1151 } 1140 }
1152 1141
1153 const NativeWebKeyboardEvent* 1142 const NativeWebKeyboardEvent*
1154 RenderWidgetHostImpl::GetLastKeyboardEvent() const { 1143 RenderWidgetHostImpl::GetLastKeyboardEvent() const {
1155 return input_router_->GetLastKeyboardEvent(); 1144 return input_router_->GetLastKeyboardEvent();
1156 } 1145 }
1157 1146
1158 void RenderWidgetHostImpl::NotifyScreenInfoChanged() { 1147 void RenderWidgetHostImpl::NotifyScreenInfoChanged() {
1159 if (delegate_) 1148 if (delegate_)
1160 delegate_->ScreenInfoChanged(); 1149 delegate_->ScreenInfoChanged();
(...skipping 970 matching lines...) Expand 10 before | Expand all | Expand 10 after
2131 } 2120 }
2132 #endif 2121 #endif
2133 2122
2134 SkColorType RenderWidgetHostImpl::PreferredReadbackFormat() { 2123 SkColorType RenderWidgetHostImpl::PreferredReadbackFormat() {
2135 if (view_) 2124 if (view_)
2136 return view_->PreferredReadbackFormat(); 2125 return view_->PreferredReadbackFormat();
2137 return kN32_SkColorType; 2126 return kN32_SkColorType;
2138 } 2127 }
2139 2128
2140 } // namespace content 2129 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_widget_host_impl.h ('k') | content/browser/renderer_host/render_widget_host_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698