Only grant permissions to new extensions from sync if they have the expected version
[chromium-blink-merge.git] / chrome / browser / chromeos / settings / shutdown_policy_handler_unittest.cc
blob8b9669f95fec6d5c44602f3dd308b088ed05e8a6
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"
7 #include "base/bind.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"
16 namespace chromeos {
18 class ShutdownPolicyHandlerTest : public testing::Test,
19 public ShutdownPolicyHandler::Delegate {
20 public:
21 void ResultCallback(bool reboot_on_shutdown) {
22 reboot_on_shutdown_ = reboot_on_shutdown;
23 callback_called_ = true;
26 protected:
27 ShutdownPolicyHandlerTest()
28 : callback_called_(false),
29 reboot_on_shutdown_(false),
30 delegate_invocations_count_(0) {}
32 // testing::Test:
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_++;
52 protected:
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();
87 // Allow shutdown.
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_);
96 // Forbid 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