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

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

Issue 1078123002: Send resize event when the screen info changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: simpler Created 5 years, 7 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 base::TimeDelta::FromMilliseconds(kHungRendererDelayMs)), 163 base::TimeDelta::FromMilliseconds(kHungRendererDelayMs)),
164 renderer_initialized_(false), 164 renderer_initialized_(false),
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_(false),
174 auto_resize_enabled_(false), 173 auto_resize_enabled_(false),
175 waiting_for_screen_rects_ack_(false), 174 waiting_for_screen_rects_ack_(false),
176 needs_repainting_on_restore_(false), 175 needs_repainting_on_restore_(false),
177 is_unresponsive_(false), 176 is_unresponsive_(false),
178 in_flight_event_count_(0), 177 in_flight_event_count_(0),
179 in_get_backing_store_(false), 178 in_get_backing_store_(false),
180 ignore_input_events_(false), 179 ignore_input_events_(false),
181 input_method_active_(false), 180 input_method_active_(false),
182 text_direction_updated_(false), 181 text_direction_updated_(false),
183 text_direction_(blink::WebTextDirectionLeftToRight), 182 text_direction_(blink::WebTextDirectionLeftToRight),
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after
573 // could handle both the restore and resize at once. This isn't that big a 572 // 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 573 // deal as RenderWidget::WasShown delays updating, so that the resize from
575 // WasResized is usually processed before the renderer is painted. 574 // WasResized is usually processed before the renderer is painted.
576 WasResized(); 575 WasResized();
577 } 576 }
578 577
579 bool RenderWidgetHostImpl::GetResizeParams( 578 bool RenderWidgetHostImpl::GetResizeParams(
580 ViewMsg_Resize_Params* resize_params) { 579 ViewMsg_Resize_Params* resize_params) {
581 *resize_params = ViewMsg_Resize_Params(); 580 *resize_params = ViewMsg_Resize_Params();
582 581
583 if (!screen_info_) { 582 GetWebScreenInfo(&resize_params->screen_info);
584 screen_info_.reset(new blink::WebScreenInfo);
585 GetWebScreenInfo(screen_info_.get());
586 }
587 resize_params->screen_info = *screen_info_;
588 resize_params->resizer_rect = GetRootWindowResizerRect(); 583 resize_params->resizer_rect = GetRootWindowResizerRect();
589 584
590 if (view_) { 585 if (view_) {
591 resize_params->new_size = view_->GetRequestedRendererSize(); 586 resize_params->new_size = view_->GetRequestedRendererSize();
592 resize_params->physical_backing_size = view_->GetPhysicalBackingSize(); 587 resize_params->physical_backing_size = view_->GetPhysicalBackingSize();
593 resize_params->top_controls_height = view_->GetTopControlsHeight(); 588 resize_params->top_controls_height = view_->GetTopControlsHeight();
594 resize_params->top_controls_shrink_blink_size = 589 resize_params->top_controls_shrink_blink_size =
595 view_->DoTopControlsShrinkBlinkSize(); 590 view_->DoTopControlsShrinkBlinkSize();
596 resize_params->visible_viewport_size = view_->GetVisibleViewportSize(); 591 resize_params->visible_viewport_size = view_->GetVisibleViewportSize();
597 resize_params->is_fullscreen_granted = IsFullscreenGranted(); 592 resize_params->is_fullscreen_granted = IsFullscreenGranted();
598 resize_params->display_mode = GetDisplayMode(); 593 resize_params->display_mode = GetDisplayMode();
599 } 594 }
600 595
601 const bool size_changed = 596 const bool size_changed =
602 !old_resize_params_ || 597 !old_resize_params_ ||
603 old_resize_params_->new_size != resize_params->new_size || 598 old_resize_params_->new_size != resize_params->new_size ||
604 (old_resize_params_->physical_backing_size.IsEmpty() && 599 (old_resize_params_->physical_backing_size.IsEmpty() &&
605 !resize_params->physical_backing_size.IsEmpty()); 600 !resize_params->physical_backing_size.IsEmpty());
606 bool dirty = 601 bool dirty = size_changed ||
607 size_changed || screen_info_out_of_date_ || 602 old_resize_params_->screen_info != resize_params->screen_info ||
608 old_resize_params_->physical_backing_size != 603 old_resize_params_->physical_backing_size !=
609 resize_params->physical_backing_size || 604 resize_params->physical_backing_size ||
610 old_resize_params_->is_fullscreen_granted != 605 old_resize_params_->is_fullscreen_granted !=
611 resize_params->is_fullscreen_granted || 606 resize_params->is_fullscreen_granted ||
612 old_resize_params_->display_mode != resize_params->display_mode || 607 old_resize_params_->display_mode != resize_params->display_mode ||
613 old_resize_params_->top_controls_height != 608 old_resize_params_->top_controls_height !=
614 resize_params->top_controls_height || 609 resize_params->top_controls_height ||
615 old_resize_params_->top_controls_shrink_blink_size != 610 old_resize_params_->top_controls_shrink_blink_size !=
616 resize_params->top_controls_shrink_blink_size || 611 resize_params->top_controls_shrink_blink_size ||
617 old_resize_params_->visible_viewport_size != 612 old_resize_params_->visible_viewport_size !=
(...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after
1130 } 1125 }
1131 } 1126 }
1132 } 1127 }
1133 1128
1134 void RenderWidgetHostImpl::GetWebScreenInfo(blink::WebScreenInfo* result) { 1129 void RenderWidgetHostImpl::GetWebScreenInfo(blink::WebScreenInfo* result) {
1135 TRACE_EVENT0("renderer_host", "RenderWidgetHostImpl::GetWebScreenInfo"); 1130 TRACE_EVENT0("renderer_host", "RenderWidgetHostImpl::GetWebScreenInfo");
1136 if (view_) 1131 if (view_)
1137 view_->GetScreenInfo(result); 1132 view_->GetScreenInfo(result);
1138 else 1133 else
1139 RenderWidgetHostViewBase::GetDefaultScreenInfo(result); 1134 RenderWidgetHostViewBase::GetDefaultScreenInfo(result);
1135 // TODO(sievers): find a way to make this done another way so the method
1136 // can be const.
1140 latency_tracker_.set_device_scale_factor(result->deviceScaleFactor); 1137 latency_tracker_.set_device_scale_factor(result->deviceScaleFactor);
1141 screen_info_out_of_date_ = false;
1142 } 1138 }
1143 1139
1144 const NativeWebKeyboardEvent* 1140 const NativeWebKeyboardEvent*
1145 RenderWidgetHostImpl::GetLastKeyboardEvent() const { 1141 RenderWidgetHostImpl::GetLastKeyboardEvent() const {
1146 return input_router_->GetLastKeyboardEvent(); 1142 return input_router_->GetLastKeyboardEvent();
1147 } 1143 }
1148 1144
1149 void RenderWidgetHostImpl::NotifyScreenInfoChanged() { 1145 void RenderWidgetHostImpl::NotifyScreenInfoChanged() {
1150 if (delegate_) 1146 if (delegate_)
1151 delegate_->ScreenInfoChanged(); 1147 delegate_->ScreenInfoChanged();
1152 1148
1153 // The resize message (which may not happen immediately) will carry with it 1149 // The resize message (which may not happen immediately) will carry with it
1154 // the screen info as well as the new size (if the screen has changed scale 1150 // the screen info as well as the new size (if the screen has changed scale
1155 // factor). 1151 // factor).
1156 InvalidateScreenInfo();
1157 WasResized(); 1152 WasResized();
1158 } 1153 }
1159 1154
1160 void RenderWidgetHostImpl::InvalidateScreenInfo() {
1161 screen_info_out_of_date_ = true;
1162 screen_info_.reset();
1163 }
1164
1165 void RenderWidgetHostImpl::GetSnapshotFromBrowser( 1155 void RenderWidgetHostImpl::GetSnapshotFromBrowser(
1166 const base::Callback<void(const unsigned char*,size_t)> callback) { 1156 const base::Callback<void(const unsigned char*,size_t)> callback) {
1167 int id = next_browser_snapshot_id_++; 1157 int id = next_browser_snapshot_id_++;
1168 pending_browser_snapshots_.insert(std::make_pair(id, callback)); 1158 pending_browser_snapshots_.insert(std::make_pair(id, callback));
1169 Send(new ViewMsg_ForceRedraw(GetRoutingID(), id)); 1159 Send(new ViewMsg_ForceRedraw(GetRoutingID(), id));
1170 } 1160 }
1171 1161
1172 void RenderWidgetHostImpl::OnSelectionChanged(const base::string16& text, 1162 void RenderWidgetHostImpl::OnSelectionChanged(const base::string16& text,
1173 size_t offset, 1163 size_t offset,
1174 const gfx::Range& range) { 1164 const gfx::Range& range) {
(...skipping 946 matching lines...) Expand 10 before | Expand all | Expand 10 after
2121 } 2111 }
2122 #endif 2112 #endif
2123 2113
2124 SkColorType RenderWidgetHostImpl::PreferredReadbackFormat() { 2114 SkColorType RenderWidgetHostImpl::PreferredReadbackFormat() {
2125 if (view_) 2115 if (view_)
2126 return view_->PreferredReadbackFormat(); 2116 return view_->PreferredReadbackFormat();
2127 return kN32_SkColorType; 2117 return kN32_SkColorType;
2128 } 2118 }
2129 2119
2130 } // namespace content 2120 } // 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