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

Side by Side Diff: chrome/browser/chromeos/login/screens/device_disabled_screen_unittest.cc

Issue 692383005: Add DeviceDisablingManager to manage device disabling (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@f_3_425574_disable_header_bar
Patch Set: Add destructor required by clang. Created 6 years, 1 month 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
(Empty)
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.
4
5 #include "chrome/browser/chromeos/login/screens/device_disabled_screen.h"
6
7 #include "base/command_line.h"
8 #include "base/macros.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "base/prefs/scoped_user_pref_update.h"
11 #include "base/prefs/testing_pref_service.h"
12 #include "chrome/browser/browser_process_platform_part.h"
13 #include "chrome/browser/chromeos/login/screens/base_screen_delegate.h"
14 #include "chrome/browser/chromeos/login/screens/mock_device_disabled_screen_acto r.h"
15 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
16 #include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h"
17 #include "chrome/browser/chromeos/policy/server_backed_device_state.h"
18 #include "chrome/browser/chromeos/policy/stub_enterprise_install_attributes.h"
19 #include "chrome/common/pref_names.h"
20 #include "chrome/test/base/testing_browser_process.h"
21 #include "chromeos/chromeos_switches.h"
22 #include "components/policy/core/common/cloud/cloud_policy_constants.h"
23 #include "testing/gmock/include/gmock/gmock.h"
24 #include "testing/gtest/include/gtest/gtest.h"
25
26 using ::testing::_;
27
28 namespace chromeos {
29
30 namespace {
31
32 const char kDisabledMessage[] = "Device disabled.";
33
34 }
35
36 class DeviceDisabledScreenTest : public testing::Test,
37 public BaseScreenDelegate {
38 public:
39 DeviceDisabledScreenTest();
40 ~DeviceDisabledScreenTest() override;
41
42 // testing::Test:
43 void SetUp() override;
44 void TearDown() override;
45
46 // BaseScreenDelegate:
47 MOCK_METHOD1(OnExit, void(ExitCodes));
48 void ShowCurrentScreen() override;
49 ErrorScreen* GetErrorScreen() override;
50 void ShowErrorScreen() override;
51 void HideErrorScreen(BaseScreen* parent_screen) override;
52
53 void SetDeviceDisabled(bool disabled);
54 void SetDeviceMode(policy::DeviceMode device_mode);
55
56 void ExpectScreenToNotShow();
57 void ExpectScreenToShow();
58
59 void TryToShowScreen();
60
61 private:
62 scoped_ptr<DeviceDisabledScreen> screen_;
63 scoped_ptr<MockDeviceDisabledScreenActor> actor_;
64 TestingPrefServiceSimple local_state_;
65 policy::ScopedStubEnterpriseInstallAttributes install_attributes_;
66
67 DISALLOW_COPY_AND_ASSIGN(DeviceDisabledScreenTest);
68 };
69
70 DeviceDisabledScreenTest::DeviceDisabledScreenTest()
71 : install_attributes_("", "", "", policy::DEVICE_MODE_NOT_SET) {
72 }
73
74 DeviceDisabledScreenTest::~DeviceDisabledScreenTest() {
75 }
76
77 void DeviceDisabledScreenTest::SetUp() {
78 TestingBrowserProcess::GetGlobal()->SetLocalState(&local_state_);
79 policy::DeviceCloudPolicyManagerChromeOS::RegisterPrefs(
80 local_state_.registry());
81
82 actor_.reset(new MockDeviceDisabledScreenActor);
83 screen_.reset(new DeviceDisabledScreen(this, actor_.get()));
84 }
85
86 void DeviceDisabledScreenTest::TearDown() {
87 TestingBrowserProcess::GetGlobal()->SetLocalState(nullptr);
88 }
89
90 void DeviceDisabledScreenTest::ShowCurrentScreen() {
91 }
92
93 ErrorScreen* DeviceDisabledScreenTest::GetErrorScreen() {
94 return nullptr;
95 }
96
97 void DeviceDisabledScreenTest::ShowErrorScreen() {
98 }
99
100 void DeviceDisabledScreenTest::HideErrorScreen(BaseScreen* parent_screen) {
101 }
102
103 void DeviceDisabledScreenTest::SetDeviceDisabled(bool disabled) {
104 DictionaryPrefUpdate dict(&local_state_, prefs::kServerBackedDeviceState);
105 if (disabled) {
106 dict->SetString(policy::kDeviceStateRestoreMode,
107 policy::kDeviceStateRestoreModeDisabled);
108 } else {
109 dict->Remove(policy::kDeviceStateRestoreMode, nullptr);
110 }
111 dict->SetString(policy::kDeviceStateDisabledMessage, kDisabledMessage);
112 }
113
114 void DeviceDisabledScreenTest::SetDeviceMode(policy::DeviceMode device_mode) {
115 reinterpret_cast<policy::StubEnterpriseInstallAttributes*>(
116 TestingBrowserProcess::GetGlobal()->platform_part()->
117 browser_policy_connector_chromeos()->GetInstallAttributes())->
118 SetMode(device_mode);
119 }
120
121 void DeviceDisabledScreenTest::ExpectScreenToNotShow() {
122 EXPECT_CALL(*actor_, Show(_)).Times(0);
123 EXPECT_CALL(*this, OnExit(BaseScreenDelegate::DEVICE_NOT_DISABLED)).Times(1);
124 }
125
126 void DeviceDisabledScreenTest::ExpectScreenToShow() {
127 EXPECT_CALL(*actor_, Show(kDisabledMessage)).Times(1);
128 EXPECT_CALL(*this, OnExit(BaseScreenDelegate::DEVICE_NOT_DISABLED)).Times(0);
129 }
130
131 void DeviceDisabledScreenTest::TryToShowScreen() {
132 screen_->Show();
133 }
134
135 // Verifies that the device disabled screen is not shown by default.
136 TEST_F(DeviceDisabledScreenTest, DoNotShowByDefault) {
137 ExpectScreenToNotShow();
138 TryToShowScreen();
139 }
140
141 // Verifies that the device disabled screen is not shown when the device is
142 // explicitly marked as not disabled.
143 TEST_F(DeviceDisabledScreenTest, DoNotShowWhenNotDisabled) {
144 SetDeviceDisabled(false);
145 ExpectScreenToNotShow();
146 TryToShowScreen();
147 }
148
149 // Verifies that the device disabled screen is not shown when device disabling
150 // is turned off by flag, even if the device is marked as disabled.
151 TEST_F(DeviceDisabledScreenTest, DoNotShowWhenTurnedOffByFlag) {
152 CommandLine::ForCurrentProcess()->AppendSwitch(
153 switches::kDisableDeviceDisabling);
154 SetDeviceDisabled(true);
155 ExpectScreenToNotShow();
156 TryToShowScreen();
157 }
158
159 // Verifies that the device disabled screen is not shown when the device is
160 // already enrolled, even if the device is marked as disabled.
161 TEST_F(DeviceDisabledScreenTest, DoNotShowWhenEnterpriseOwned) {
162 SetDeviceMode(policy::DEVICE_MODE_ENTERPRISE);
163 SetDeviceDisabled(true);
164 ExpectScreenToNotShow();
165 TryToShowScreen();
166 }
167
168 // Verifies that the device disabled screen is not shown when the device is
169 // already owned by a consumer, even if the device is marked as disabled.
170 TEST_F(DeviceDisabledScreenTest, DoNotShowWhenConsumerOwned) {
171 SetDeviceMode(policy::DEVICE_MODE_CONSUMER);
172 SetDeviceDisabled(true);
173 ExpectScreenToNotShow();
174 TryToShowScreen();
175 }
176
177 // Verifies that the device disabled screen is shown when the device is marked
178 // as disabled, device disabling is not turned off by flag and the device is not
179 // owned yet.
180 TEST_F(DeviceDisabledScreenTest, ShowWhenDisabledAndNotOwned) {
181 SetDeviceDisabled(true);
182 ExpectScreenToShow();
183 TryToShowScreen();
184 }
185
186 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/login/screens/device_disabled_screen.cc ('k') | chrome/browser/chromeos/login/wizard_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698