Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(62)

Unified Diff: chromeos/dbus/power_policy_controller.cc

Issue 14134004: chromeos: Move default power management policy into Chrome. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: move pref-watching back out of PowerPolicyController Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chromeos/dbus/power_policy_controller.cc
diff --git a/chromeos/dbus/power_policy_controller.cc b/chromeos/dbus/power_policy_controller.cc
index 25849106a2e5944f54c80a4272512c36511a67f6..110bf3310037b8c7f1f5414dbb19aafb3a370f20 100644
--- a/chromeos/dbus/power_policy_controller.cc
+++ b/chromeos/dbus/power_policy_controller.cc
@@ -12,64 +12,6 @@ namespace chromeos {
namespace {
-// If |pref|, a PrefService::Preference containing an integer, has been
-// explicitly set to 0 or a positive value, assigns it to |proto_field|, a
-// int32 field in |proto|, a google::protobuf::MessageLite*. If |proto|
-// was updated, |got_prefs|, a bool*, is set to true; otherwise it is left
-// unchanged.
-#define SET_DELAY_FROM_PREF(pref, proto_field, proto, got_prefs) \
- { \
- int value = GetIntPrefValue(pref); \
- if (value >= 0) { \
- (proto)->set_##proto_field(value); \
- *got_prefs = true; \
- } \
- }
-
-// Similar to SET_DELAY_FROM_PREF() but sets a
-// power_manager::PowerManagementPolicy_Action field instead.
-#define SET_ACTION_FROM_PREF(pref, proto_field, proto, got_prefs) \
- { \
- int value = GetIntPrefValue(pref); \
- if (value >= 0) { \
- (proto)->set_##proto_field( \
- static_cast<power_manager::PowerManagementPolicy_Action>(value)); \
- *got_prefs = true; \
- } \
- }
-
-// If |pref|, a PrefService::Preference containing a bool, has been set,
-// assigns it to |proto_field|, a bool field in |proto|, a
-// google::protobuf::MessageLite*. If |proto| was updated, |got_prefs|, a
-// bool*, is set to true; otherwise it is left unchanged.
-#define SET_BOOL_FROM_PREF(pref, proto_field, proto, got_prefs) \
- if (!pref.IsDefaultValue()) { \
- bool value = false; \
- if (pref.GetValue()->GetAsBoolean(&value)) { \
- (proto)->set_##proto_field(value); \
- *got_prefs = true; \
- } else { \
- LOG(DFATAL) << pref.name() << " pref has non-boolean value"; \
- } \
- }
-
-// Returns a zero or positive integer value from |pref|. Returns -1 if the
-// pref is unset and logs an error if it's set to a negative value.
-int GetIntPrefValue(const PrefService::Preference& pref) {
- if (pref.IsDefaultValue())
- return -1;
-
- int value = -1;
- if (!pref.GetValue()->GetAsInteger(&value)) {
- LOG(DFATAL) << pref.name() << " pref has non-integer value";
- return -1;
- }
-
- if (value < 0)
- LOG(WARNING) << pref.name() << " pref has negative value";
- return value;
-}
-
// Returns the power_manager::PowerManagementPolicy_Action value
// corresponding to |action|.
power_manager::PowerManagementPolicy_Action GetProtoAction(
@@ -99,7 +41,7 @@ PowerPolicyController::PowerPolicyController(DBusThreadManager* manager,
next_block_id_(1) {
manager_->AddObserver(this);
client_->AddObserver(this);
- SendEmptyPolicy();
+ SendCurrentPolicy();
}
PowerPolicyController::~PowerPolicyController() {
@@ -113,70 +55,45 @@ PowerPolicyController::~PowerPolicyController() {
manager_ = NULL;
}
-void PowerPolicyController::UpdatePolicyFromPrefs(
- const PrefService::Preference& ac_screen_dim_delay_ms_pref,
- const PrefService::Preference& ac_screen_off_delay_ms_pref,
- const PrefService::Preference& ac_screen_lock_delay_ms_pref,
- const PrefService::Preference& ac_idle_warning_delay_ms_pref,
- const PrefService::Preference& ac_idle_delay_ms_pref,
- const PrefService::Preference& battery_screen_dim_delay_ms_pref,
- const PrefService::Preference& battery_screen_off_delay_ms_pref,
- const PrefService::Preference& battery_screen_lock_delay_ms_pref,
- const PrefService::Preference& battery_idle_warning_delay_ms_pref,
- const PrefService::Preference& battery_idle_delay_ms_pref,
- const PrefService::Preference& idle_action_pref,
- const PrefService::Preference& lid_closed_action_pref,
- const PrefService::Preference& use_audio_activity_pref,
- const PrefService::Preference& use_video_activity_pref,
- const PrefService::Preference& presentation_idle_delay_factor_pref) {
+void PowerPolicyController::ApplyPrefs(const PrefValues& values) {
prefs_policy_.Clear();
- bool got_prefs = false;
power_manager::PowerManagementPolicy::Delays* delays =
prefs_policy_.mutable_ac_delays();
- SET_DELAY_FROM_PREF(
- ac_screen_dim_delay_ms_pref, screen_dim_ms, delays, &got_prefs);
- SET_DELAY_FROM_PREF(
- ac_screen_off_delay_ms_pref, screen_off_ms, delays, &got_prefs);
- SET_DELAY_FROM_PREF(
- ac_screen_lock_delay_ms_pref, screen_lock_ms, delays, &got_prefs);
- SET_DELAY_FROM_PREF(
- ac_idle_warning_delay_ms_pref, idle_warning_ms, delays, &got_prefs);
- SET_DELAY_FROM_PREF(ac_idle_delay_ms_pref, idle_ms, delays, &got_prefs);
+ delays->set_screen_dim_ms(values.ac_screen_dim_delay_ms);
+ delays->set_screen_off_ms(values.ac_screen_off_delay_ms);
+ delays->set_screen_lock_ms(values.ac_screen_lock_delay_ms);
+ delays->set_idle_warning_ms(values.ac_idle_warning_delay_ms);
+ delays->set_idle_ms(values.ac_idle_delay_ms);
+
+ // If screen-locking is enabled, ensure that the screen is locked when
+ // it's turned off due to user inactivity.
+ if (values.enable_screen_lock && delays->screen_off_ms() > 0 &&
+ (delays->screen_lock_ms() <= 0 ||
+ delays->screen_off_ms() < delays->screen_lock_ms())) {
+ delays->set_screen_lock_ms(delays->screen_off_ms());
+ }
delays = prefs_policy_.mutable_battery_delays();
- SET_DELAY_FROM_PREF(
- battery_screen_dim_delay_ms_pref, screen_dim_ms, delays, &got_prefs);
- SET_DELAY_FROM_PREF(
- battery_screen_off_delay_ms_pref, screen_off_ms, delays, &got_prefs);
- SET_DELAY_FROM_PREF(
- battery_screen_lock_delay_ms_pref, screen_lock_ms, delays, &got_prefs);
- SET_DELAY_FROM_PREF(
- battery_idle_warning_delay_ms_pref, idle_warning_ms, delays, &got_prefs);
- SET_DELAY_FROM_PREF(battery_idle_delay_ms_pref, idle_ms, delays, &got_prefs);
-
- SET_ACTION_FROM_PREF(
- idle_action_pref, idle_action, &prefs_policy_, &got_prefs);
- SET_ACTION_FROM_PREF(
- lid_closed_action_pref, lid_closed_action, &prefs_policy_, &got_prefs);
-
- SET_BOOL_FROM_PREF(
- use_audio_activity_pref, use_audio_activity, &prefs_policy_, &got_prefs);
- SET_BOOL_FROM_PREF(
- use_video_activity_pref, use_video_activity, &prefs_policy_, &got_prefs);
-
- if (!presentation_idle_delay_factor_pref.IsDefaultValue()) {
- double value = 0.0;
- if (presentation_idle_delay_factor_pref.GetValue()->GetAsDouble(&value)) {
- prefs_policy_.set_presentation_idle_delay_factor(value);
- got_prefs = true;
- } else {
- LOG(DFATAL) << presentation_idle_delay_factor_pref.name()
- << " pref has non-double value";
- }
+ delays->set_screen_dim_ms(values.battery_screen_dim_delay_ms);
+ delays->set_screen_off_ms(values.battery_screen_off_delay_ms);
+ delays->set_screen_lock_ms(values.battery_screen_lock_delay_ms);
+ delays->set_idle_warning_ms(values.battery_idle_warning_delay_ms);
+ delays->set_idle_ms(values.battery_idle_delay_ms);
+ if (values.enable_screen_lock && delays->screen_off_ms() > 0 &&
+ (delays->screen_lock_ms() <= 0 ||
+ delays->screen_off_ms() < delays->screen_lock_ms())) {
+ delays->set_screen_lock_ms(delays->screen_off_ms());
}
- prefs_were_set_ = got_prefs;
+ prefs_policy_.set_idle_action(GetProtoAction(values.idle_action));
+ prefs_policy_.set_lid_closed_action(GetProtoAction(values.lid_closed_action));
+ prefs_policy_.set_use_audio_activity(values.use_audio_activity);
+ prefs_policy_.set_use_video_activity(values.use_video_activity);
+ prefs_policy_.set_presentation_idle_delay_factor(
+ values.presentation_idle_delay_factor);
+
+ prefs_were_set_ = true;
SendCurrentPolicy();
}

Powered by Google App Engine
This is Rietveld 408576698