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

Unified 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: rebase Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/render_widget_host_impl.cc
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
index 7e9dc75f05c4a6914b23cd0a17ce9ad73685cd20..3edcbf518bf8a5acad00e684a9cf8354fd39b597 100644
--- a/content/browser/renderer_host/render_widget_host_impl.cc
+++ b/content/browser/renderer_host/render_widget_host_impl.cc
@@ -167,11 +167,9 @@ RenderWidgetHostImpl::RenderWidgetHostImpl(RenderWidgetHostDelegate* delegate,
surface_id_(0),
is_loading_(false),
is_hidden_(hidden),
- is_fullscreen_(false),
repaint_ack_pending_(false),
resize_ack_pending_(false),
screen_info_out_of_date_(false),
- top_controls_layout_height_(0.f),
should_auto_resize_(false),
waiting_for_screen_rects_ack_(false),
needs_repainting_on_restore_(false),
@@ -362,7 +360,8 @@ void RenderWidgetHostImpl::ResetSizeAndRepaintPendingFlags() {
"renderer_host", "RenderWidgetHostImpl::repaint_ack_pending_", this);
}
repaint_ack_pending_ = false;
- last_requested_size_.SetSize(0, 0);
+ if (old_resize_params_)
+ old_resize_params_->new_size = gfx::Size();
}
void RenderWidgetHostImpl::SendScreenRects() {
@@ -564,6 +563,42 @@ void RenderWidgetHostImpl::WasShown(const ui::LatencyInfo& latency_info) {
WasResized();
}
+void RenderWidgetHostImpl::GetResizeParams(
+ ViewMsg_Resize_Params* resize_params) {
+ *resize_params = ViewMsg_Resize_Params();
+
+ if (!screen_info_) {
+ screen_info_.reset(new blink::WebScreenInfo);
+ GetWebScreenInfo(screen_info_.get());
+ }
+ resize_params->screen_info = *screen_info_;
+ resize_params->resizer_rect = GetRootWindowResizerRect();
+
+ if (view_) {
+ resize_params->new_size = view_->GetRequestedRendererSize();
+ resize_params->physical_backing_size = view_->GetPhysicalBackingSize();
+ resize_params->top_controls_layout_height =
+ view_->GetTopControlsLayoutHeight();
+ resize_params->visible_viewport_size = view_->GetVisibleViewportSize();
+ resize_params->is_fullscreen = IsFullscreen();
+ }
+}
+
+void RenderWidgetHostImpl::SetInitialRenderSizeParams(
+ const ViewMsg_Resize_Params& resize_params) {
+ DCHECK(!old_resize_params_);
+
+ // We don't expect to receive an ACK when the requested size or the physical
+ // backing size is empty, or when the main viewport size didn't change.
+ if (!resize_params.new_size.IsEmpty() &&
+ !resize_params.physical_backing_size.IsEmpty()) {
+ resize_ack_pending_ = g_check_for_pending_resize_ack;
+ }
+
+ old_resize_params_ =
+ make_scoped_ptr(new ViewMsg_Resize_Params(resize_params));
+}
+
void RenderWidgetHostImpl::WasResized() {
// Skip if the |delegate_| has already been detached because
// it's web contents is being deleted.
@@ -572,53 +607,38 @@ void RenderWidgetHostImpl::WasResized() {
return;
}
- gfx::Size new_size(view_->GetRequestedRendererSize());
-
- gfx::Size old_physical_backing_size = physical_backing_size_;
- physical_backing_size_ = view_->GetPhysicalBackingSize();
- bool was_fullscreen = is_fullscreen_;
- is_fullscreen_ = IsFullscreen();
- float old_top_controls_layout_height =
- top_controls_layout_height_;
- top_controls_layout_height_ =
- view_->GetTopControlsLayoutHeight();
- gfx::Size old_visible_viewport_size = visible_viewport_size_;
- visible_viewport_size_ = view_->GetVisibleViewportSize();
-
- bool size_changed = new_size != last_requested_size_;
- bool side_payload_changed =
- screen_info_out_of_date_ ||
- old_physical_backing_size != physical_backing_size_ ||
- was_fullscreen != is_fullscreen_ ||
- old_top_controls_layout_height !=
- top_controls_layout_height_ ||
- old_visible_viewport_size != visible_viewport_size_;
-
- if (!size_changed && !side_payload_changed)
- return;
+ bool size_changed = false;
piman 2014/10/31 20:35:52 Default to true? If we never called SetInitialRend
mkosiba (inactive) 2014/11/06 00:18:29 I was going back and forth between doing that and
+ bool side_payload_changed = screen_info_out_of_date_;
+ scoped_ptr<ViewMsg_Resize_Params> params(new ViewMsg_Resize_Params);
- if (!screen_info_) {
- screen_info_.reset(new blink::WebScreenInfo);
- GetWebScreenInfo(screen_info_.get());
+ GetResizeParams(params.get());
+ if (old_resize_params_) {
+ size_changed = old_resize_params_->new_size != params->new_size;
+ side_payload_changed =
+ side_payload_changed ||
+ old_resize_params_->physical_backing_size !=
+ params->physical_backing_size ||
+ old_resize_params_->is_fullscreen != params->is_fullscreen ||
+ old_resize_params_->top_controls_layout_height !=
+ params->top_controls_layout_height ||
+ old_resize_params_->visible_viewport_size !=
+ params->visible_viewport_size;
}
+ if (!size_changed && !side_payload_changed && old_resize_params_)
+ return;
+
// We don't expect to receive an ACK when the requested size or the physical
// backing size is empty, or when the main viewport size didn't change.
- if (!new_size.IsEmpty() && !physical_backing_size_.IsEmpty() && size_changed)
+ if (!params->new_size.IsEmpty() && !params->physical_backing_size.IsEmpty() &&
+ size_changed) {
resize_ack_pending_ = g_check_for_pending_resize_ack;
+ }
- ViewMsg_Resize_Params params;
- params.screen_info = *screen_info_;
- params.new_size = new_size;
- params.physical_backing_size = physical_backing_size_;
- params.top_controls_layout_height = top_controls_layout_height_;
- params.visible_viewport_size = visible_viewport_size_;
- params.resizer_rect = GetRootWindowResizerRect();
- params.is_fullscreen = is_fullscreen_;
- if (!Send(new ViewMsg_Resize(routing_id_, params))) {
+ if (!Send(new ViewMsg_Resize(routing_id_, *params))) {
resize_ack_pending_ = false;
} else {
- last_requested_size_ = new_size;
+ old_resize_params_.swap(params);
}
}

Powered by Google App Engine
This is Rietveld 408576698