// 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_METRICS_H
#define COMPONENTS_PROXIMITY_AUTH_METRICS_H

#include "base/time/time.h"

namespace proximity_auth {
namespace metrics {

extern const char kUnknownDeviceModel[];
extern const int kUnknownProximityValue;

// Possible states of the remote device's security settings. This enum is used
// to back a histogram, and hence should be treated as append-only.
enum class RemoteSecuritySettingsState {
  UNKNOWN,
  SCREEN_LOCK_DISABLED_TRUST_AGENT_UNSUPPORTED,
  SCREEN_LOCK_DISABLED_TRUST_AGENT_DISABLED,
  SCREEN_LOCK_DISABLED_TRUST_AGENT_ENABLED,
  SCREEN_LOCK_ENABLED_TRUST_AGENT_UNSUPPORTED,
  SCREEN_LOCK_ENABLED_TRUST_AGENT_DISABLED,
  SCREEN_LOCK_ENABLED_TRUST_AGENT_ENABLED,
  COUNT
};

// Records the current |rolling_rssi| reading, upon a successful auth attempt.
// |rolling_rssi| should be set to |kUnknownProximityValue| if no RSSI readings
// are available.
void RecordAuthProximityRollingRssi(int rolling_rssi);

// Records the difference between the transmit power and maximum transmit power,
// upon a successful auth attempt. |transmit_power_delta| should be set to
// |kUnknownProximityValue| if no Tx power readings are available.
void RecordAuthProximityTransmitPowerDelta(int transmit_power_delta);

// Records the time elapsed since the last zero RSSI value was read, upon a
// successful auth attempt.
void RecordAuthProximityTimeSinceLastZeroRssi(
    base::TimeDelta time_since_last_zero_rssi);

// Records the phone model used for a successful auth attempt. The model is
// recorded as a 32-bit hash due to the limits of UMA. |device_model| should be
// set to |kUnknownDeviceModel| if the device model could not be read.
void RecordAuthProximityRemoteDeviceModelHash(const std::string& device_model);

// Records the screen lock and trust agent settings state of the remote device,
// as received in a status update from the remote device.
void RecordRemoteSecuritySettingsState(RemoteSecuritySettingsState state);

}  // namespace metrics
}  // namespace proximity_auth

#endif  // COMPONENTS_PROXIMITY_AUTH_METRICS_H
