1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/chromeos/settings/shutdown_policy_handler.h"
8 #include "base/bind_helpers.h"
9 #include "base/run_loop.h"
10 #include "chrome/browser/chromeos/settings/scoped_cros_settings_test_helper.h"
11 #include "chromeos/dbus/dbus_thread_manager.h"
12 #include "chromeos/settings/cros_settings_names.h"
13 #include "content/public/test/test_browser_thread_bundle.h"
14 #include "testing/gtest/include/gtest/gtest.h"
18 class ShutdownPolicyHandlerTest
: public testing::Test
,
19 public ShutdownPolicyHandler::Delegate
{
21 void ResultCallback(bool reboot_on_shutdown
) {
22 reboot_on_shutdown_
= reboot_on_shutdown
;
23 callback_called_
= true;
27 ShutdownPolicyHandlerTest()
28 : callback_called_(false),
29 reboot_on_shutdown_(false),
30 delegate_invocations_count_(0) {}
33 void SetUp() override
{
34 testing::Test::SetUp();
35 DBusThreadManager::Initialize();
36 settings_helper_
.ReplaceProvider(kRebootOnShutdown
);
39 void TearDown() override
{ DBusThreadManager::Shutdown(); }
41 void SetRebootOnShutdown(bool reboot_on_shutdown
) {
42 settings_helper_
.SetBoolean(kRebootOnShutdown
, reboot_on_shutdown
);
43 base::RunLoop().RunUntilIdle();
46 // ShutdownPolicyHandler::Delegate:
47 void OnShutdownPolicyChanged(bool reboot_on_shutdown
) override
{
48 reboot_on_shutdown_
= reboot_on_shutdown
;
49 delegate_invocations_count_
++;
53 content::TestBrowserThreadBundle thread_bundle_
;
54 ScopedCrosSettingsTestHelper settings_helper_
;
55 bool callback_called_
;
56 bool reboot_on_shutdown_
;
57 int delegate_invocations_count_
;
60 TEST_F(ShutdownPolicyHandlerTest
, RetrieveTrustedDevicePolicies
) {
61 ShutdownPolicyHandler
shutdown_policy_observer(CrosSettings::Get(), this);
62 base::RunLoop().RunUntilIdle();
63 EXPECT_EQ(0, delegate_invocations_count_
);
65 SetRebootOnShutdown(true);
66 base::RunLoop().RunUntilIdle();
67 EXPECT_EQ(1, delegate_invocations_count_
);
68 EXPECT_TRUE(reboot_on_shutdown_
);
70 SetRebootOnShutdown(false);
71 base::RunLoop().RunUntilIdle();
72 EXPECT_EQ(2, delegate_invocations_count_
);
73 EXPECT_FALSE(reboot_on_shutdown_
);
75 shutdown_policy_observer
.Shutdown();
77 SetRebootOnShutdown(true);
78 base::RunLoop().RunUntilIdle();
79 EXPECT_EQ(2, delegate_invocations_count_
);
80 EXPECT_FALSE(reboot_on_shutdown_
);
83 TEST_F(ShutdownPolicyHandlerTest
, CheckIfRebootOnShutdown
) {
84 ShutdownPolicyHandler
shutdown_policy_observer(CrosSettings::Get(), this);
85 base::RunLoop().RunUntilIdle();
88 SetRebootOnShutdown(true);
89 callback_called_
= false;
90 shutdown_policy_observer
.CheckIfRebootOnShutdown(
91 base::Bind(&ShutdownPolicyHandlerTest::ResultCallback
,
92 base::Unretained(this)));
93 base::RunLoop().RunUntilIdle();
94 EXPECT_TRUE(callback_called_
);
95 EXPECT_TRUE(reboot_on_shutdown_
);
97 SetRebootOnShutdown(false);
98 callback_called_
= false;
99 shutdown_policy_observer
.CheckIfRebootOnShutdown(
100 base::Bind(&ShutdownPolicyHandlerTest::ResultCallback
,
101 base::Unretained(this)));
102 base::RunLoop().RunUntilIdle();
103 EXPECT_TRUE(callback_called_
);
104 EXPECT_FALSE(reboot_on_shutdown_
);
107 } // namespace chromeos