commit | 464fae69315d22b6bce86525bb73305bd0cc7296 | [log] [tgz] |
---|---|---|
author | Christopher Cameron <ccameron@chromium.org> | Sat Dec 08 02:32:47 2018 |
committer | Commit Bot <commit-bot@chromium.org> | Sat Dec 08 02:32:47 2018 |
tree | 546672abdfa01af99a26e949e1902a267ae7a166 | |
parent | 3977f0b248e4f1e3055472669ef028057fb2e900 [diff] |
RemoteMacViews: Fix hang at command-Q When we call -[NSApp terminate] in the app shim process, this does not immediately terminate. Rather, it 0. Sends the message appShimController_->host()->QuitApp() and waits for a reply before actually terminating. 1. In the browser, this call hits ExtensionAppShimHandler:: CloseBrowsersForApp 2. Which will end up calling NativeWidgetMac::Close 3. Which will then politely request that the app shim process close the corresponding window via views_bridge_mac::mojom::BridgedNativeWidget::CloseWindow 4. Which will send an ack back to the browser via views_bridge_mac::mojom::BridgedNativeWidgetHost::OnWindowHasClosed 5. Whereupon the browser window will be registered as closed, and a close message will be sent to the app shim, and the wait for termination will break This ends up not working at step 3. Our suspended terminate ends up running a nested message loop inside a mojo message handler, and so it will never execute the CloseWindow message, and therefore never close. Change the logic at [0] to send the QuitApp message, and then immediately terminate the application. Bug: 902583 Change-Id: I60fd7b5fdf9f145369d06219e8ebef36cdcd0f44 Reviewed-on: https://chromium-review.googlesource.com/c/1364220 Reviewed-by: Robert Sesek <rsesek@chromium.org> Commit-Queue: ccameron <ccameron@chromium.org> Cr-Commit-Position: refs/heads/master@{#614922}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .