commit | d0de086966fe7e05b6aa69d3ec69eedad2aa9e64 | [log] [tgz] |
---|---|---|
author | Elly Fong-Jones <ellyjones@chromium.org> | Thu Dec 13 13:45:26 2018 |
committer | Commit Bot <commit-bot@chromium.org> | Thu Dec 13 13:45:26 2018 |
tree | dafa8dfcb4a6f66fa04e1e96d8f6d8c3c415da0b | |
parent | 018a4bf91ab8f118990e70f8a1c64363cb98aa04 [diff] |
Revert "base: Don't keep running tasks after nested run loop quits on iOS" This reverts commit 3ce69a991fd9ca03030738e324a1833c02462da0. Reason for revert: Sheriff suspects this broke a handful of menu tests on macOS 10.12: https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/Mac10.12%20Tests/17564 e.g.: WebViewTest.TestContextMenu Original change's description: > base: Don't keep running tasks after nested run loop quits on iOS > > The CoreFoundation message pump (MessagePumpCFRunLoop) scheduled an extra call > to Delegate::DoWork in the following scenario: > > 1. Start a run loop and schedule DoWork. > 2. In DoWork, start a second run nested run loop which quits immediately. > 3. After the nested run loop quits, schedule another DoWork which quits the > original run loop. > > After step #3, the message pump would call DoWork again because the nested > run loop triggered the execution of the nesting deferred work source. > > This patch fixes the issue by checking whether the further work is allowed > before calling DoWork. Note that this check can't be done just for the nested > deferred work source, because in the flow above that source is what triggers > the call to DoWork in step #3, i.e., the run loop hasn't quit yet at that point. > > The patch also includes a fix to > WebContentsViewMacInteractiveTest.SelectMenuLifetime; the test had the > following sequence in it (while a select menu is open): > > 1. Quit an outer run loop. > 2. Post a task onto an inner run loop to continue the test. > > The assumption here was that a select menu causes an inner run loop to > be active while the menu is open. This wasn't strictly correct: the > inner run loop is a native (CoreFoundation) run loop as opposed to a > base::RunLoop, which can't be explicitly exited with RunLoop::Quit(). > This means that the Quit() in step #1 affects the same run loop as the > PostTask in step #2, i.e., the task is prevented from running. > > This patch changes the test to only quit the test run loop after the > posted task (which closes the select menu) has run. > > Bug: 891670 > Change-Id: I6fe21289205664c4e1b1469547495667c753f56d > Reviewed-on: https://chromium-review.googlesource.com/c/1373754 > Reviewed-by: Mark Mentovai <mark@chromium.org> > Commit-Queue: Sami Kyöstilä <skyostil@chromium.org> > Cr-Commit-Position: refs/heads/master@{#615967} TBR=skyostil@chromium.org,mark@chromium.org Change-Id: If6e3b032ae40a391df56b62ae78f0bc1ed8d93f6 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: 891670 Reviewed-on: https://chromium-review.googlesource.com/c/1375382 Reviewed-by: Elly Fong-Jones <ellyjones@chromium.org> Commit-Queue: Elly Fong-Jones <ellyjones@chromium.org> Cr-Commit-Position: refs/heads/master@{#616297}
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 .