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

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

Issue 2824283003: Fix autoupdate_EndToEndTest on veyron_rialto (Closed)
Patch Set: Addressed more comments Created 3 years, 7 months 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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/login/screens/network_screen.h" 5 #include "chrome/browser/chromeos/login/screens/network_screen.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
11 #include "base/strings/utf_string_conversions.h"
12 #include "chrome/browser/chromeos/login/enrollment/enrollment_screen.h" 11 #include "chrome/browser/chromeos/login/enrollment/enrollment_screen.h"
13 #include "chrome/browser/chromeos/login/helper.h" 12 #include "chrome/browser/chromeos/login/helper.h"
13 #include "chrome/browser/chromeos/login/mock_network_state_helper.h"
14 #include "chrome/browser/chromeos/login/screens/base_screen.h" 14 #include "chrome/browser/chromeos/login/screens/base_screen.h"
15 #include "chrome/browser/chromeos/login/screens/mock_base_screen_delegate.h" 15 #include "chrome/browser/chromeos/login/screens/mock_base_screen_delegate.h"
16 #include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h" 16 #include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h"
17 #include "chrome/browser/chromeos/login/test/wizard_in_process_browser_test.h" 17 #include "chrome/browser/chromeos/login/test/wizard_in_process_browser_test.h"
18 #include "chrome/browser/chromeos/login/ui/login_display_host.h" 18 #include "chrome/browser/chromeos/login/ui/login_display_host.h"
19 #include "chrome/browser/chromeos/login/wizard_controller.h" 19 #include "chrome/browser/chromeos/login/wizard_controller.h"
20 #include "chromeos/chromeos_switches.h" 20 #include "chromeos/chromeos_switches.h"
21 #include "chromeos/dbus/dbus_thread_manager.h" 21 #include "chromeos/dbus/dbus_thread_manager.h"
22 #include "chromeos/dbus/fake_session_manager_client.h" 22 #include "chromeos/dbus/fake_session_manager_client.h"
23 #include "chromeos/dbus/shill_manager_client.h" 23 #include "chromeos/dbus/shill_manager_client.h"
(...skipping 10 matching lines...) Expand all
34 using ::testing::ReturnRef; 34 using ::testing::ReturnRef;
35 using views::Button; 35 using views::Button;
36 36
37 namespace chromeos { 37 namespace chromeos {
38 38
39 class DummyButtonListener : public views::ButtonListener { 39 class DummyButtonListener : public views::ButtonListener {
40 public: 40 public:
41 void ButtonPressed(views::Button* sender, const ui::Event& event) override {} 41 void ButtonPressed(views::Button* sender, const ui::Event& event) override {}
42 }; 42 };
43 43
44 namespace login {
45
46 class MockNetworkStateHelper : public NetworkStateHelper {
47 public:
48 MOCK_CONST_METHOD0(GetCurrentNetworkName, base::string16(void));
49 MOCK_CONST_METHOD0(IsConnected, bool(void));
50 MOCK_CONST_METHOD0(IsConnecting, bool(void));
51 };
52
53 } // namespace login
54
55 class NetworkScreenTest : public WizardInProcessBrowserTest { 44 class NetworkScreenTest : public WizardInProcessBrowserTest {
56 public: 45 public:
57 NetworkScreenTest() 46 NetworkScreenTest()
58 : WizardInProcessBrowserTest(OobeScreen::SCREEN_OOBE_NETWORK), 47 : WizardInProcessBrowserTest(OobeScreen::SCREEN_OOBE_NETWORK),
59 fake_session_manager_client_(nullptr) {} 48 fake_session_manager_client_(nullptr) {}
60 49
61 protected: 50 protected:
62 void SetUpInProcessBrowserTestFixture() override { 51 void SetUpInProcessBrowserTestFixture() override {
63 WizardInProcessBrowserTest::SetUpInProcessBrowserTestFixture(); 52 WizardInProcessBrowserTest::SetUpInProcessBrowserTestFixture();
64 53
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 // EXPECT_FALSE(view_->IsContinueEnabled()); 139 // EXPECT_FALSE(view_->IsContinueEnabled());
151 // EXPECT_FALSE(view_->IsConnecting()); 140 // EXPECT_FALSE(view_->IsConnecting());
152 network_screen_->OnConnectionTimeout(); 141 network_screen_->OnConnectionTimeout();
153 142
154 // Close infobubble with error message - it makes the test stable. 143 // Close infobubble with error message - it makes the test stable.
155 // EXPECT_FALSE(view_->IsContinueEnabled()); 144 // EXPECT_FALSE(view_->IsContinueEnabled());
156 // EXPECT_FALSE(view_->IsConnecting()); 145 // EXPECT_FALSE(view_->IsConnecting());
157 // view_->ClearErrors(); 146 // view_->ClearErrors();
158 } 147 }
159 148
160 class HandsOffNetworkScreenTest : public NetworkScreenTest {
161 public:
162 HandsOffNetworkScreenTest() {}
163
164 protected:
165 void SetUpOnMainThread() override {
166 NetworkScreenTest::SetUpOnMainThread();
167
168 // Set up fake networks.
169 DBusThreadManager::Get()
170 ->GetShillManagerClient()
171 ->GetTestInterface()
172 ->SetupDefaultEnvironment();
173 }
174
175 private:
176 // Overridden from InProcessBrowserTest:
177 void SetUpCommandLine(base::CommandLine* command_line) override {
178 command_line->AppendSwitchASCII(
179 switches::kEnterpriseEnableZeroTouchEnrollment, "hands-off");
180 }
181
182 DISALLOW_COPY_AND_ASSIGN(HandsOffNetworkScreenTest);
183 };
184
185 #if defined(OS_CHROMEOS)
186 // Flaky on ChromeOS. See https://crbug.com/674782.
187 #define MAYBE_RequiresNoInput DISABLED_RequiresNoInput
188 #else
189 #define MAYBE_RequiresNoInput RequiresNoInput
190 #endif
191 IN_PROC_BROWSER_TEST_F(HandsOffNetworkScreenTest, MAYBE_RequiresNoInput) {
192 WizardController* wizard_controller = WizardController::default_controller();
193
194 // Allow the WizardController to advance throught the enrollment flow.
195 network_screen_->base_screen_delegate_ = wizard_controller;
196
197 // Simulate a network connection.
198 EXPECT_CALL(*mock_network_state_helper_, IsConnected())
199 .Times(AnyNumber())
200 .WillRepeatedly((Return(true)));
201 network_screen_->UpdateStatus();
202
203 // Check if NetworkScreen::OnContinueButtonPressed() is called
204 // Note that checking network_screen_->continue_pressed_ is not
205 // sufficient since there are cases where OnContinueButtonPressed()
206 // is called but where this variable is not set to true.
207 ASSERT_TRUE((!network_screen_->is_network_subscribed_) &&
208 network_screen_->network_state_helper_->IsConnected());
209
210 // Check that we reach the enrollment screen.
211 OobeScreenWaiter(OobeScreen::SCREEN_OOBE_ENROLLMENT).Wait();
212
213 // Check that attestation-based enrollment finishes
214 // with either success or error.
215 bool done = false;
216 ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
217 LoginDisplayHost::default_host()->GetOobeUI()->web_ui()->GetWebContents(),
218 "var count = 0;"
219 "function isVisible(el) {"
220 " return window.getComputedStyle(document.getElementById(el)).display"
221 " !== 'none';"
222 "}"
223 "function SendReplyIfEnrollmentDone() {"
224 " if (isVisible('oauth-enroll-step-abe-success') ||"
225 " isVisible('oauth-enroll-step-error')) {"
226 " domAutomationController.send(true);"
227 " } else if (count > 10) {"
228 " domAutomationController.send(false);"
229 " } else {"
230 " count++;"
231 " setTimeout(SendReplyIfEnrollmentDone, 1000);"
232 " }"
233 "}"
234 "SendReplyIfEnrollmentDone();",
235 &done));
236
237 // Reset the enrollment helper so there is no side effect with other tests.
238 static_cast<EnrollmentScreen*>(wizard_controller->current_screen())
239 ->enrollment_helper_.reset();
240 }
241
242 IN_PROC_BROWSER_TEST_F(HandsOffNetworkScreenTest, ContinueClickedOnlyOnce) {
243 WizardController* wizard_controller = WizardController::default_controller();
244
245 // Allow the WizardController to advance through the enrollment flow.
246 network_screen_->base_screen_delegate_ = wizard_controller;
247
248 // Check that OnContinueButtonPressed has not been called yet.
249 ASSERT_EQ(0, network_screen_->continue_attempts_);
250
251 // Connect to network "net0".
252 EXPECT_CALL(*mock_network_state_helper_, GetCurrentNetworkName())
253 .Times(AnyNumber())
254 .WillRepeatedly(Return(base::ASCIIToUTF16("net0")));
255 EXPECT_CALL(*mock_network_state_helper_, IsConnected())
256 .Times(AnyNumber())
257 .WillRepeatedly(Return(true));
258
259 // Stop waiting for net0.
260 network_screen_->StopWaitingForConnection(base::ASCIIToUTF16("net0"));
261
262 // Check that OnContinueButtonPressed has been called exactly once.
263 ASSERT_EQ(1, network_screen_->continue_attempts_);
264
265 // Stop waiting for another network, net1.
266 network_screen_->StopWaitingForConnection(base::ASCIIToUTF16("net1"));
267
268 // Check that OnContinueButtonPressed stil has been called exactly once
269 ASSERT_EQ(1, network_screen_->continue_attempts_);
270
271 // Wait for the enrollment screen.
272 OobeScreenWaiter(OobeScreen::SCREEN_OOBE_ENROLLMENT)
273 .WaitNoAssertCurrentScreen();
274
275 // Reset the enrollment helper so there is no side effect with other tests.
276 static_cast<EnrollmentScreen*>(wizard_controller->current_screen())
277 ->enrollment_helper_.reset();
278 }
279
280 } // namespace chromeos 149 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698