1 // Copyright 2020 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 #include "chrome/browser/chromeos/child_accounts/time_limits/app_time_limits_policy_builder.h"
5 
6 #include "chrome/browser/chromeos/child_accounts/time_limits/app_time_policy_helpers.h"
7 #include "chrome/browser/chromeos/child_accounts/time_limits/app_types.h"
8 
9 namespace chromeos {
10 namespace app_time {
11 
AppTimeLimitsPolicyBuilder()12 AppTimeLimitsPolicyBuilder::AppTimeLimitsPolicyBuilder() {
13   value_.SetKey(policy::kAppLimitsArray, base::Value(base::Value::Type::LIST));
14   value_.SetKey(policy::kResetAtDict,
15                 base::Value(base::Value::Type::DICTIONARY));
16   value_.SetBoolKey(policy::kActivityReportingEnabled, true);
17 }
18 
19 AppTimeLimitsPolicyBuilder::~AppTimeLimitsPolicyBuilder() = default;
20 
AddAppLimit(const AppId & app_id,const AppLimit & app_limit)21 void AppTimeLimitsPolicyBuilder::AddAppLimit(const AppId& app_id,
22                                              const AppLimit& app_limit) {
23   base::Value new_entry(base::Value::Type::DICTIONARY);
24   new_entry.SetKey(policy::kAppInfoDict, policy::AppIdToDict(app_id));
25   base::Value app_limit_value = policy::AppLimitToDict(app_limit);
26   new_entry.MergeDictionary(&app_limit_value);
27 
28   base::Value* list = value_.FindListKey(policy::kAppLimitsArray);
29   DCHECK(list);
30   list->Append(std::move(new_entry));
31 }
32 
SetResetTime(int hour,int minutes)33 void AppTimeLimitsPolicyBuilder::SetResetTime(int hour, int minutes) {
34   value_.SetKey(policy::kResetAtDict, policy::ResetTimeToDict(hour, minutes));
35 }
36 
SetAppActivityReportingEnabled(bool enabled)37 void AppTimeLimitsPolicyBuilder::SetAppActivityReportingEnabled(bool enabled) {
38   value_.SetBoolKey(policy::kActivityReportingEnabled, enabled);
39 }
40 
41 }  // namespace app_time
42 }  // namespace chromeos
43