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

Side by Side Diff: chromeos/dbus/power_policy_controller.cc

Issue 2912763003: cros: Prevent shut down on lid-close during migration. (Closed)
Patch Set: revert unrelated change Created 3 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chromeos/dbus/power_policy_controller.h" 5 #include "chromeos/dbus/power_policy_controller.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 SendCurrentPolicy(); 269 SendCurrentPolicy();
270 } 270 }
271 271
272 void PowerPolicyController::NotifyChromeIsExiting() { 272 void PowerPolicyController::NotifyChromeIsExiting() {
273 if (chrome_is_exiting_) 273 if (chrome_is_exiting_)
274 return; 274 return;
275 chrome_is_exiting_ = true; 275 chrome_is_exiting_ = true;
276 SendCurrentPolicy(); 276 SendCurrentPolicy();
277 } 277 }
278 278
279 void PowerPolicyController::SetEncryptionMigrationActive(bool active) {
280 if (encryption_migration_active_ == active)
281 return;
282
283 encryption_migration_active_ = active;
284 SendCurrentPolicy();
285 }
286
279 PowerPolicyController::PowerPolicyController(PowerManagerClient* client) 287 PowerPolicyController::PowerPolicyController(PowerManagerClient* client)
280 : client_(client), 288 : client_(client),
281 prefs_were_set_(false), 289 prefs_were_set_(false),
282 honor_screen_wake_locks_(true), 290 honor_screen_wake_locks_(true),
283 next_wake_lock_id_(1), 291 next_wake_lock_id_(1),
284 chrome_is_exiting_(false) { 292 chrome_is_exiting_(false),
293 encryption_migration_active_(false) {
285 DCHECK(client_); 294 DCHECK(client_);
286 client_->AddObserver(this); 295 client_->AddObserver(this);
287 } 296 }
288 297
289 PowerPolicyController::~PowerPolicyController() { 298 PowerPolicyController::~PowerPolicyController() {
290 client_->RemoveObserver(this); 299 client_->RemoveObserver(this);
291 } 300 }
292 301
293 PowerPolicyController::WakeLock::WakeLock(Type type, 302 PowerPolicyController::WakeLock::WakeLock(Type type,
294 WakeLockReason reason, 303 WakeLockReason reason,
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 policy.set_ac_idle_action( 369 policy.set_ac_idle_action(
361 power_manager::PowerManagementPolicy_Action_DO_NOTHING); 370 power_manager::PowerManagementPolicy_Action_DO_NOTHING);
362 } 371 }
363 if (!policy.has_battery_idle_action() || policy.battery_idle_action() == 372 if (!policy.has_battery_idle_action() || policy.battery_idle_action() ==
364 power_manager::PowerManagementPolicy_Action_SUSPEND) { 373 power_manager::PowerManagementPolicy_Action_SUSPEND) {
365 policy.set_battery_idle_action( 374 policy.set_battery_idle_action(
366 power_manager::PowerManagementPolicy_Action_DO_NOTHING); 375 power_manager::PowerManagementPolicy_Action_DO_NOTHING);
367 } 376 }
368 } 377 }
369 378
379 if (encryption_migration_active_ &&
380 policy.lid_closed_action() !=
381 power_manager::PowerManagementPolicy_Action_DO_NOTHING) {
382 policy.set_lid_closed_action(
383 power_manager::PowerManagementPolicy_Action_SUSPEND);
384 causes +=
385 std::string((causes.empty() ? "" : ", ")) + "encryption migration";
386 }
387
370 // To avoid a race in the case where the user asks Chrome to sign out 388 // To avoid a race in the case where the user asks Chrome to sign out
371 // and then immediately closes the lid, override the lid-closed action 389 // and then immediately closes the lid, override the lid-closed action
372 // so the system will stay awake while Chrome is exiting. When Chrome 390 // so the system will stay awake while Chrome is exiting. When Chrome
373 // restarts to display the login screen, it will send an updated 391 // restarts to display the login screen, it will send an updated
374 // policy that powerd can act on. 392 // policy that powerd can act on.
375 if (chrome_is_exiting_ && 393 if (chrome_is_exiting_ &&
376 (!policy.has_lid_closed_action() || 394 (!policy.has_lid_closed_action() ||
377 policy.lid_closed_action() == 395 policy.lid_closed_action() ==
378 power_manager::PowerManagementPolicy_Action_SUSPEND || 396 power_manager::PowerManagementPolicy_Action_SUSPEND ||
379 policy.lid_closed_action() == 397 policy.lid_closed_action() ==
380 power_manager::PowerManagementPolicy_Action_SHUT_DOWN)) { 398 power_manager::PowerManagementPolicy_Action_SHUT_DOWN)) {
381 policy.set_lid_closed_action( 399 policy.set_lid_closed_action(
382 power_manager::PowerManagementPolicy_Action_DO_NOTHING); 400 power_manager::PowerManagementPolicy_Action_DO_NOTHING);
383 } 401 }
384 402
385 if (!causes.empty()) 403 if (!causes.empty())
386 policy.set_reason(causes); 404 policy.set_reason(causes);
387 client_->SetPolicy(policy); 405 client_->SetPolicy(policy);
388 } 406 }
389 407
390 } // namespace chromeos 408 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/dbus/power_policy_controller.h ('k') | chromeos/dbus/power_policy_controller_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698