| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef COMPONENTS_CRYPTAUTH_DEVICE_CAPABILITY_MANAGER_H_ |
| #define COMPONENTS_CRYPTAUTH_DEVICE_CAPABILITY_MANAGER_H_ |
| |
| #include "base/callback.h" |
| #include "components/cryptauth/proto/cryptauth_api.pb.h" |
| |
| namespace cryptauth { |
| |
| // DeviceCapabilityManager sends requests to the back-end which enable/disable |
| // device capabilities and finds devices which contain those capabilities. Here, |
| // the term "capability" refers to the ability of a device to use a given |
| // feature (e.g. EasyUnlock or Instant Tethering). |
| class DeviceCapabilityManager { |
| public: |
| // CAPABILITY_UNLOCK_KEY refers to EasyUnlock. |
| enum class Capability { CAPABILITY_UNLOCK_KEY }; |
| |
| virtual ~DeviceCapabilityManager(){}; |
| |
| virtual void SetCapabilityEnabled( |
| const std::string& public_key, |
| Capability capability, |
| bool enabled, |
| const base::Closure& success_callback, |
| const base::Callback<void(const std::string&)>& error_callback) = 0; |
| |
| virtual void FindEligibleDevicesForCapability( |
| Capability capability, |
| const base::Callback<void(const std::vector<ExternalDeviceInfo>&, |
| const std::vector<IneligibleDevice>&)>& |
| success_callback, |
| const base::Callback<void(const std::string&)>& error_callback) = 0; |
| |
| virtual void IsCapabilityPromotable( |
| const std::string& public_key, |
| Capability capability, |
| const base::Callback<void(bool)>& success_callback, |
| const base::Callback<void(const std::string&)>& error_callback) = 0; |
| }; |
| } // namespace cryptauth |
| |
| #endif // COMPONENTS_CRYPTAUTH_DEVICE_CAPABILITY_MANAGER_H_ |