//device/fido: add FidoAuthenticator interface

This adds the FidoAuthenticator interface, which defines the basic
methods from the WebAuthn authenticator model (MakeCredential and
GetAssertion).

FidoRequestHandler is changed to hold a map of FidoAuthenticator
instances, rather than a map of FidoTasks. FidoTask and FidoDevice are
moved behind a concrete FidoAuthenticator subclass called
FidoDeviceAuthenticator (but remain unchanged otherwise). This allows
for FidoAuthenticators that are backed by platform APIs rather than a
detachable physical  device.

This is a purely structural change. No functional changes intended.

Change-Id: Id158db5801ac4556066a1a88136d7a720b137e1b
Reviewed-on: https://chromium-review.googlesource.com/1045892
Commit-Queue: Jan Wilken Dörrie <[email protected]>
Reviewed-by: Jan Wilken Dörrie <[email protected]>
Cr-Commit-Position: refs/heads/master@{#557311}
diff --git a/device/fido/get_assertion_request_handler.h b/device/fido/get_assertion_request_handler.h
index 8168bde..4f318334 100644
--- a/device/fido/get_assertion_request_handler.h
+++ b/device/fido/get_assertion_request_handler.h
@@ -22,8 +22,7 @@
 
 namespace device {
 
-class FidoDevice;
-class FidoTask;
+class FidoAuthenticator;
 class AuthenticatorGetAssertionResponse;
 
 using SignResponseCallback =
@@ -42,7 +41,7 @@
 
  private:
   // FidoRequestHandlerBase:
-  std::unique_ptr<FidoTask> CreateTaskForNewDevice(FidoDevice* device) override;
+  void DispatchRequest(FidoAuthenticator* authenticator) override;
 
   CtapGetAssertionRequest request_;
   base::WeakPtrFactory<GetAssertionRequestHandler> weak_factory_;