| // 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. |
| // |
| // Helper functions to create and modify Usage Time Limit policies. |
| |
| #ifndef CHROME_BROWSER_ASH_CHILD_ACCOUNTS_TIME_LIMIT_TEST_UTILS_H_ |
| #define CHROME_BROWSER_ASH_CHILD_ACCOUNTS_TIME_LIMIT_TEST_UTILS_H_ |
| |
| #include <memory> |
| #include <string> |
| |
| #include "base/time/time.h" |
| #include "base/values.h" |
| #include "chrome/browser/ash/child_accounts/time_limit_override.h" |
| |
| namespace ash { |
| namespace time_limit_test_utils { |
| |
| // Days of the week that should be used to create the Time Limit policy. |
| extern const char kMonday[]; |
| extern const char kTuesday[]; |
| extern const char kWednesday[]; |
| extern const char kThursday[]; |
| extern const char kFriday[]; |
| extern const char kSaturday[]; |
| extern const char kSunday[]; |
| |
| // Parses a string time to a base::Time object, see |
| // |base::Time::FromUTCString| for compatible input formats. |
| base::Time TimeFromString(const char* time_string); |
| |
| // Creates a timestamp with the correct format that is used in the Time Limit |
| // policy. See |base::Time::FromUTCString| for compatible input formats. |
| std::string CreatePolicyTimestamp(const char* time_string); |
| std::string CreatePolicyTimestamp(base::Time time); |
| |
| // Creates a TimeDelta representing an hour in a day. This representation is |
| // widely used on the Time Limit policy. |
| base::TimeDelta CreateTime(int hour, int minute); |
| |
| // Creates a time object with the correct format that is used in the Time Limit |
| // policy. |
| base::Value::Dict CreatePolicyTime(base::TimeDelta time); |
| |
| // Creates a time window limit dictionary used in the Time Limit policy. |
| base::Value::Dict CreateTimeWindow(const std::string& day, |
| base::TimeDelta start_time, |
| base::TimeDelta end_time, |
| base::Time last_updated); |
| |
| // Creates a time usage limit dictionary used in the Time Limit policy. |
| base::Value::Dict CreateTimeUsage(base::TimeDelta usage_quota, |
| base::Time last_updated); |
| |
| // Creates dictionary with a minimalist Time Limit policy, containing only the |
| // time usage limit reset time. |
| base::Value::Dict CreateTimeLimitPolicy(base::TimeDelta reset_time); |
| |
| // Adds a time usage limit dictionary to the provided Time Limit policy. |
| void AddTimeUsageLimit(base::Value::Dict* policy, |
| std::string day, |
| base::TimeDelta quota, |
| base::Time last_updated); |
| |
| // Adds a time window limit dictionary to the provided Time Limit policy. |
| void AddTimeWindowLimit(base::Value::Dict* policy, |
| const std::string& day, |
| base::TimeDelta start_time, |
| base::TimeDelta end_time, |
| base::Time last_updated); |
| |
| // Adds a time limit override dictionary to the provided Time Limit policy. |
| void AddOverride(base::Value::Dict* policy, |
| usage_time_limit::TimeLimitOverride::Action action, |
| base::Time created_at); |
| |
| // Adds a time limit override with duration dictionary to the provided |
| // Time Limit policy. |
| void AddOverrideWithDuration(base::Value::Dict* policy, |
| usage_time_limit::TimeLimitOverride::Action action, |
| base::Time created_at, |
| base::TimeDelta duration); |
| |
| // Converts the Time Limit policy to a string. |
| std::string PolicyToString(const base::Value::Dict& policy); |
| |
| } // namespace time_limit_test_utils |
| } // namespace ash |
| |
| #endif // CHROME_BROWSER_ASH_CHILD_ACCOUNTS_TIME_LIMIT_TEST_UTILS_H_ |