| // Copyright 2020 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 CHROME_BROWSER_ASH_CHILD_ACCOUNTS_TIME_LIMITS_APP_TIME_POLICY_HELPERS_H_ |
| #define CHROME_BROWSER_ASH_CHILD_ACCOUNTS_TIME_LIMITS_APP_TIME_POLICY_HELPERS_H_ |
| |
| #include <map> |
| #include <string> |
| |
| #include "components/services/app_service/public/mojom/types.mojom.h" |
| #include "third_party/abseil-cpp/absl/types/optional.h" |
| |
| namespace base { |
| class TimeDelta; |
| class Value; |
| } // namespace base |
| |
| namespace ash { |
| namespace app_time { |
| |
| class AppId; |
| class AppLimit; |
| enum class AppRestriction; |
| |
| namespace policy { |
| |
| // Dictionary keys for app time limits related policies. |
| extern const char kUrlList[]; |
| extern const char kAppList[]; |
| extern const char kAppId[]; |
| extern const char kAppType[]; |
| extern const char kAppLimitsArray[]; |
| extern const char kAppInfoDict[]; |
| extern const char kRestrictionEnum[]; |
| extern const char kDailyLimitInt[]; |
| extern const char kLastUpdatedString[]; |
| extern const char kResetAtDict[]; |
| extern const char kHourInt[]; |
| extern const char kMinInt[]; |
| extern const char kActivityReportingEnabled[]; |
| |
| // Converts between apps::mojom::AppType and string used by app time limits |
| // policies. |
| apps::mojom::AppType PolicyStringToAppType(const std::string& app_type); |
| std::string AppTypeToPolicyString(apps::mojom::AppType app_type); |
| |
| // Converts between AppRestriction and string used by app time limits policies. |
| AppRestriction PolicyStringToAppRestriction(const std::string& restriction); |
| std::string AppRestrictionToPolicyString(const AppRestriction& restriction); |
| |
| // Deserializes AppId from |dict|. |
| // Returns value if |dict| contains valid app information. |
| absl::optional<AppId> AppIdFromDict(const base::Value& dict); |
| |
| // Serializes AppId to the dictionary. |
| base::Value AppIdToDict(const AppId& app_id); |
| |
| // Deserializes AppId from |dict|. |
| // Returns value if |dict| contains valid app information in its entry keyed by |
| // kAppInfoDict. |
| absl::optional<AppId> AppIdFromAppInfoDict(const base::Value& dict); |
| |
| // Deserializes AppLimit from |dict|. |
| // Returns value if |dict| contains valid app limit information. |
| absl::optional<AppLimit> AppLimitFromDict(const base::Value& dict); |
| |
| // Serializes AppLimit to the dictionary. |
| base::Value AppLimitToDict(const AppLimit& limit); |
| |
| // Deserializes daily limits reset time from |dict|. |
| // Returns value if |dict| contains valid reset time information. |
| absl::optional<base::TimeDelta> ResetTimeFromDict(const base::Value& dict); |
| |
| // Serializes daily limits reset to the dictionary. |
| base::Value ResetTimeToDict(int hour, int minutes); |
| |
| // Deserializes activity reporting enabled boolean from |dict|. |
| // Returns value if |dict| contains a valid entry. |
| absl::optional<bool> ActivityReportingEnabledFromDict(const base::Value& dict); |
| |
| // Deserializes app limits data from the |dict|. |
| // Will return empty map if |dict| is invalid. |
| std::map<AppId, AppLimit> AppLimitsFromDict(const base::Value& dict); |
| |
| } // namespace policy |
| } // namespace app_time |
| } // namespace ash |
| |
| #endif // CHROME_BROWSER_ASH_CHILD_ACCOUNTS_TIME_LIMITS_APP_TIME_POLICY_HELPERS_H_ |