Make sure gpu client tasks are not nested in webview

GPU command buffer code are not reentrant. In webview render thread, the
client and service are the same, so running client tasks immediately
will cause reentrancy. Instead use the executor to schedule these tasks.
In webview, the tasks are queued until the end of ScopedAllowGL to avoid
reentrancy.

Note InProcessCommandBuffer generally supports multiple client threads
so this scheme is only used on webview where this is not a problem.

Bug: 944882
Change-Id: If2516f19da2c38010e30c2e4e19a13e10541f646
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1536547
Reviewed-by: Antoine Labour <piman@chromium.org>
Commit-Queue: Bo <boliu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#643601}
6 files changed