Account for short-circuited resizes in Content Shell.
When running layout tests, we short-circuit our window-positioning
machinery to stay within the rendering process. This means that
we should similarly short-circuit sizing of the newly opened
secondary windows. Otherwise, a race occurs and occasionally,
a resize to 0x0 message arrives from the browser process.
BUG=307570
R=jam, jochen, tony
Review URL: https://codereview.chromium.org/29233005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@229681 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index 18f8556..52522ae 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -1988,19 +1988,21 @@
(pos.y - popup_view_origin_for_emulation_.y()) * scale;
}
- if (did_show_) {
- if (!RenderThreadImpl::current()->layout_test_mode()) {
+ if (!RenderThreadImpl::current()->layout_test_mode()) {
+ if (did_show_) {
Send(new ViewHostMsg_RequestMove(routing_id_, pos));
SetPendingWindowRect(pos);
} else {
- WebSize new_size(pos.width, pos.height);
- Resize(new_size, new_size, overdraw_bottom_height_,
- WebRect(), is_fullscreen_, NO_RESIZE_ACK);
- view_screen_rect_ = pos;
- window_screen_rect_ = pos;
+ initial_pos_ = pos;
}
} else {
- initial_pos_ = pos;
+ WebSize new_size(pos.width, pos.height);
+ Resize(new_size, new_size, overdraw_bottom_height_,
+ WebRect(), is_fullscreen_, NO_RESIZE_ACK);
+ view_screen_rect_ = pos;
+ window_screen_rect_ = pos;
+ if (!did_show_)
+ initial_pos_ = pos;
}
}