| OLD | NEW |
| 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 "chrome/browser/chromeos/system/automatic_reboot_manager.h" | 5 #include "chrome/browser/chromeos/system/automatic_reboot_manager.h" |
| 6 | 6 |
| 7 #include <fcntl.h> | 7 #include <fcntl.h> |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 #include <sys/stat.h> | 9 #include <sys/stat.h> |
| 10 #include <sys/types.h> | 10 #include <sys/types.h> |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 193 worker_pool->GetNamedSequenceToken(kSequenceToken), | 193 worker_pool->GetNamedSequenceToken(kSequenceToken), |
| 194 FROM_HERE, | 194 FROM_HERE, |
| 195 base::Bind(&GetSystemEventTimes, | 195 base::Bind(&GetSystemEventTimes, |
| 196 base::ThreadTaskRunnerHandle::Get(), | 196 base::ThreadTaskRunnerHandle::Get(), |
| 197 base::Bind(&AutomaticRebootManager::Init, | 197 base::Bind(&AutomaticRebootManager::Init, |
| 198 weak_ptr_factory_.GetWeakPtr())), | 198 weak_ptr_factory_.GetWeakPtr())), |
| 199 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN); | 199 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN); |
| 200 } | 200 } |
| 201 | 201 |
| 202 AutomaticRebootManager::~AutomaticRebootManager() { | 202 AutomaticRebootManager::~AutomaticRebootManager() { |
| 203 FOR_EACH_OBSERVER(AutomaticRebootManagerObserver, | 203 for (auto& observer : observers_) |
| 204 observers_, | 204 observer.WillDestroyAutomaticRebootManager(); |
| 205 WillDestroyAutomaticRebootManager()); | |
| 206 | 205 |
| 207 DBusThreadManager* dbus_thread_manager = DBusThreadManager::Get(); | 206 DBusThreadManager* dbus_thread_manager = DBusThreadManager::Get(); |
| 208 dbus_thread_manager->GetPowerManagerClient()->RemoveObserver(this); | 207 dbus_thread_manager->GetPowerManagerClient()->RemoveObserver(this); |
| 209 dbus_thread_manager->GetUpdateEngineClient()->RemoveObserver(this); | 208 dbus_thread_manager->GetUpdateEngineClient()->RemoveObserver(this); |
| 210 if (ui::UserActivityDetector::Get()) | 209 if (ui::UserActivityDetector::Get()) |
| 211 ui::UserActivityDetector::Get()->RemoveObserver(this); | 210 ui::UserActivityDetector::Get()->RemoveObserver(this); |
| 212 } | 211 } |
| 213 | 212 |
| 214 void AutomaticRebootManager::AddObserver( | 213 void AutomaticRebootManager::AddObserver( |
| 215 AutomaticRebootManagerObserver* observer) { | 214 AutomaticRebootManagerObserver* observer) { |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 377 grace_end_timer_->Start(FROM_HERE, | 376 grace_end_timer_->Start(FROM_HERE, |
| 378 std::max(grace_end_time - now, kZeroTimeDelta), | 377 std::max(grace_end_time - now, kZeroTimeDelta), |
| 379 base::Bind(&AutomaticRebootManager::Reboot, | 378 base::Bind(&AutomaticRebootManager::Reboot, |
| 380 base::Unretained(this))); | 379 base::Unretained(this))); |
| 381 } | 380 } |
| 382 | 381 |
| 383 void AutomaticRebootManager::RequestReboot() { | 382 void AutomaticRebootManager::RequestReboot() { |
| 384 reboot_requested_ = true; | 383 reboot_requested_ = true; |
| 385 DCHECK_NE(AutomaticRebootManagerObserver::REBOOT_REASON_UNKNOWN, | 384 DCHECK_NE(AutomaticRebootManagerObserver::REBOOT_REASON_UNKNOWN, |
| 386 reboot_reason_); | 385 reboot_reason_); |
| 387 FOR_EACH_OBSERVER(AutomaticRebootManagerObserver, | 386 for (auto& observer : observers_) |
| 388 observers_, | 387 observer.OnRebootRequested(reboot_reason_); |
| 389 OnRebootRequested(reboot_reason_)); | |
| 390 MaybeReboot(false); | 388 MaybeReboot(false); |
| 391 } | 389 } |
| 392 | 390 |
| 393 void AutomaticRebootManager::MaybeReboot(bool ignore_session) { | 391 void AutomaticRebootManager::MaybeReboot(bool ignore_session) { |
| 394 // Do not reboot if any of the following applies: | 392 // Do not reboot if any of the following applies: |
| 395 // * No reboot has been requested. | 393 // * No reboot has been requested. |
| 396 // * A user is interacting with the login screen. | 394 // * A user is interacting with the login screen. |
| 397 // * A session is in progress and |ignore_session| is not set. | 395 // * A session is in progress and |ignore_session| is not set. |
| 398 if (!reboot_requested_ || | 396 if (!reboot_requested_ || |
| 399 (login_screen_idle_timer_ && login_screen_idle_timer_->IsRunning()) || | 397 (login_screen_idle_timer_ && login_screen_idle_timer_->IsRunning()) || |
| (...skipping 12 matching lines...) Expand all Loading... |
| 412 } | 410 } |
| 413 | 411 |
| 414 login_screen_idle_timer_.reset(); | 412 login_screen_idle_timer_.reset(); |
| 415 grace_start_timer_.reset(); | 413 grace_start_timer_.reset(); |
| 416 grace_end_timer_.reset(); | 414 grace_end_timer_.reset(); |
| 417 DBusThreadManager::Get()->GetPowerManagerClient()->RequestRestart(); | 415 DBusThreadManager::Get()->GetPowerManagerClient()->RequestRestart(); |
| 418 } | 416 } |
| 419 | 417 |
| 420 } // namespace system | 418 } // namespace system |
| 421 } // namespace chromeos | 419 } // namespace chromeos |
| OLD | NEW |