Reland "Reland "base: Don't keep running tasks after nested run loop quits on iOS""

This reverts commit 5f534197944cdb2e4947e9aca7ceaee68ee3608d.

Reason for revert: This CL needs to be in the tree to keep ios-simulator green.

Original change's description:
> Revert "Reland "base: Don't keep running tasks after nested run loop quits on iOS""
> 
> This reverts commit 6a988bfbbdae7880bd3fba26f96c120600a76db5.
> 
> Reason for revert: should not have relanded
> 
> Original change's description:
> > 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}
> 
> TBR=ellyjones@chromium.org,skyostil@chromium.org,mark@chromium.org
> 
> Change-Id: Ia05259cd2f2d60b41efdc7b73702da865680c1a3
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: 891670
> Reviewed-on: https://chromium-review.googlesource.com/c/1376250
> Reviewed-by: Elly Fong-Jones <ellyjones@chromium.org>
> Commit-Queue: Elly Fong-Jones <ellyjones@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#616352}

TBR=ellyjones@chromium.org,skyostil@chromium.org,mark@chromium.org

Change-Id: Ife24296aec35ef48231e2ae9f632898de8085d64
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 891670
Reviewed-on: https://chromium-review.googlesource.com/c/1376734
Reviewed-by: Rohit Rao <rohitrao@chromium.org>
Commit-Queue: Rohit Rao <rohitrao@chromium.org>
Cr-Commit-Position: refs/heads/master@{#616421}
3 files changed