virtual_fido_device_factory.cc 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // Copyright 2018 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "device/fido/virtual_fido_device_factory.h"
  5. #include "device/fido/virtual_fido_device_discovery.h"
  6. namespace device {
  7. namespace test {
  8. VirtualFidoDeviceFactory::VirtualFidoDeviceFactory() = default;
  9. VirtualFidoDeviceFactory::~VirtualFidoDeviceFactory() = default;
  10. void VirtualFidoDeviceFactory::SetSupportedProtocol(
  11. ProtocolVersion supported_protocol) {
  12. supported_protocol_ = supported_protocol;
  13. }
  14. void VirtualFidoDeviceFactory::SetTransport(FidoTransportProtocol transport) {
  15. transport_ = transport;
  16. state_->transport = transport;
  17. }
  18. void VirtualFidoDeviceFactory::SetCtap2Config(
  19. const VirtualCtap2Device::Config& config) {
  20. supported_protocol_ = ProtocolVersion::kCtap2;
  21. ctap2_config_ = config;
  22. }
  23. VirtualFidoDevice::State* VirtualFidoDeviceFactory::mutable_state() {
  24. return state_.get();
  25. }
  26. scoped_refptr<VirtualFidoDeviceDiscovery::Trace>
  27. VirtualFidoDeviceFactory::trace() {
  28. return trace_;
  29. }
  30. std::vector<std::unique_ptr<FidoDiscoveryBase>>
  31. VirtualFidoDeviceFactory::Create(FidoTransportProtocol transport) {
  32. if (transport != transport_) {
  33. return {};
  34. }
  35. const size_t trace_index = trace_->discoveries.size();
  36. trace_->discoveries.emplace_back();
  37. return SingleDiscovery(std::make_unique<VirtualFidoDeviceDiscovery>(
  38. trace_, trace_index, transport_, state_, supported_protocol_,
  39. ctap2_config_, /*disconnect_events=*/nullptr));
  40. }
  41. bool VirtualFidoDeviceFactory::IsTestOverride() {
  42. return true;
  43. }
  44. } // namespace test
  45. } // namespace device