Commit 1b67153c authored by yilkal's avatar yilkal Committed by Commit Bot

Propagate whitelist application information.

Sets the application state to kAlwaysAvailable if the application
is whitelisted.

Bug: 1034551, 1022093
Change-Id: I51f0cc9ff37eda497a4916126192f8a46597edbd
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2047448
Commit-Queue: Yilkal Abe <yilkal@chromium.org>
Reviewed-by: default avatarAga Wronska <agawronska@chromium.org>
Cr-Commit-Position: refs/heads/master@{#740379}
parent 9e50d0ad
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "base/time/default_tick_clock.h" #include "base/time/default_tick_clock.h"
#include "base/timer/timer.h" #include "base/timer/timer.h"
#include "chrome/browser/chromeos/child_accounts/time_limits/app_time_limit_utils.h" #include "chrome/browser/chromeos/child_accounts/time_limits/app_time_limit_utils.h"
#include "chrome/browser/chromeos/child_accounts/time_limits/app_time_limits_whitelist_policy_wrapper.h"
#include "chrome/browser/chromeos/child_accounts/time_limits/app_time_notification_delegate.h" #include "chrome/browser/chromeos/child_accounts/time_limits/app_time_notification_delegate.h"
#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/browser_list.h"
...@@ -397,6 +398,24 @@ void AppActivityRegistry::OnChromeAppActivityChanged( ...@@ -397,6 +398,24 @@ void AppActivityRegistry::OnChromeAppActivityChanged(
SetAppInactive(chrome_app_id, timestamp); SetAppInactive(chrome_app_id, timestamp);
} }
void AppActivityRegistry::OnTimeLimitWhitelistChanged(
const AppTimeLimitsWhitelistPolicyWrapper& wrapper) {
std::vector<AppId> whitelisted_apps = wrapper.GetWhitelistAppList();
for (const AppId& app : whitelisted_apps) {
if (!base::Contains(activity_registry_, app))
continue;
if (GetAppState(app) == AppState::kAlwaysAvailable)
continue;
base::Optional<AppLimit>& limit = activity_registry_.at(app).limit;
if (limit.has_value())
limit = base::nullopt;
SetAppState(app, AppState::kAlwaysAvailable);
}
}
void AppActivityRegistry::OnResetTimeReached(base::Time timestamp) { void AppActivityRegistry::OnResetTimeReached(base::Time timestamp) {
for (std::pair<const AppId, AppDetails>& info : activity_registry_) { for (std::pair<const AppId, AppDetails>& info : activity_registry_) {
const AppId& app = info.first; const AppId& app = info.first;
......
...@@ -31,6 +31,7 @@ class OneShotTimer; ...@@ -31,6 +31,7 @@ class OneShotTimer;
namespace chromeos { namespace chromeos {
namespace app_time { namespace app_time {
class AppTimeLimitsWhitelistPolicyWrapper;
class AppTimeNotificationDelegate; class AppTimeNotificationDelegate;
// Keeps track of app activity and time limits information. // Keeps track of app activity and time limits information.
...@@ -132,6 +133,10 @@ class AppActivityRegistry : public AppServiceWrapper::EventListener { ...@@ -132,6 +133,10 @@ class AppActivityRegistry : public AppServiceWrapper::EventListener {
void OnChromeAppActivityChanged(ChromeAppActivityState state, void OnChromeAppActivityChanged(ChromeAppActivityState state,
base::Time timestamp); base::Time timestamp);
// Whitelisted applications changed. Called by AppTimeController.
void OnTimeLimitWhitelistChanged(
const AppTimeLimitsWhitelistPolicyWrapper& wrapper);
private: private:
// Bundles detailed data stored for a specific app. // Bundles detailed data stored for a specific app.
struct AppDetails { struct AppDetails {
......
...@@ -334,7 +334,10 @@ void AppTimeController::TimeLimitsWhitelistPolicyUpdated( ...@@ -334,7 +334,10 @@ void AppTimeController::TimeLimitsWhitelistPolicyUpdated(
// Figure out a way to avoid cloning // Figure out a way to avoid cloning
AppTimeLimitsWhitelistPolicyWrapper wrapper(policy); AppTimeLimitsWhitelistPolicyWrapper wrapper(policy);
web_time_enforcer_->OnTimeLimitWhitelistChanged(wrapper); app_registry_->OnTimeLimitWhitelistChanged(wrapper);
if (web_time_enforcer_)
web_time_enforcer_->OnTimeLimitWhitelistChanged(wrapper);
} }
void AppTimeController::ShowAppTimeLimitNotification( void AppTimeController::ShowAppTimeLimitNotification(
......
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