OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/cros/mock_login_library.h" | 5 #include "chrome/browser/chromeos/cros/mock_login_library.h" |
6 #include "chrome/browser/chromeos/cros/mock_network_library.h" | 6 #include "chrome/browser/chromeos/cros/mock_network_library.h" |
7 #include "chrome/browser/chromeos/cros/mock_update_library.h" | 7 #include "chrome/browser/chromeos/cros/mock_update_library.h" |
8 #include "chrome/browser/chromeos/login/mock_screen_observer.h" | 8 #include "chrome/browser/chromeos/login/mock_screen_observer.h" |
9 #include "chrome/browser/chromeos/login/update_screen.h" | 9 #include "chrome/browser/chromeos/login/update_screen.h" |
10 #include "chrome/browser/chromeos/login/wizard_controller.h" | 10 #include "chrome/browser/chromeos/login/wizard_controller.h" |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 .RetiresOnSaturation(); | 63 .RetiresOnSaturation(); |
64 EXPECT_CALL(*mock_network_library_, AddNetworkManagerObserver(_)) | 64 EXPECT_CALL(*mock_network_library_, AddNetworkManagerObserver(_)) |
65 .Times(1) | 65 .Times(1) |
66 .RetiresOnSaturation(); | 66 .RetiresOnSaturation(); |
67 EXPECT_CALL(*mock_network_library_, FindWifiDevice()) | 67 EXPECT_CALL(*mock_network_library_, FindWifiDevice()) |
68 .Times(AnyNumber()); | 68 .Times(AnyNumber()); |
69 EXPECT_CALL(*mock_network_library_, FindEthernetDevice()) | 69 EXPECT_CALL(*mock_network_library_, FindEthernetDevice()) |
70 .Times(AnyNumber()); | 70 .Times(AnyNumber()); |
71 } | 71 } |
72 | 72 |
| 73 virtual void SetUpOnMainThread() { |
| 74 mock_screen_observer_.reset(new MockScreenObserver()); |
| 75 ASSERT_TRUE(controller() != NULL); |
| 76 controller()->set_observer(mock_screen_observer_.get()); |
| 77 update_screen_ = controller()->GetUpdateScreen(); |
| 78 ASSERT_TRUE(update_screen_ != NULL); |
| 79 ASSERT_EQ(controller()->current_screen(), update_screen_); |
| 80 } |
| 81 |
73 virtual void TearDownInProcessBrowserTestFixture() { | 82 virtual void TearDownInProcessBrowserTestFixture() { |
| 83 controller()->set_observer(NULL); |
74 cros_mock_->test_api()->SetUpdateLibrary(NULL, true); | 84 cros_mock_->test_api()->SetUpdateLibrary(NULL, true); |
75 WizardInProcessBrowserTest::TearDownInProcessBrowserTestFixture(); | 85 WizardInProcessBrowserTest::TearDownInProcessBrowserTestFixture(); |
76 } | 86 } |
77 | 87 |
78 MockLoginLibrary* mock_login_library_; | 88 MockLoginLibrary* mock_login_library_; |
79 MockUpdateLibrary* mock_update_library_; | 89 MockUpdateLibrary* mock_update_library_; |
80 MockNetworkLibrary* mock_network_library_; | 90 MockNetworkLibrary* mock_network_library_; |
81 | 91 |
| 92 scoped_ptr<MockScreenObserver> mock_screen_observer_; |
| 93 UpdateScreen* update_screen_; |
| 94 |
82 private: | 95 private: |
83 DISALLOW_COPY_AND_ASSIGN(UpdateScreenTest); | 96 DISALLOW_COPY_AND_ASSIGN(UpdateScreenTest); |
84 }; | 97 }; |
85 | 98 |
86 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestBasic) { | 99 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestBasic) { |
87 ASSERT_TRUE(controller() != NULL); | 100 ASSERT_TRUE(update_screen_->actor_.get() != NULL); |
88 scoped_ptr<MockScreenObserver> mock_screen_observer(new MockScreenObserver()); | |
89 controller()->set_observer(mock_screen_observer.get()); | |
90 UpdateScreen* update_screen = controller()->GetUpdateScreen(); | |
91 ASSERT_TRUE(update_screen != NULL); | |
92 ASSERT_EQ(controller()->current_screen(), update_screen); | |
93 UpdateView* update_view = update_screen->view(); | |
94 ASSERT_TRUE(update_view != NULL); | |
95 controller()->set_observer(NULL); | |
96 } | 101 } |
97 | 102 |
98 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestNoUpdate) { | 103 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestNoUpdate) { |
99 ASSERT_TRUE(controller() != NULL); | |
100 scoped_ptr<MockScreenObserver> mock_screen_observer(new MockScreenObserver()); | |
101 controller()->set_observer(mock_screen_observer.get()); | |
102 UpdateScreen* update_screen = controller()->GetUpdateScreen(); | |
103 ASSERT_TRUE(update_screen != NULL); | |
104 ASSERT_EQ(controller()->current_screen(), update_screen); | |
105 | |
106 UpdateLibrary::Status status; | 104 UpdateLibrary::Status status; |
107 status.status = UPDATE_STATUS_IDLE; | 105 status.status = UPDATE_STATUS_IDLE; |
108 EXPECT_CALL(*mock_update_library_, status()) | 106 EXPECT_CALL(*mock_update_library_, status()) |
109 .Times(AtLeast(1)) | 107 .Times(AtLeast(1)) |
110 .WillRepeatedly(ReturnRef(status)); | 108 .WillRepeatedly(ReturnRef(status)); |
111 EXPECT_CALL(*mock_screen_observer, OnExit(ScreenObserver::UPDATE_NOUPDATE)) | 109 EXPECT_CALL(*mock_screen_observer_, OnExit(ScreenObserver::UPDATE_NOUPDATE)) |
112 .Times(1); | 110 .Times(1); |
113 update_screen->UpdateStatusChanged(mock_update_library_); | 111 update_screen_->UpdateStatusChanged(mock_update_library_); |
114 | |
115 controller()->set_observer(NULL); | |
116 } | 112 } |
117 | 113 |
118 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestUpdateAvailable) { | 114 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestUpdateAvailable) { |
119 ASSERT_TRUE(controller() != NULL); | 115 update_screen_->SetAllUpdatesCritical(true); |
120 scoped_ptr<MockScreenObserver> mock_screen_observer(new MockScreenObserver()); | |
121 controller()->set_observer(mock_screen_observer.get()); | |
122 UpdateScreen* update_screen = controller()->GetUpdateScreen(); | |
123 ASSERT_TRUE(update_screen != NULL); | |
124 ASSERT_EQ(controller()->current_screen(), update_screen); | |
125 update_screen->SetAllUpdatesCritical(true); | |
126 | 116 |
127 UpdateLibrary::Status status; | 117 UpdateLibrary::Status status; |
128 | 118 |
129 status.status = UPDATE_STATUS_UPDATE_AVAILABLE; | 119 status.status = UPDATE_STATUS_UPDATE_AVAILABLE; |
130 status.new_version = "latest and greatest"; | 120 status.new_version = "latest and greatest"; |
131 EXPECT_CALL(*mock_update_library_, status()) | 121 EXPECT_CALL(*mock_update_library_, status()) |
132 .Times(AtLeast(1)) | 122 .Times(AtLeast(1)) |
133 .WillRepeatedly(ReturnRef(status)); | 123 .WillRepeatedly(ReturnRef(status)); |
134 update_screen->UpdateStatusChanged(mock_update_library_); | 124 update_screen_->UpdateStatusChanged(mock_update_library_); |
135 | 125 |
136 status.status = UPDATE_STATUS_DOWNLOADING; | 126 status.status = UPDATE_STATUS_DOWNLOADING; |
137 status.download_progress = 0.0; | 127 status.download_progress = 0.0; |
138 EXPECT_CALL(*mock_update_library_, status()) | 128 EXPECT_CALL(*mock_update_library_, status()) |
139 .Times(AtLeast(1)) | 129 .Times(AtLeast(1)) |
140 .WillRepeatedly(ReturnRef(status)); | 130 .WillRepeatedly(ReturnRef(status)); |
141 update_screen->UpdateStatusChanged(mock_update_library_); | 131 update_screen_->UpdateStatusChanged(mock_update_library_); |
142 | 132 |
143 status.download_progress = 0.5; | 133 status.download_progress = 0.5; |
144 EXPECT_CALL(*mock_update_library_, status()) | 134 EXPECT_CALL(*mock_update_library_, status()) |
145 .Times(AtLeast(1)) | 135 .Times(AtLeast(1)) |
146 .WillRepeatedly(ReturnRef(status)); | 136 .WillRepeatedly(ReturnRef(status)); |
147 update_screen->UpdateStatusChanged(mock_update_library_); | 137 update_screen_->UpdateStatusChanged(mock_update_library_); |
148 | 138 |
149 status.download_progress = 1.0; | 139 status.download_progress = 1.0; |
150 EXPECT_CALL(*mock_update_library_, status()) | 140 EXPECT_CALL(*mock_update_library_, status()) |
151 .Times(AtLeast(1)) | 141 .Times(AtLeast(1)) |
152 .WillRepeatedly(ReturnRef(status)); | 142 .WillRepeatedly(ReturnRef(status)); |
153 update_screen->UpdateStatusChanged(mock_update_library_); | 143 update_screen_->UpdateStatusChanged(mock_update_library_); |
154 | 144 |
155 status.status = UPDATE_STATUS_VERIFYING; | 145 status.status = UPDATE_STATUS_VERIFYING; |
156 EXPECT_CALL(*mock_update_library_, status()) | 146 EXPECT_CALL(*mock_update_library_, status()) |
157 .Times(AtLeast(1)) | 147 .Times(AtLeast(1)) |
158 .WillRepeatedly(ReturnRef(status)); | 148 .WillRepeatedly(ReturnRef(status)); |
159 update_screen->UpdateStatusChanged(mock_update_library_); | 149 update_screen_->UpdateStatusChanged(mock_update_library_); |
160 | 150 |
161 status.status = UPDATE_STATUS_FINALIZING; | 151 status.status = UPDATE_STATUS_FINALIZING; |
162 EXPECT_CALL(*mock_update_library_, status()) | 152 EXPECT_CALL(*mock_update_library_, status()) |
163 .Times(AtLeast(1)) | 153 .Times(AtLeast(1)) |
164 .WillRepeatedly(ReturnRef(status)); | 154 .WillRepeatedly(ReturnRef(status)); |
165 update_screen->UpdateStatusChanged(mock_update_library_); | 155 update_screen_->UpdateStatusChanged(mock_update_library_); |
166 | 156 |
167 status.status = UPDATE_STATUS_UPDATED_NEED_REBOOT; | 157 status.status = UPDATE_STATUS_UPDATED_NEED_REBOOT; |
168 EXPECT_CALL(*mock_update_library_, status()) | 158 EXPECT_CALL(*mock_update_library_, status()) |
169 .Times(AtLeast(1)) | 159 .Times(AtLeast(1)) |
170 .WillRepeatedly(ReturnRef(status)); | 160 .WillRepeatedly(ReturnRef(status)); |
171 EXPECT_CALL(*mock_update_library_, RebootAfterUpdate()) | 161 EXPECT_CALL(*mock_update_library_, RebootAfterUpdate()) |
172 .Times(1); | 162 .Times(1); |
173 update_screen->UpdateStatusChanged(mock_update_library_); | 163 update_screen_->UpdateStatusChanged(mock_update_library_); |
174 | |
175 controller()->set_observer(NULL); | |
176 } | 164 } |
177 | 165 |
178 static void RequestUpdateCheckFail(UpdateCallback callback, void* userdata) { | 166 static void RequestUpdateCheckFail(UpdateCallback callback, void* userdata) { |
179 callback(userdata, chromeos::UPDATE_RESULT_FAILED, NULL); | 167 callback(userdata, chromeos::UPDATE_RESULT_FAILED, NULL); |
180 } | 168 } |
181 | 169 |
182 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorIssuingUpdateCheck) { | 170 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorIssuingUpdateCheck) { |
183 ASSERT_TRUE(controller() != NULL); | |
184 scoped_ptr<MockScreenObserver> mock_screen_observer(new MockScreenObserver()); | |
185 controller()->set_observer(mock_screen_observer.get()); | |
186 UpdateScreen* update_screen = controller()->GetUpdateScreen(); | |
187 ASSERT_TRUE(update_screen != NULL); | |
188 ASSERT_EQ(controller()->current_screen(), update_screen); | |
189 | |
190 // First, cancel the update that is already in progress. | 171 // First, cancel the update that is already in progress. |
191 EXPECT_CALL(*mock_screen_observer, | 172 EXPECT_CALL(*mock_screen_observer_, |
192 OnExit(ScreenObserver::UPDATE_NOUPDATE)) | 173 OnExit(ScreenObserver::UPDATE_NOUPDATE)) |
193 .Times(1); | 174 .Times(1); |
194 update_screen->CancelUpdate(); | 175 update_screen_->CancelUpdate(); |
195 | 176 |
196 // Run UpdateScreen::StartUpdate() again, but CheckForUpdate() will fail | 177 // Run UpdateScreen::StartUpdate() again, but CheckForUpdate() will fail |
197 // issuing the update check this time. | 178 // issuing the update check this time. |
198 EXPECT_CALL(*mock_update_library_, AddObserver(_)) | 179 EXPECT_CALL(*mock_update_library_, AddObserver(_)) |
199 .Times(1); | 180 .Times(1); |
200 EXPECT_CALL(*mock_update_library_, RemoveObserver(_)) | 181 EXPECT_CALL(*mock_update_library_, RemoveObserver(_)) |
201 .Times(AtLeast(1)); | 182 .Times(AtLeast(1)); |
202 EXPECT_CALL(*mock_update_library_, RequestUpdateCheck(_,_)) | 183 EXPECT_CALL(*mock_update_library_, RequestUpdateCheck(_,_)) |
203 .Times(1) | 184 .Times(1) |
204 .WillOnce(Invoke(RequestUpdateCheckFail)); | 185 .WillOnce(Invoke(RequestUpdateCheckFail)); |
205 EXPECT_CALL(*mock_screen_observer, | 186 EXPECT_CALL(*mock_screen_observer_, |
206 OnExit(ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE)) | 187 OnExit(ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE)) |
207 .Times(1); | 188 .Times(1); |
208 update_screen->StartUpdate(); | 189 update_screen_->StartUpdate(); |
209 | |
210 controller()->set_observer(NULL); | |
211 } | 190 } |
212 | 191 |
213 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorCheckingForUpdate) { | 192 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorCheckingForUpdate) { |
214 ASSERT_TRUE(controller() != NULL); | |
215 scoped_ptr<MockScreenObserver> mock_screen_observer(new MockScreenObserver()); | |
216 controller()->set_observer(mock_screen_observer.get()); | |
217 UpdateScreen* update_screen = controller()->GetUpdateScreen(); | |
218 ASSERT_TRUE(update_screen != NULL); | |
219 ASSERT_EQ(controller()->current_screen(), update_screen); | |
220 | |
221 UpdateLibrary::Status status; | 193 UpdateLibrary::Status status; |
222 status.status = UPDATE_STATUS_ERROR; | 194 status.status = UPDATE_STATUS_ERROR; |
223 EXPECT_CALL(*mock_update_library_, status()) | 195 EXPECT_CALL(*mock_update_library_, status()) |
224 .Times(AtLeast(1)) | 196 .Times(AtLeast(1)) |
225 .WillRepeatedly(ReturnRef(status)); | 197 .WillRepeatedly(ReturnRef(status)); |
226 EXPECT_CALL(*mock_screen_observer, | 198 EXPECT_CALL(*mock_screen_observer_, |
227 OnExit(ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE)) | 199 OnExit(ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE)) |
228 .Times(1); | 200 .Times(1); |
229 update_screen->UpdateStatusChanged(mock_update_library_); | 201 update_screen_->UpdateStatusChanged(mock_update_library_); |
230 | |
231 controller()->set_observer(NULL); | |
232 } | 202 } |
233 | 203 |
234 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorUpdating) { | 204 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorUpdating) { |
235 ASSERT_TRUE(controller() != NULL); | |
236 scoped_ptr<MockScreenObserver> mock_screen_observer(new MockScreenObserver()); | |
237 controller()->set_observer(mock_screen_observer.get()); | |
238 UpdateScreen* update_screen = controller()->GetUpdateScreen(); | |
239 ASSERT_TRUE(update_screen != NULL); | |
240 ASSERT_EQ(controller()->current_screen(), update_screen); | |
241 | |
242 UpdateLibrary::Status status; | 205 UpdateLibrary::Status status; |
243 | |
244 status.status = UPDATE_STATUS_UPDATE_AVAILABLE; | 206 status.status = UPDATE_STATUS_UPDATE_AVAILABLE; |
245 status.new_version = "latest and greatest"; | 207 status.new_version = "latest and greatest"; |
246 EXPECT_CALL(*mock_update_library_, status()) | 208 EXPECT_CALL(*mock_update_library_, status()) |
247 .Times(AtLeast(1)) | 209 .Times(AtLeast(1)) |
248 .WillRepeatedly(ReturnRef(status)); | 210 .WillRepeatedly(ReturnRef(status)); |
249 update_screen->UpdateStatusChanged(mock_update_library_); | 211 update_screen_->UpdateStatusChanged(mock_update_library_); |
250 | 212 |
251 status.status = UPDATE_STATUS_ERROR; | 213 status.status = UPDATE_STATUS_ERROR; |
252 EXPECT_CALL(*mock_update_library_, status()) | 214 EXPECT_CALL(*mock_update_library_, status()) |
253 .Times(AtLeast(1)) | 215 .Times(AtLeast(1)) |
254 .WillRepeatedly(ReturnRef(status)); | 216 .WillRepeatedly(ReturnRef(status)); |
255 EXPECT_CALL(*mock_screen_observer, | 217 EXPECT_CALL(*mock_screen_observer_, |
256 OnExit(ScreenObserver::UPDATE_ERROR_UPDATING)) | 218 OnExit(ScreenObserver::UPDATE_ERROR_UPDATING)) |
257 .Times(1); | 219 .Times(1); |
258 update_screen->UpdateStatusChanged(mock_update_library_); | 220 update_screen_->UpdateStatusChanged(mock_update_library_); |
259 | |
260 controller()->set_observer(NULL); | |
261 } | 221 } |
262 | 222 |
263 } // namespace chromeos | 223 } // namespace chromeos |
OLD | NEW |