diff options
author | mbelshe@google.com <mbelshe@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-09 00:02:24 +0000 |
---|---|---|
committer | mbelshe@google.com <mbelshe@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-09 00:02:24 +0000 |
commit | 2533ce1803f3324e69134e93f59acbb44afb1aa2 (patch) | |
tree | 59f0afeb73854fcfe39ae92ae7f8df07c9d24526 /chrome/browser/renderer_host/render_widget_host.cc | |
parent | def2c34edce5346ea285d47c3653c5d4192b406e (diff) | |
download | chromium_src-2533ce1803f3324e69134e93f59acbb44afb1aa2.zip chromium_src-2533ce1803f3324e69134e93f59acbb44afb1aa2.tar.gz chromium_src-2533ce1803f3324e69134e93f59acbb44afb1aa2.tar.bz2 |
Defer window.close(), resizeTo() and moveTo() actions
by posting a task back to the message loop before notifying
the RenderWidgetHost to perform these operations.
Otherwise the JS code races with the browser to use the
modified window.
BUG=http://crbug.com/6377
BUG=http://crbug.com/6192
Cache a pending_window_rect on the render_view (moved from
prior CL where I had it on the chrome_client_impl). This
is a short lived cache, and not a complete solution. It
fixes this case, where a JS script makes multiple operations
and expects the GetWindowSize() to be correct immedately
after having called SetWindowSize().
BUG=http://crbug.com/835
Review URL: http://codereview.chromium.org/115030
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15698 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/renderer_host/render_widget_host.cc')
-rw-r--r-- | chrome/browser/renderer_host/render_widget_host.cc | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/chrome/browser/renderer_host/render_widget_host.cc b/chrome/browser/renderer_host/render_widget_host.cc index 7519e3d..62e09d7 100644 --- a/chrome/browser/renderer_host/render_widget_host.cc +++ b/chrome/browser/renderer_host/render_widget_host.cc @@ -461,8 +461,10 @@ void RenderWidgetHost::OnMsgClose() { void RenderWidgetHost::OnMsgRequestMove(const gfx::Rect& pos) { // Note that we ignore the position. - if (view_) + if (view_) { view_->SetSize(pos.size()); + Send(new ViewMsg_Move_ACK(routing_id_)); + } } void RenderWidgetHost::OnMsgPaintRect( |