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

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

Issue 2824283003: Fix autoupdate_EndToEndTest on veyron_rialto (Closed)
Patch Set: done 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
(Empty)
1 // Copyright (c) 2017 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 "base/command_line.h"
6 #include "base/message_loop/message_loop.h"
7 #include "base/strings/utf_string_conversions.h"
xiyuan 2017/04/27 19:34:21 unused?
kumarniranjan 2017/04/27 22:58:59 It is used on line 131 and line 146.
8 #include "base/test/scoped_mock_time_message_loop_task_runner.h"
9 #include "chrome/browser/chromeos/input_method/input_method_configuration.h"
10 #include "chrome/browser/chromeos/input_method/mock_input_method_manager_impl.h"
11 #include "chrome/browser/chromeos/login/mock_network_state_helper.h"
12 #include "chrome/browser/chromeos/login/screens/mock_base_screen_delegate.h"
13 #include "chrome/browser/chromeos/login/screens/mock_model_view_channel.h"
14 #include "chrome/browser/chromeos/login/screens/mock_network_screen.h"
xiyuan 2017/04/27 19:34:21 unused?
kumarniranjan 2017/04/27 22:58:59 It is used to import MockNetworkView (see line 78)
15 #include "chrome/browser/chromeos/settings/cros_settings.h"
16 #include "chrome/browser/chromeos/settings/device_settings_service.h"
17 #include "chrome/test/base/testing_browser_process.h"
18 #include "chromeos/chromeos_switches.h"
19 #include "chromeos/dbus/dbus_thread_manager.h"
20 #include "chromeos/system/fake_statistics_provider.h"
xiyuan 2017/04/27 19:34:22 unused?
kumarniranjan 2017/04/27 22:58:59 It is needed for ScopedFakeStatisticsProvider (see
21 #include "content/public/test/test_browser_thread_bundle.h"
22 #include "testing/gtest/include/gtest/gtest.h"
23 #include "ui/base/ime/chromeos/mock_component_extension_ime_manager.h"
24
25 using testing::_;
26 using testing::AnyNumber;
27 using testing::Return;
28
29 namespace chromeos {
30
31 class NetworkScreenUnitTest : public testing::Test {
32 public:
33 NetworkScreenUnitTest() {}
34
35 void FastForwardTime(base::TimeDelta time) {
36 runner_.task_runner()->FastForwardBy(time);
37 }
38
39 // testing::Test:
40 void SetUp() override {
41 // Initialize the thread manager.
42 DBusThreadManager::Initialize();
43
44 // Configure the browser to use Hands-Off Enrollment.
45 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
46 switches::kEnterpriseEnableZeroTouchEnrollment, "hands-off");
47
48 // Replace the regular InputMethodManager with a mock.
49 input_method::MockInputMethodManagerImpl* mock_input_manager =
50 new input_method::MockInputMethodManagerImpl();
51 mock_input_manager->SetComponentExtensionIMEManager(
52 std::unique_ptr<MockComponentExtensionIMEManager>(
53 new MockComponentExtensionIMEManager()));
54 input_method::InitializeForTesting(mock_input_manager);
55
56 // Create the NetworkScreen we will use for testing.
57 network_screen_.reset(
58 new NetworkScreen(&mock_base_screen_delegate_, nullptr, &mock_view_));
59 network_screen_->set_model_view_channel(&mock_channel_);
60 mock_network_state_helper_ = new login::MockNetworkStateHelper();
61 network_screen_->SetNetworkStateHelperForTest(mock_network_state_helper_);
62 }
63
64 void TearDown() override {
65 TestingBrowserProcess::GetGlobal()->SetShuttingDown(true);
66 network_screen_.reset();
67 CrosSettings::Get()->ClearSettingsObservers(kSystemTimezone);
xiyuan 2017/04/27 19:34:21 Why do we need to do this? Wouldn't network_screen
kumarniranjan 2017/04/27 22:58:59 I needed to do it earlier during development, but
68 input_method::Shutdown();
69 DBusThreadManager::Shutdown();
70 }
71
72 protected:
73 // A pointer to the NetworkScreen.
74 std::unique_ptr<NetworkScreen> network_screen_;
75
76 // Accessory objects needed by NetworkScreen.
77 MockBaseScreenDelegate mock_base_screen_delegate_;
78 MockNetworkView mock_view_;
79 MockModelViewChannel mock_channel_;
xiyuan 2017/04/27 19:34:21 nit: |mock_view_| and |mock_channel_| can be priva
kumarniranjan 2017/04/27 22:58:59 Done.
80 login::MockNetworkStateHelper* mock_network_state_helper_;
xiyuan 2017/04/27 19:34:21 nit: = nullptr;
kumarniranjan 2017/04/27 22:58:59 Done.
81
82 // Test versions of core browser infrastructure.
83 content::TestBrowserThreadBundle threads_;
84 base::ScopedMockTimeMessageLoopTaskRunner runner_;
xiyuan 2017/04/27 19:34:22 nit: prefer to make the two members private and ad
kumarniranjan 2017/04/27 22:58:59 Done.
85
86 private:
87 // Scoped test versions of required global objects.
88 ScopedTestDeviceSettingsService device_settings_;
89 ScopedTestCrosSettings cros_settings_;
90 system::ScopedFakeStatisticsProvider provider_;
91
92 DISALLOW_COPY_AND_ASSIGN(NetworkScreenUnitTest);
93 };
94
95 TEST_F(NetworkScreenUnitTest, ContinuesAutomatically) {
96 // Verify that we are using the right TaskRunner.
97 EXPECT_EQ(runner_.task_runner(),
98 base::MessageLoop::current()->task_runner().get());
99
100 // Set expectation that NetworkScreen will finish.
101 EXPECT_CALL(mock_base_screen_delegate_,
102 OnExit(_, ScreenExitCode::NETWORK_CONNECTED, _))
103 .Times(1);
104
105 // Simulate a network connection.
106 EXPECT_CALL(*mock_network_state_helper_, IsConnected())
107 .Times(AnyNumber())
108 .WillRepeatedly((Return(true)));
109 network_screen_->UpdateStatus();
110
111 // Fast forward time by 3 minutes.
112 FastForwardTime(base::TimeDelta::FromMinutes(3));
113
114 // Check that we continued once
115 EXPECT_EQ(1, network_screen_->continue_attempts_);
116 }
117
118 TEST_F(NetworkScreenUnitTest, ContinuesOnlyOnce) {
119 // Verify that we are using the right TaskRunner.
120 EXPECT_EQ(runner_.task_runner(),
121 base::MessageLoop::current()->task_runner().get());
122
123 // Set expectation that NetworkScreen will finish.
124 EXPECT_CALL(mock_base_screen_delegate_,
125 OnExit(_, ScreenExitCode::NETWORK_CONNECTED, _))
126 .Times(1);
127
128 // Connect to network "net0".
129 EXPECT_CALL(*mock_network_state_helper_, GetCurrentNetworkName())
130 .Times(AnyNumber())
131 .WillRepeatedly(Return(base::ASCIIToUTF16("net0")));
132 EXPECT_CALL(*mock_network_state_helper_, IsConnected())
133 .Times(AnyNumber())
134 .WillRepeatedly(Return(true));
135
136 // Stop waiting for net0.
137 network_screen_->StopWaitingForConnection(base::ASCIIToUTF16("net0"));
138
139 // Fast forward time by 3 minutes.
140 FastForwardTime(base::TimeDelta::FromMinutes(3));
141
142 // Check that we have continued exactly once.
143 ASSERT_EQ(1, network_screen_->continue_attempts_);
144
145 // Stop waiting for another network, net1.
146 network_screen_->StopWaitingForConnection(base::ASCIIToUTF16("net1"));
147
148 // Fast forward time by 3 minutes.
149 FastForwardTime(base::TimeDelta::FromMinutes(3));
150
151 // Check that we have still continued only once.
152 EXPECT_EQ(1, network_screen_->continue_attempts_);
153 }
154
155 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698