|  | // Copyright 2015 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_PROXIMITY_AUTH_PROXIMITY_MONITOR_H | 
|  | #define COMPONENTS_PROXIMITY_AUTH_PROXIMITY_MONITOR_H | 
|  |  | 
|  | namespace proximity_auth { | 
|  |  | 
|  | // An interface that is responsible for tracking whether the remote device is | 
|  | // sufficiently close to the local device to permit unlocking. | 
|  | class ProximityMonitor { | 
|  | public: | 
|  | enum class Strategy { NONE, CHECK_RSSI, CHECK_TRANSMIT_POWER }; | 
|  |  | 
|  | virtual ~ProximityMonitor() {} | 
|  |  | 
|  | // Activates the proximity monitor. No-op if the proximity monitor is already | 
|  | // active. | 
|  | virtual void Start() = 0; | 
|  |  | 
|  | // Deactivates the proximity monitor. No-op if the proximity monitor is | 
|  | // already inactive. | 
|  | virtual void Stop() = 0; | 
|  |  | 
|  | // Returns the strategy used to determine whether the remote device is in | 
|  | // proximity. | 
|  | virtual Strategy GetStrategy() const = 0; | 
|  |  | 
|  | // Returns |true| iff the remote device is close enough to the local device, | 
|  | // given the user's current settings. | 
|  | virtual bool IsUnlockAllowed() const = 0; | 
|  |  | 
|  | // Returns |true| iff the remote device is close enough to the local device, | 
|  | // according to its RSSI measurement. | 
|  | virtual bool IsInRssiRange() const = 0; | 
|  |  | 
|  | // Records the current proximity measurements to UMA. This should be called | 
|  | // when the user successfully authenticates using proximity auth. | 
|  | virtual void RecordProximityMetricsOnAuthSuccess() = 0; | 
|  | }; | 
|  |  | 
|  | }  // namespace proximity_auth | 
|  |  | 
|  | #endif  // COMPONENTS_PROXIMITY_AUTH_PROXIMITY_MONITOR_H |