[base] Simplify IAsyncOperation Implementation

This change simplifies base/win/async_operation.h by deduplicating logic
and flattening the class hierarchy. This is possible by introducing two
compile time switches, that pick the correct storage and result type
depending on the provided template instantiation.

Bug: 821766
Change-Id: Ia04dc4cdbc42a4005204491cc47650d35f413cdb
Reviewed-on: https://chromium-review.googlesource.com/1106382
Reviewed-by: Robert Liao <robliao@chromium.org>
Commit-Queue: Jan Wilken Dörrie <jdoerrie@chromium.org>
Cr-Commit-Position: refs/heads/master@{#568758}
1 file changed