| Index: chrome/browser/chromeos/app_mode/kiosk_app_update_service_browsertest.cc
|
| diff --git a/chrome/browser/chromeos/app_mode/kiosk_app_update_service_browsertest.cc b/chrome/browser/chromeos/app_mode/kiosk_app_update_service_browsertest.cc
|
| index 970eeeb48c37a5ca48125cc766bd8576fa2060a8..8e06a9a2e512cf35f53365d9e96d65e49382dc2a 100644
|
| --- a/chrome/browser/chromeos/app_mode/kiosk_app_update_service_browsertest.cc
|
| +++ b/chrome/browser/chromeos/app_mode/kiosk_app_update_service_browsertest.cc
|
| @@ -14,6 +14,7 @@
|
| #include "base/files/scoped_temp_dir.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/prefs/pref_service.h"
|
| +#include "base/run_loop.h"
|
| #include "base/strings/string_number_conversions.h"
|
| #include "base/test/scoped_path_override.h"
|
| #include "base/threading/sequenced_worker_pool.h"
|
| @@ -22,6 +23,7 @@
|
| #include "chrome/browser/browser_process.h"
|
| #include "chrome/browser/browser_process_platform_part.h"
|
| #include "chrome/browser/chromeos/system/automatic_reboot_manager.h"
|
| +#include "chrome/browser/chromeos/system/automatic_reboot_manager_observer.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/common/chrome_switches.h"
|
| #include "chrome/common/pref_names.h"
|
| @@ -35,13 +37,19 @@
|
|
|
| namespace chromeos {
|
|
|
| -class KioskAppUpdateServiceTest : public extensions::PlatformAppBrowserTest {
|
| +class KioskAppUpdateServiceTest
|
| + : public extensions::PlatformAppBrowserTest,
|
| + public system::AutomaticRebootManagerObserver {
|
| public:
|
| - KioskAppUpdateServiceTest() : app_(NULL), update_service_(NULL) {}
|
| - virtual ~KioskAppUpdateServiceTest() {}
|
| + KioskAppUpdateServiceTest()
|
| + : app_(NULL),
|
| + update_service_(NULL),
|
| + automatic_reboot_manager_(NULL) {}
|
| +
|
| + ~KioskAppUpdateServiceTest() override {}
|
|
|
| // extensions::PlatformAppBrowserTest overrides:
|
| - virtual void SetUpOnMainThread() override {
|
| + void SetUpOnMainThread() override {
|
| extensions::PlatformAppBrowserTest::SetUpOnMainThread();
|
|
|
| ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
|
| @@ -65,6 +73,24 @@ class KioskAppUpdateServiceTest : public extensions::PlatformAppBrowserTest {
|
| command->AppendSwitch(switches::kForceAppMode);
|
| command->AppendSwitchASCII(switches::kAppId, app_->id());
|
|
|
| + automatic_reboot_manager_ =
|
| + g_browser_process->platform_part()->automatic_reboot_manager();
|
| + automatic_reboot_manager_->AddObserver(this);
|
| + }
|
| +
|
| + // system::AutomaticRebootManagerObserver:
|
| + void OnRebootRequested(
|
| + system::AutomaticRebootManagerObserver::Reason) override {
|
| + if (run_loop_)
|
| + run_loop_->Quit();
|
| + }
|
| +
|
| + void WillDestroyAutomaticRebootManager() override {
|
| + automatic_reboot_manager_->RemoveObserver(this);
|
| + }
|
| +
|
| + void CreateKioskAppUpdateService() {
|
| + EXPECT_FALSE(update_service_);
|
| update_service_ = KioskAppUpdateServiceFactory::GetForProfile(profile());
|
| update_service_->set_app_id(app_->id());
|
|
|
| @@ -78,8 +104,16 @@ class KioskAppUpdateServiceTest : public extensions::PlatformAppBrowserTest {
|
| void FireUpdatedNeedReboot() {
|
| UpdateEngineClient::Status status;
|
| status.status = UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT;
|
| - g_browser_process->platform_part()->automatic_reboot_manager()->
|
| - UpdateStatusChanged(status);
|
| + run_loop_.reset(new base::RunLoop);
|
| + automatic_reboot_manager_->UpdateStatusChanged(status);
|
| + run_loop_->Run();
|
| + }
|
| +
|
| + void RequestPeriodicReboot() {
|
| + run_loop_.reset(new base::RunLoop);
|
| + g_browser_process->local_state()->SetInteger(
|
| + prefs::kUptimeLimit, base::TimeDelta::FromMinutes(30).InSeconds());
|
| + run_loop_->Run();
|
| }
|
|
|
| private:
|
| @@ -87,30 +121,63 @@ class KioskAppUpdateServiceTest : public extensions::PlatformAppBrowserTest {
|
| scoped_ptr<base::ScopedPathOverride> uptime_file_override_;
|
| const extensions::Extension* app_; // Not owned.
|
| KioskAppUpdateService* update_service_; // Not owned.
|
| + system::AutomaticRebootManager* automatic_reboot_manager_; // Not owned.
|
| + scoped_ptr<base::RunLoop> run_loop_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(KioskAppUpdateServiceTest);
|
| };
|
|
|
| +// Verifies that the app is notified a reboot is required when an app update
|
| +// becomes available.
|
| IN_PROC_BROWSER_TEST_F(KioskAppUpdateServiceTest, AppUpdate) {
|
| - FireAppUpdateAvailable();
|
| + CreateKioskAppUpdateService();
|
|
|
| ExtensionTestMessageListener listener("app_update", false);
|
| + FireAppUpdateAvailable();
|
| listener.WaitUntilSatisfied();
|
| }
|
|
|
| +// Verifies that the app is notified a reboot is required when an OS update is
|
| +// applied while Chrome is running and the policy to reboot after update is
|
| +// enabled.
|
| IN_PROC_BROWSER_TEST_F(KioskAppUpdateServiceTest, OsUpdate) {
|
| + CreateKioskAppUpdateService();
|
| +
|
| + g_browser_process->local_state()->SetBoolean(prefs::kRebootAfterUpdate, true);
|
| + ExtensionTestMessageListener listener("os_update", false);
|
| + FireUpdatedNeedReboot();
|
| + listener.WaitUntilSatisfied();
|
| +}
|
| +
|
| +// Verifies that the app is notified a reboot is required when a periodic reboot
|
| +// is requested while Chrome is running.
|
| +IN_PROC_BROWSER_TEST_F(KioskAppUpdateServiceTest, Periodic) {
|
| + CreateKioskAppUpdateService();
|
| +
|
| + ExtensionTestMessageListener listener("periodic", false);
|
| + RequestPeriodicReboot();
|
| + listener.WaitUntilSatisfied();
|
| +}
|
| +
|
| +// Verifies that the app is notified a reboot is required when an OS update was
|
| +// applied before Chrome was started and the policy to reboot after update is
|
| +// enabled.
|
| +IN_PROC_BROWSER_TEST_F(KioskAppUpdateServiceTest, StartAfterOsUpdate) {
|
| g_browser_process->local_state()->SetBoolean(prefs::kRebootAfterUpdate, true);
|
| FireUpdatedNeedReboot();
|
|
|
| ExtensionTestMessageListener listener("os_update", false);
|
| + CreateKioskAppUpdateService();
|
| listener.WaitUntilSatisfied();
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(KioskAppUpdateServiceTest, Periodic) {
|
| - g_browser_process->local_state()->SetInteger(
|
| - prefs::kUptimeLimit, base::TimeDelta::FromMinutes(30).InSeconds());
|
| +// Verifies that the app is notified a reboot is required when a periodic reboot
|
| +// was requested before Chrome was started.
|
| +IN_PROC_BROWSER_TEST_F(KioskAppUpdateServiceTest, StartAfterPeriodic) {
|
| + RequestPeriodicReboot();
|
|
|
| ExtensionTestMessageListener listener("periodic", false);
|
| + CreateKioskAppUpdateService();
|
| listener.WaitUntilSatisfied();
|
| }
|
|
|
|
|