commit | 6a988bfbbdae7880bd3fba26f96c120600a76db5 | [log] [tgz] |
---|---|---|
author | Elly Fong-Jones <ellyjones@chromium.org> | Thu Dec 13 17:28:56 2018 |
committer | Commit Bot <commit-bot@chromium.org> | Thu Dec 13 17:28:56 2018 |
tree | a7b303b256cb0a6aa19dc0132adf29c4e7725c09 | |
parent | ebc1d4a86e895b51e87f163b2b34a98a7325e866 [diff] |
Reland "base: Don't keep running tasks after nested run loop quits on iOS" This reverts commit d0de086966fe7e05b6aa69d3ec69eedad2aa9e64. Reason for revert: broke ios-simulator bots Original change's description: > 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} TBR=ellyjones@chromium.org,skyostil@chromium.org,mark@chromium.org Change-Id: I68d7b4687fd1f2a4906961f55b31038199089ff3 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: 891670 Reviewed-on: https://chromium-review.googlesource.com/c/1376249 Reviewed-by: Elly Fong-Jones <ellyjones@chromium.org> Commit-Queue: Elly Fong-Jones <ellyjones@chromium.org> Cr-Commit-Position: refs/heads/master@{#616350}
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 .