Commit fbe84306 authored by Jia's avatar Jia Committed by Commit Bot

[PowerML] Add kPowerSmartDimEnabled pref and use it in smart dim model.

This pref will control whether smart dim should be enabled for a user. The
default value is true (i.e. Enabled). The next cl will add policy so that
enterprise users can enforce a different policy.

As this is a power-related pref, it is added to power_prefs[.h|.cc].
However as there is no need to send its value to powerd, it is
intentionally left out of PowerPrefs::UpdatePowerPolicyFromPrefs.

Bug: 862461
Change-Id: Ibaa705362c9951aecae78d9ce28780651067a6ea
Reviewed-on: https://chromium-review.googlesource.com/1166266Reviewed-by: default avatarDan Erat <derat@chromium.org>
Commit-Queue: Jia Meng <jiameng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#581435}
parent 81684566
......@@ -225,6 +225,9 @@ const char kPowerWaitForInitialUserActivity[] =
const char kPowerForceNonzeroBrightnessForUserActivity[] =
"power.force_nonzero_brightness_for_user_activity";
// Boolean controlling whether smart dim model is enabled.
const char kPowerSmartDimEnabled[] = "power.smart_dim_enabled";
// |kShelfAlignment| and |kShelfAutoHideBehavior| have a local variant. The
// local variant is not synced and is used if set. If the local variant is not
// set its value is set from the synced value (once prefs have been
......
......@@ -87,6 +87,7 @@ ASH_PUBLIC_EXPORT extern const char kPowerUserActivityScreenDimDelayFactor[];
ASH_PUBLIC_EXPORT extern const char kPowerWaitForInitialUserActivity[];
ASH_PUBLIC_EXPORT extern const char
kPowerForceNonzeroBrightnessForUserActivity[];
ASH_PUBLIC_EXPORT extern const char kPowerSmartDimEnabled[];
ASH_PUBLIC_EXPORT extern const char kShelfAlignment[];
ASH_PUBLIC_EXPORT extern const char kShelfAlignmentLocal[];
......
......@@ -98,6 +98,8 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry, bool for_test) {
registry->RegisterBooleanPref(
prefs::kPowerForceNonzeroBrightnessForUserActivity, true,
PrefRegistry::PUBLIC);
registry->RegisterBooleanPref(prefs::kPowerSmartDimEnabled, true,
PrefRegistry::PUBLIC);
if (for_test) {
registry->RegisterBooleanPref(prefs::kAllowScreenLock, true,
......@@ -296,6 +298,7 @@ void PowerPrefs::ObservePrefs(PrefService* prefs) {
pref_change_registrar_->Add(
prefs::kPowerForceNonzeroBrightnessForUserActivity, update_callback);
pref_change_registrar_->Add(prefs::kAllowScreenLock, update_callback);
pref_change_registrar_->Add(prefs::kPowerSmartDimEnabled, update_callback);
UpdatePowerPolicyFromPrefs();
}
......
......@@ -264,4 +264,10 @@ TEST_F(PowerPrefsTest, DisabledLockScreen) {
GetCurrentPowerPolicyActions());
}
TEST_F(PowerPrefsTest, SmartDimEnabled) {
PrefService* prefs =
Shell::Get()->session_controller()->GetActivePrefService();
EXPECT_TRUE(prefs->GetBoolean(prefs::kPowerSmartDimEnabled));
}
} // namespace ash
......@@ -6,10 +6,13 @@
#include <cmath>
#include "ash/public/cpp/ash_pref_names.h"
#include "base/metrics/field_trial_params.h"
#include "base/metrics/histogram_macros.h"
#include "base/strings/string_number_conversions.h"
#include "chrome/browser/chromeos/power/ml/real_boot_clock.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/resource_coordinator/tab_metrics_logger.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_list.h"
......@@ -235,7 +238,16 @@ void UserActivityManager::OnIdleEventObserved(
screen_off_occurred_ = false;
screen_lock_occurred_ = false;
ExtractFeatures(activity_data);
if (base::FeatureList::IsEnabled(features::kUserActivityPrediction) &&
// Default is to enable smart dim, unless user profile specifically says
// otherwise.
bool smart_dim_enabled = true;
const Profile* const profile = ProfileManager::GetActiveUserProfile();
if (profile) {
smart_dim_enabled =
profile->GetPrefs()->GetBoolean(ash::prefs::kPowerSmartDimEnabled);
}
if (smart_dim_enabled &&
base::FeatureList::IsEnabled(features::kUserActivityPrediction) &&
smart_dim_model_) {
// Decide whether to defer the imminent screen dim.
UserActivityEvent::ModelPrediction model_prediction =
......
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