# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

description   "Report UMA statistics each time login prompt is shown"
author        "chromium-os-dev@chromium.org"

# This is triggered every time the login prompt is shown.
start on login-prompt-visible

script
  # Records the difference between two timestamps in milliseconds.
  # Only emits metrics if none of the three arguments are empty.
  # Arguments are <starting point> <ending point> <metric name>
  record_delta() {
    if [ $# -eq 3 ]; then
      metrics_client $3 $(($2 - $1)) 1 1000000 50
    fi
  }

  CHROME_LOGOUT_STARTED=$(bootstat_get_last logout-started time-ms)
  # Only record restart statistics if chrome performed a logout.
  if [ -n "$CHROME_LOGOUT_STARTED" ]; then
    CHROME_UI_POST_STOP=$(bootstat_get_last ui-post-stop time-ms)
    CHROME_PROCESSES_TERMINATED=$(bootstat_get_last \
                                  other-processes-terminated time-ms)
    CHROME_X_TERMINATED=$(bootstat_get_last x-terminated time-ms)
    CHROME_CRYPTOHOME_UNMOUNTED=$(bootstat_get_last \
                                  cryptohome-unmounted time-ms)
    CHROME_EXEC=$(bootstat_get_last chrome-exec time-ms)
    CHROME_LOGIN_PROMPT_VISIBLE=$(bootstat_get_last \
                                  login-prompt-visible time-ms)

    # Record deltas between some interesting steps.
    record_delta $CHROME_LOGOUT_STARTED $CHROME_UI_POST_STOP \
                 Uptime.LogoutToUIStopAfterLogout

    record_delta $CHROME_UI_POST_STOP $CHROME_PROCESSES_TERMINATED \
                 Uptime.UIStopToProcessesTerminatedAfterLogout

    record_delta $CHROME_PROCESSES_TERMINATED $CHROME_X_TERMINATED \
                 Uptime.ProcessesTerminatedToXTerminatedAfterLogout

    record_delta $CHROME_X_TERMINATED $CHROME_EXEC \
                 Uptime.XTerminatedToChromeExecAfterLogout

    record_delta $CHROME_EXEC $CHROME_LOGIN_PROMPT_VISIBLE \
                 Uptime.ChromeExecToLoginPromptVisibleAfterLogout

    # Some summary statistics so we can account for everything.
    record_delta $CHROME_LOGOUT_STARTED $CHROME_CRYPTOHOME_UNMOUNTED \
                 Uptime.Logout

    record_delta $CHROME_CRYPTOHOME_UNMOUNTED $CHROME_LOGIN_PROMPT_VISIBLE \
                 Uptime.LoginPromptSetupTimeAfterLogout

    record_delta $CHROME_LOGOUT_STARTED $CHROME_LOGIN_PROMPT_VISIBLE \
                 Uptime.LogoutToLoginPromptVisible
  fi
end script
