chromium/chrome/browser/ash/child_accounts/time_limit_consistency_test/consistency_test_utils.h

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Utilities to be used by the consistency golden converter unit tests.

#ifndef CHROME_BROWSER_ASH_CHILD_ACCOUNTS_TIME_LIMIT_CONSISTENCY_TEST_CONSISTENCY_TEST_UTILS_H_
#define CHROME_BROWSER_ASH_CHILD_ACCOUNTS_TIME_LIMIT_CONSISTENCY_TEST_CONSISTENCY_TEST_UTILS_H_

#include <optional>

#include "chrome/browser/ash/child_accounts/time_limit_consistency_test/goldens/consistency_golden.pb.h"

namespace ash {
namespace time_limit_consistency_utils {

// A time of day composed of hours and minutes, used when generating bedtime
// entries.
struct TimeOfDay {
  int hour;
  int minute;
};

// Adds a time window limit entry to the provided ConsistencyGoldenInput.
void AddWindowLimitEntryToGoldenInput(
    time_limit_consistency::ConsistencyGoldenInput* golden_input,
    time_limit_consistency::ConsistencyGoldenEffectiveDay effective_day,
    const TimeOfDay& starts_at,
    const TimeOfDay& ends_at,
    std::optional<int64_t> last_updated);

// Adds a usage limit entry to the provided ConsistencyGoldenInput.
void AddUsageLimitEntryToGoldenInput(
    time_limit_consistency::ConsistencyGoldenInput* golden_input,
    time_limit_consistency::ConsistencyGoldenEffectiveDay effective_day,
    int usage_quota_mins,
    std::optional<int64_t> last_updated);

// Adds an override to the provided ConsistencyGoldenInput. Must not be used
// for UNLOCK_UNTIL_LOCK_DEADLINE actions (will DCHECK()), use
// AddTimedOverrideToGoldenInput() instead.
void AddOverrideToGoldenInput(
    time_limit_consistency::ConsistencyGoldenInput* golden_input,
    time_limit_consistency::ConsistencyGoldenOverrideAction action,
    int64_t created_at);

// Adds a timed override (UNLOCK_UNTIL_LOCK_DEADLINE action) with duration set
// to |duration_millis| to the provided ConsistencyGoldenInput.
void AddTimedOverrideToGoldenInput(
    time_limit_consistency::ConsistencyGoldenInput* golden_input,
    int64_t duration_millis,
    int64_t created_at);

}  // namespace time_limit_consistency_utils
}  // namespace ash

#endif  // CHROME_BROWSER_ASH_CHILD_ACCOUNTS_TIME_LIMIT_CONSISTENCY_TEST_CONSISTENCY_TEST_UTILS_H_