Commit 2830eb18 authored by Leonardo Padilha's avatar Leonardo Padilha Committed by Commit Bot

Add logic to override with duration in UsageTimeLimitProcessor.

This will cause the device to stay unlocked for the amount of time set in the duration and locked afterwards.

Bug: 934923
Change-Id: Ia05d7e74ac0d89d682e332c3a248d802bd5df0ef
Reviewed-on: https://chromium-review.googlesource.com/c/1477826
Commit-Queue: Leonardo Padilha <ldaguilar@chromium.org>
Reviewed-by: default avatarHenrique Grandinetti <hgrandinetti@chromium.org>
Reviewed-by: default avatarAga Wronska <agawronska@chromium.org>
Cr-Commit-Position: refs/heads/master@{#636926}
parent 2d9aed07
...@@ -4,8 +4,12 @@ ...@@ -4,8 +4,12 @@
#include "chrome/browser/chromeos/child_accounts/time_limit_test_utils.h" #include "chrome/browser/chromeos/child_accounts/time_limit_test_utils.h"
#include <algorithm>
#include <utility>
#include "base/json/json_writer.h" #include "base/json/json_writer.h"
#include "base/logging.h" #include "base/logging.h"
#include "base/optional.h"
namespace chromeos { namespace chromeos {
namespace time_limit_test_utils { namespace time_limit_test_utils {
...@@ -15,6 +19,8 @@ namespace { ...@@ -15,6 +19,8 @@ namespace {
constexpr char kOverrides[] = "overrides"; constexpr char kOverrides[] = "overrides";
constexpr char kOverrideAction[] = "action"; constexpr char kOverrideAction[] = "action";
constexpr char kOverrideActionCreatedAt[] = "created_at_millis"; constexpr char kOverrideActionCreatedAt[] = "created_at_millis";
constexpr char kOverrideActionDuration[] = "duration_mins";
constexpr char kOverrideActionSpecificData[] = "action_specific_data";
constexpr char kTimeLimitLastUpdatedAt[] = "last_updated_millis"; constexpr char kTimeLimitLastUpdatedAt[] = "last_updated_millis";
constexpr char kTimeWindowLimit[] = "time_window_limit"; constexpr char kTimeWindowLimit[] = "time_window_limit";
constexpr char kTimeUsageLimit[] = "time_usage_limit"; constexpr char kTimeUsageLimit[] = "time_usage_limit";
...@@ -28,11 +34,21 @@ constexpr char kWindowLimitEntryTimeHour[] = "hour"; ...@@ -28,11 +34,21 @@ constexpr char kWindowLimitEntryTimeHour[] = "hour";
constexpr char kWindowLimitEntryTimeMinute[] = "minute"; constexpr char kWindowLimitEntryTimeMinute[] = "minute";
// Creates a time limit override dictionary used on the Time Limit policy. // Creates a time limit override dictionary used on the Time Limit policy.
base::Value CreateOverride(std::string action, base::Time created_at) { base::Value CreateOverride(std::string action,
base::Time created_at,
base::Optional<base::TimeDelta> duration) {
base::Value time_limit_override(base::Value::Type::DICTIONARY); base::Value time_limit_override(base::Value::Type::DICTIONARY);
time_limit_override.SetKey(kOverrideAction, base::Value(action)); time_limit_override.SetKey(kOverrideAction, base::Value(action));
time_limit_override.SetKey(kOverrideActionCreatedAt, time_limit_override.SetKey(kOverrideActionCreatedAt,
base::Value(CreatePolicyTimestamp(created_at))); base::Value(CreatePolicyTimestamp(created_at)));
if (duration) {
base::Value action_specific_data(base::Value::Type::DICTIONARY);
action_specific_data.SetKey(kOverrideActionDuration,
base::Value(duration.value().InMinutes()));
time_limit_override.SetKey(kOverrideActionSpecificData,
std::move(action_specific_data));
}
return time_limit_override; return time_limit_override;
} }
...@@ -171,7 +187,21 @@ void AddOverride(base::DictionaryValue* policy, ...@@ -171,7 +187,21 @@ void AddOverride(base::DictionaryValue* policy,
policy->SetKey(kOverrides, base::Value(base::Value::Type::LIST)); policy->SetKey(kOverrides, base::Value(base::Value::Type::LIST));
} }
overrides->GetList().push_back(CreateOverride(action, created_at)); overrides->GetList().push_back(
CreateOverride(action, created_at, base::nullopt));
}
void AddOverrideWithDuration(base::DictionaryValue* policy,
std::string action,
base::Time created_at,
base::TimeDelta duration) {
base::Value* overrides = policy->FindKey(kOverrides);
if (!overrides) {
overrides =
policy->SetKey(kOverrides, base::Value(base::Value::Type::LIST));
}
overrides->GetList().push_back(CreateOverride(action, created_at, duration));
} }
std::string PolicyToString(const base::DictionaryValue* policy) { std::string PolicyToString(const base::DictionaryValue* policy) {
...@@ -181,4 +211,4 @@ std::string PolicyToString(const base::DictionaryValue* policy) { ...@@ -181,4 +211,4 @@ std::string PolicyToString(const base::DictionaryValue* policy) {
} }
} // namespace time_limit_test_utils } // namespace time_limit_test_utils
} // namespace chromeos } // namespace chromeos
\ No newline at end of file
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
// //
// Helper functions to create and modify Usage Time Limit policies. // Helper functions to create and modify Usage Time Limit policies.
#ifndef CHROME_BROWSER_CHROMEOS_CHILD_ACCOUNTS_TIME_LIMIT_TEST_HELPER_H_ #ifndef CHROME_BROWSER_CHROMEOS_CHILD_ACCOUNTS_TIME_LIMIT_TEST_UTILS_H_
#define CHROME_BROWSER_CHROMEOS_CHILD_ACCOUNTS_TIME_LIMIT_TEST_HELPER_H_ #define CHROME_BROWSER_CHROMEOS_CHILD_ACCOUNTS_TIME_LIMIT_TEST_UTILS_H_
#include <memory> #include <memory>
#include <string> #include <string>
...@@ -79,10 +79,17 @@ void AddOverride(base::DictionaryValue* policy, ...@@ -79,10 +79,17 @@ void AddOverride(base::DictionaryValue* policy,
std::string action, std::string action,
base::Time created_at); base::Time created_at);
// Adds a time limit override with duration dictionary to the provided
// Time Limit policy.
void AddOverrideWithDuration(base::DictionaryValue* policy,
std::string action,
base::Time created_at,
base::TimeDelta duration);
// Converts the Time Limit policy to a string. // Converts the Time Limit policy to a string.
std::string PolicyToString(const base::DictionaryValue* policy); std::string PolicyToString(const base::DictionaryValue* policy);
} // namespace time_limit_test_utils } // namespace time_limit_test_utils
} // namespace chromeos } // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_CHILD_ACCOUNTS_TIME_LIMIT_TEST_HELPER_H_ #endif // CHROME_BROWSER_CHROMEOS_CHILD_ACCOUNTS_TIME_LIMIT_TEST_UTILS_H_
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment