OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 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 <memory> |
5 #include <utility> | 6 #include <utility> |
6 #include <vector> | 7 #include <vector> |
7 | 8 |
8 #include "base/bind.h" | 9 #include "base/bind.h" |
9 #include "base/macros.h" | 10 #include "base/macros.h" |
10 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/ptr_util.h" |
11 #include "base/strings/string_number_conversions.h" | 12 #include "base/strings/string_number_conversions.h" |
12 #include "base/strings/utf_string_conversions.h" | 13 #include "base/strings/utf_string_conversions.h" |
13 #include "build/build_config.h" | 14 #include "build/build_config.h" |
14 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" | 15 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" |
15 #include "chrome/browser/ui/passwords/manage_passwords_icon_view.h" | 16 #include "chrome/browser/ui/passwords/manage_passwords_icon_view.h" |
16 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.h" | 17 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.h" |
17 #include "chrome/browser/ui/passwords/password_dialog_controller.h" | 18 #include "chrome/browser/ui/passwords/password_dialog_controller.h" |
18 #include "chrome/browser/ui/passwords/password_dialog_prompts.h" | 19 #include "chrome/browser/ui/passwords/password_dialog_prompts.h" |
19 #include "chrome/test/base/chrome_render_view_host_test_harness.h" | 20 #include "chrome/test/base/chrome_render_view_host_test_harness.h" |
20 #include "chrome/test/base/testing_profile.h" | 21 #include "chrome/test/base/testing_profile.h" |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 DialogPromptMock& dialog_prompt() { return dialog_prompt_; } | 159 DialogPromptMock& dialog_prompt() { return dialog_prompt_; } |
159 | 160 |
160 TestManagePasswordsUIController* controller() { | 161 TestManagePasswordsUIController* controller() { |
161 return static_cast<TestManagePasswordsUIController*>( | 162 return static_cast<TestManagePasswordsUIController*>( |
162 ManagePasswordsUIController::FromWebContents(web_contents())); | 163 ManagePasswordsUIController::FromWebContents(web_contents())); |
163 } | 164 } |
164 | 165 |
165 void ExpectIconStateIs(password_manager::ui::State state); | 166 void ExpectIconStateIs(password_manager::ui::State state); |
166 void ExpectIconAndControllerStateIs(password_manager::ui::State state); | 167 void ExpectIconAndControllerStateIs(password_manager::ui::State state); |
167 | 168 |
168 scoped_ptr<password_manager::PasswordFormManager> | 169 std::unique_ptr<password_manager::PasswordFormManager> |
169 CreateFormManagerWithBestMatches( | 170 CreateFormManagerWithBestMatches( |
170 const autofill::PasswordForm& observed_form, | 171 const autofill::PasswordForm& observed_form, |
171 ScopedVector<autofill::PasswordForm> best_matches); | 172 ScopedVector<autofill::PasswordForm> best_matches); |
172 | 173 |
173 scoped_ptr<password_manager::PasswordFormManager> CreateFormManager(); | 174 std::unique_ptr<password_manager::PasswordFormManager> CreateFormManager(); |
174 | 175 |
175 // Tests that the state is not changed when the password is autofilled. | 176 // Tests that the state is not changed when the password is autofilled. |
176 void TestNotChangingStateOnAutofill( | 177 void TestNotChangingStateOnAutofill( |
177 password_manager::ui::State state); | 178 password_manager::ui::State state); |
178 | 179 |
179 MOCK_METHOD1(CredentialCallback, void(const autofill::PasswordForm*)); | 180 MOCK_METHOD1(CredentialCallback, void(const autofill::PasswordForm*)); |
180 | 181 |
181 private: | 182 private: |
182 password_manager::StubPasswordManagerClient client_; | 183 password_manager::StubPasswordManagerClient client_; |
183 password_manager::StubPasswordManagerDriver driver_; | 184 password_manager::StubPasswordManagerDriver driver_; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 controller()->UpdateIconAndBubbleState(&view); | 218 controller()->UpdateIconAndBubbleState(&view); |
218 EXPECT_EQ(state, view.state()); | 219 EXPECT_EQ(state, view.state()); |
219 } | 220 } |
220 | 221 |
221 void ManagePasswordsUIControllerTest::ExpectIconAndControllerStateIs( | 222 void ManagePasswordsUIControllerTest::ExpectIconAndControllerStateIs( |
222 password_manager::ui::State state) { | 223 password_manager::ui::State state) { |
223 ExpectIconStateIs(state); | 224 ExpectIconStateIs(state); |
224 EXPECT_EQ(state, controller()->GetState()); | 225 EXPECT_EQ(state, controller()->GetState()); |
225 } | 226 } |
226 | 227 |
227 scoped_ptr<password_manager::PasswordFormManager> | 228 std::unique_ptr<password_manager::PasswordFormManager> |
228 ManagePasswordsUIControllerTest::CreateFormManagerWithBestMatches( | 229 ManagePasswordsUIControllerTest::CreateFormManagerWithBestMatches( |
229 const autofill::PasswordForm& observed_form, | 230 const autofill::PasswordForm& observed_form, |
230 ScopedVector<autofill::PasswordForm> best_matches) { | 231 ScopedVector<autofill::PasswordForm> best_matches) { |
231 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 232 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
232 new password_manager::PasswordFormManager(&password_manager_, &client_, | 233 new password_manager::PasswordFormManager(&password_manager_, &client_, |
233 driver_.AsWeakPtr(), | 234 driver_.AsWeakPtr(), |
234 observed_form, true)); | 235 observed_form, true)); |
235 test_form_manager->SimulateFetchMatchingLoginsFromPasswordStore(); | 236 test_form_manager->SimulateFetchMatchingLoginsFromPasswordStore(); |
236 test_form_manager->OnGetPasswordStoreResults(std::move(best_matches)); | 237 test_form_manager->OnGetPasswordStoreResults(std::move(best_matches)); |
237 return test_form_manager; | 238 return test_form_manager; |
238 } | 239 } |
239 | 240 |
240 scoped_ptr<password_manager::PasswordFormManager> | 241 std::unique_ptr<password_manager::PasswordFormManager> |
241 ManagePasswordsUIControllerTest::CreateFormManager() { | 242 ManagePasswordsUIControllerTest::CreateFormManager() { |
242 ScopedVector<autofill::PasswordForm> stored_forms; | 243 ScopedVector<autofill::PasswordForm> stored_forms; |
243 stored_forms.push_back(new autofill::PasswordForm(test_local_form())); | 244 stored_forms.push_back(new autofill::PasswordForm(test_local_form())); |
244 return CreateFormManagerWithBestMatches(test_local_form(), | 245 return CreateFormManagerWithBestMatches(test_local_form(), |
245 std::move(stored_forms)); | 246 std::move(stored_forms)); |
246 } | 247 } |
247 | 248 |
248 void ManagePasswordsUIControllerTest::TestNotChangingStateOnAutofill( | 249 void ManagePasswordsUIControllerTest::TestNotChangingStateOnAutofill( |
249 password_manager::ui::State state) { | 250 password_manager::ui::State state) { |
250 DCHECK(state == password_manager::ui::PENDING_PASSWORD_STATE || | 251 DCHECK(state == password_manager::ui::PENDING_PASSWORD_STATE || |
251 state == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE || | 252 state == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE || |
252 state == password_manager::ui::CONFIRMATION_STATE); | 253 state == password_manager::ui::CONFIRMATION_STATE); |
253 | 254 |
254 // Set the bubble state to |state|. | 255 // Set the bubble state to |state|. |
255 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 256 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
256 CreateFormManager()); | 257 CreateFormManager()); |
257 test_form_manager->ProvisionallySave( | 258 test_form_manager->ProvisionallySave( |
258 test_local_form(), | 259 test_local_form(), |
259 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 260 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
260 if (state == password_manager::ui::PENDING_PASSWORD_STATE) | 261 if (state == password_manager::ui::PENDING_PASSWORD_STATE) |
261 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 262 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
262 else if (state == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) | 263 else if (state == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) |
263 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); | 264 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); |
264 else // password_manager::ui::CONFIRMATION_STATE | 265 else // password_manager::ui::CONFIRMATION_STATE |
265 controller()->OnAutomaticPasswordSave(std::move(test_form_manager)); | 266 controller()->OnAutomaticPasswordSave(std::move(test_form_manager)); |
266 ASSERT_EQ(state, controller()->GetState()); | 267 ASSERT_EQ(state, controller()->GetState()); |
267 | 268 |
268 // Autofill happens. | 269 // Autofill happens. |
269 scoped_ptr<autofill::PasswordForm> test_form( | 270 std::unique_ptr<autofill::PasswordForm> test_form( |
270 new autofill::PasswordForm(test_local_form())); | 271 new autofill::PasswordForm(test_local_form())); |
271 autofill::PasswordFormMap map; | 272 autofill::PasswordFormMap map; |
272 map.insert( | 273 map.insert( |
273 std::make_pair(test_local_form().username_value, std::move(test_form))); | 274 std::make_pair(test_local_form().username_value, std::move(test_form))); |
274 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); | 275 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); |
275 | 276 |
276 // State shouldn't changed. | 277 // State shouldn't changed. |
277 EXPECT_EQ(state, controller()->GetState()); | 278 EXPECT_EQ(state, controller()->GetState()); |
278 ExpectIconStateIs(state); | 279 ExpectIconStateIs(state); |
279 } | 280 } |
280 | 281 |
281 TEST_F(ManagePasswordsUIControllerTest, DefaultState) { | 282 TEST_F(ManagePasswordsUIControllerTest, DefaultState) { |
282 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); | 283 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
283 EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); | 284 EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); |
284 | 285 |
285 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); | 286 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); |
286 } | 287 } |
287 | 288 |
288 TEST_F(ManagePasswordsUIControllerTest, PasswordAutofilled) { | 289 TEST_F(ManagePasswordsUIControllerTest, PasswordAutofilled) { |
289 scoped_ptr<autofill::PasswordForm> test_form( | 290 std::unique_ptr<autofill::PasswordForm> test_form( |
290 new autofill::PasswordForm(test_local_form())); | 291 new autofill::PasswordForm(test_local_form())); |
291 autofill::PasswordForm* test_form_ptr = test_form.get(); | 292 autofill::PasswordForm* test_form_ptr = test_form.get(); |
292 base::string16 kTestUsername = test_form->username_value; | 293 base::string16 kTestUsername = test_form->username_value; |
293 autofill::PasswordFormMap map; | 294 autofill::PasswordFormMap map; |
294 map.insert(std::make_pair(kTestUsername, std::move(test_form))); | 295 map.insert(std::make_pair(kTestUsername, std::move(test_form))); |
295 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); | 296 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); |
296 | 297 |
297 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); | 298 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
298 EXPECT_EQ(test_form_ptr->origin, controller()->GetOrigin()); | 299 EXPECT_EQ(test_form_ptr->origin, controller()->GetOrigin()); |
299 ASSERT_EQ(1u, controller()->GetCurrentForms().size()); | 300 ASSERT_EQ(1u, controller()->GetCurrentForms().size()); |
300 EXPECT_EQ(kTestUsername, controller()->GetCurrentForms()[0]->username_value); | 301 EXPECT_EQ(kTestUsername, controller()->GetCurrentForms()[0]->username_value); |
301 | 302 |
302 // Controller should store a separate copy of the form as it doesn't own it. | 303 // Controller should store a separate copy of the form as it doesn't own it. |
303 EXPECT_NE(test_form_ptr, controller()->GetCurrentForms()[0]); | 304 EXPECT_NE(test_form_ptr, controller()->GetCurrentForms()[0]); |
304 | 305 |
305 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 306 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
306 } | 307 } |
307 | 308 |
308 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmitted) { | 309 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmitted) { |
309 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 310 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
310 CreateFormManager()); | 311 CreateFormManager()); |
311 test_form_manager->ProvisionallySave( | 312 test_form_manager->ProvisionallySave( |
312 test_local_form(), | 313 test_local_form(), |
313 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 314 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
314 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 315 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
315 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 316 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
316 controller()->GetState()); | 317 controller()->GetState()); |
317 EXPECT_TRUE(controller()->opened_bubble()); | 318 EXPECT_TRUE(controller()->opened_bubble()); |
318 EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); | 319 EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); |
319 | 320 |
320 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 321 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
321 } | 322 } |
322 | 323 |
323 TEST_F(ManagePasswordsUIControllerTest, BlacklistedFormPasswordSubmitted) { | 324 TEST_F(ManagePasswordsUIControllerTest, BlacklistedFormPasswordSubmitted) { |
324 autofill::PasswordForm blacklisted; | 325 autofill::PasswordForm blacklisted; |
325 blacklisted.origin = test_local_form().origin; | 326 blacklisted.origin = test_local_form().origin; |
326 blacklisted.signon_realm = blacklisted.origin.spec(); | 327 blacklisted.signon_realm = blacklisted.origin.spec(); |
327 blacklisted.blacklisted_by_user = true; | 328 blacklisted.blacklisted_by_user = true; |
328 ScopedVector<autofill::PasswordForm> stored_forms; | 329 ScopedVector<autofill::PasswordForm> stored_forms; |
329 stored_forms.push_back(new autofill::PasswordForm(blacklisted)); | 330 stored_forms.push_back(new autofill::PasswordForm(blacklisted)); |
330 scoped_ptr<password_manager::PasswordFormManager> test_form_manager = | 331 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager = |
331 CreateFormManagerWithBestMatches(test_local_form(), | 332 CreateFormManagerWithBestMatches(test_local_form(), |
332 std::move(stored_forms)); | 333 std::move(stored_forms)); |
333 | 334 |
334 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 335 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
335 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 336 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
336 controller()->GetState()); | 337 controller()->GetState()); |
337 EXPECT_FALSE(controller()->opened_bubble()); | 338 EXPECT_FALSE(controller()->opened_bubble()); |
338 | 339 |
339 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 340 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
340 } | 341 } |
341 | 342 |
342 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedBubbleSuppressed) { | 343 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedBubbleSuppressed) { |
343 CreateSmartBubbleFieldTrial(); | 344 CreateSmartBubbleFieldTrial(); |
344 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 345 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
345 CreateFormManager()); | 346 CreateFormManager()); |
346 password_manager::InteractionsStats stats; | 347 password_manager::InteractionsStats stats; |
347 stats.origin_domain = test_local_form().origin.GetOrigin(); | 348 stats.origin_domain = test_local_form().origin.GetOrigin(); |
348 stats.username_value = test_local_form().username_value; | 349 stats.username_value = test_local_form().username_value; |
349 stats.dismissal_count = kGreatDissmisalCount; | 350 stats.dismissal_count = kGreatDissmisalCount; |
350 auto interactions(make_scoped_ptr( | 351 auto interactions(base::WrapUnique( |
351 new std::vector<scoped_ptr<password_manager::InteractionsStats>>)); | 352 new std::vector<std::unique_ptr<password_manager::InteractionsStats>>)); |
352 interactions->push_back( | 353 interactions->push_back( |
353 make_scoped_ptr(new password_manager::InteractionsStats(stats))); | 354 base::WrapUnique(new password_manager::InteractionsStats(stats))); |
354 test_form_manager->OnGetSiteStatistics(std::move(interactions)); | 355 test_form_manager->OnGetSiteStatistics(std::move(interactions)); |
355 test_form_manager->ProvisionallySave( | 356 test_form_manager->ProvisionallySave( |
356 test_local_form(), | 357 test_local_form(), |
357 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 358 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
358 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 359 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
359 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 360 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
360 controller()->GetState()); | 361 controller()->GetState()); |
361 EXPECT_FALSE(controller()->opened_bubble()); | 362 EXPECT_FALSE(controller()->opened_bubble()); |
362 ASSERT_TRUE(controller()->GetCurrentInteractionStats()); | 363 ASSERT_TRUE(controller()->GetCurrentInteractionStats()); |
363 EXPECT_EQ(stats, *controller()->GetCurrentInteractionStats()); | 364 EXPECT_EQ(stats, *controller()->GetCurrentInteractionStats()); |
364 | 365 |
365 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 366 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
366 variations::testing::ClearAllVariationParams(); | 367 variations::testing::ClearAllVariationParams(); |
367 } | 368 } |
368 | 369 |
369 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedBubbleNotSuppressed) { | 370 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedBubbleNotSuppressed) { |
370 CreateSmartBubbleFieldTrial(); | 371 CreateSmartBubbleFieldTrial(); |
371 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 372 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
372 CreateFormManager()); | 373 CreateFormManager()); |
373 password_manager::InteractionsStats stats; | 374 password_manager::InteractionsStats stats; |
374 stats.origin_domain = test_local_form().origin.GetOrigin(); | 375 stats.origin_domain = test_local_form().origin.GetOrigin(); |
375 stats.username_value = base::ASCIIToUTF16("not my username"); | 376 stats.username_value = base::ASCIIToUTF16("not my username"); |
376 stats.dismissal_count = kGreatDissmisalCount; | 377 stats.dismissal_count = kGreatDissmisalCount; |
377 auto interactions(make_scoped_ptr( | 378 auto interactions(base::WrapUnique( |
378 new std::vector<scoped_ptr<password_manager::InteractionsStats>>)); | 379 new std::vector<std::unique_ptr<password_manager::InteractionsStats>>)); |
379 interactions->push_back( | 380 interactions->push_back( |
380 make_scoped_ptr(new password_manager::InteractionsStats(stats))); | 381 base::WrapUnique(new password_manager::InteractionsStats(stats))); |
381 test_form_manager->OnGetSiteStatistics(std::move(interactions)); | 382 test_form_manager->OnGetSiteStatistics(std::move(interactions)); |
382 test_form_manager->ProvisionallySave( | 383 test_form_manager->ProvisionallySave( |
383 test_local_form(), | 384 test_local_form(), |
384 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 385 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
385 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 386 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
386 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 387 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
387 controller()->GetState()); | 388 controller()->GetState()); |
388 EXPECT_TRUE(controller()->opened_bubble()); | 389 EXPECT_TRUE(controller()->opened_bubble()); |
389 EXPECT_FALSE(controller()->GetCurrentInteractionStats()); | 390 EXPECT_FALSE(controller()->GetCurrentInteractionStats()); |
390 | 391 |
391 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 392 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
392 variations::testing::ClearAllVariationParams(); | 393 variations::testing::ClearAllVariationParams(); |
393 } | 394 } |
394 | 395 |
395 TEST_F(ManagePasswordsUIControllerTest, PasswordSaved) { | 396 TEST_F(ManagePasswordsUIControllerTest, PasswordSaved) { |
396 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 397 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
397 CreateFormManager()); | 398 CreateFormManager()); |
398 test_form_manager->ProvisionallySave( | 399 test_form_manager->ProvisionallySave( |
399 test_local_form(), | 400 test_local_form(), |
400 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 401 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
401 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 402 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
402 | 403 |
403 controller()->SavePassword(); | 404 controller()->SavePassword(); |
404 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 405 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
405 } | 406 } |
406 | 407 |
407 TEST_F(ManagePasswordsUIControllerTest, PasswordBlacklisted) { | 408 TEST_F(ManagePasswordsUIControllerTest, PasswordBlacklisted) { |
408 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 409 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
409 CreateFormManager()); | 410 CreateFormManager()); |
410 test_form_manager->ProvisionallySave( | 411 test_form_manager->ProvisionallySave( |
411 test_local_form(), | 412 test_local_form(), |
412 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 413 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
413 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 414 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
414 | 415 |
415 controller()->NeverSavePassword(); | 416 controller()->NeverSavePassword(); |
416 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 417 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
417 } | 418 } |
418 | 419 |
419 TEST_F(ManagePasswordsUIControllerTest, NormalNavigations) { | 420 TEST_F(ManagePasswordsUIControllerTest, NormalNavigations) { |
420 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 421 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
421 CreateFormManager()); | 422 CreateFormManager()); |
422 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 423 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
423 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 424 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
424 | 425 |
425 // Fake-navigate. We expect the bubble's state to persist so a user reasonably | 426 // Fake-navigate. We expect the bubble's state to persist so a user reasonably |
426 // has been able to interact with the bubble. This happens on | 427 // has been able to interact with the bubble. This happens on |
427 // `accounts.google.com`, for instance. | 428 // `accounts.google.com`, for instance. |
428 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), | 429 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), |
429 content::FrameNavigateParams()); | 430 content::FrameNavigateParams()); |
430 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 431 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
431 controller()->GetState()); | 432 controller()->GetState()); |
432 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 433 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
433 } | 434 } |
434 | 435 |
435 TEST_F(ManagePasswordsUIControllerTest, NormalNavigationsClosedBubble) { | 436 TEST_F(ManagePasswordsUIControllerTest, NormalNavigationsClosedBubble) { |
436 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 437 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
437 CreateFormManager()); | 438 CreateFormManager()); |
438 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 439 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
439 controller()->SavePassword(); | 440 controller()->SavePassword(); |
440 controller()->OnBubbleHidden(); | 441 controller()->OnBubbleHidden(); |
441 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 442 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
442 | 443 |
443 // Fake-navigate. There is no bubble, reset the state. | 444 // Fake-navigate. There is no bubble, reset the state. |
444 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), | 445 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), |
445 content::FrameNavigateParams()); | 446 content::FrameNavigateParams()); |
446 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); | 447 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
447 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); | 448 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); |
448 } | 449 } |
449 | 450 |
450 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedToNonWebbyURL) { | 451 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedToNonWebbyURL) { |
451 // Navigate to a non-webby URL, then see what happens! | 452 // Navigate to a non-webby URL, then see what happens! |
452 content::WebContentsTester::For(web_contents()) | 453 content::WebContentsTester::For(web_contents()) |
453 ->NavigateAndCommit(GURL("chrome://sign-in")); | 454 ->NavigateAndCommit(GURL("chrome://sign-in")); |
454 | 455 |
455 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 456 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
456 CreateFormManager()); | 457 CreateFormManager()); |
457 test_form_manager->ProvisionallySave( | 458 test_form_manager->ProvisionallySave( |
458 test_local_form(), | 459 test_local_form(), |
459 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 460 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
460 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 461 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
461 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); | 462 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
462 EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); | 463 EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); |
463 | 464 |
464 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); | 465 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); |
465 } | 466 } |
466 | 467 |
467 TEST_F(ManagePasswordsUIControllerTest, BlacklistedElsewhere) { | 468 TEST_F(ManagePasswordsUIControllerTest, BlacklistedElsewhere) { |
468 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); | 469 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); |
469 autofill::PasswordFormMap map; | 470 autofill::PasswordFormMap map; |
470 map.insert(std::make_pair( | 471 map.insert(std::make_pair( |
471 kTestUsername, | 472 kTestUsername, |
472 make_scoped_ptr(new autofill::PasswordForm(test_local_form())))); | 473 base::WrapUnique(new autofill::PasswordForm(test_local_form())))); |
473 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); | 474 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); |
474 | 475 |
475 test_local_form().blacklisted_by_user = true; | 476 test_local_form().blacklisted_by_user = true; |
476 password_manager::PasswordStoreChange change( | 477 password_manager::PasswordStoreChange change( |
477 password_manager::PasswordStoreChange::ADD, test_local_form()); | 478 password_manager::PasswordStoreChange::ADD, test_local_form()); |
478 password_manager::PasswordStoreChangeList list(1, change); | 479 password_manager::PasswordStoreChangeList list(1, change); |
479 controller()->OnLoginsChanged(list); | 480 controller()->OnLoginsChanged(list); |
480 | 481 |
481 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); | 482 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
482 EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); | 483 EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); |
483 | 484 |
484 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 485 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
485 } | 486 } |
486 | 487 |
487 TEST_F(ManagePasswordsUIControllerTest, AutomaticPasswordSave) { | 488 TEST_F(ManagePasswordsUIControllerTest, AutomaticPasswordSave) { |
488 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 489 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
489 CreateFormManager()); | 490 CreateFormManager()); |
490 | 491 |
491 controller()->OnAutomaticPasswordSave(std::move(test_form_manager)); | 492 controller()->OnAutomaticPasswordSave(std::move(test_form_manager)); |
492 EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, controller()->GetState()); | 493 EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, controller()->GetState()); |
493 | 494 |
494 controller()->OnBubbleHidden(); | 495 controller()->OnBubbleHidden(); |
495 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 496 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
496 } | 497 } |
497 | 498 |
498 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocal) { | 499 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocal) { |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
600 Return(&dialog_prompt())); | 601 Return(&dialog_prompt())); |
601 EXPECT_CALL(dialog_prompt(), ShowAutoSigninPrompt()); | 602 EXPECT_CALL(dialog_prompt(), ShowAutoSigninPrompt()); |
602 controller()->OnPromptEnableAutoSignin(); | 603 controller()->OnPromptEnableAutoSignin(); |
603 | 604 |
604 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); | 605 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
605 EXPECT_CALL(dialog_prompt(), ControllerGone()); | 606 EXPECT_CALL(dialog_prompt(), ControllerGone()); |
606 } | 607 } |
607 | 608 |
608 TEST_F(ManagePasswordsUIControllerTest, AutoSigninFirstRunAfterAutofill) { | 609 TEST_F(ManagePasswordsUIControllerTest, AutoSigninFirstRunAfterAutofill) { |
609 // Setup the managed state first. | 610 // Setup the managed state first. |
610 scoped_ptr<autofill::PasswordForm> test_form( | 611 std::unique_ptr<autofill::PasswordForm> test_form( |
611 new autofill::PasswordForm(test_local_form())); | 612 new autofill::PasswordForm(test_local_form())); |
612 autofill::PasswordForm* test_form_ptr = test_form.get(); | 613 autofill::PasswordForm* test_form_ptr = test_form.get(); |
613 const base::string16 kTestUsername = test_form->username_value; | 614 const base::string16 kTestUsername = test_form->username_value; |
614 autofill::PasswordFormMap map; | 615 autofill::PasswordFormMap map; |
615 map.insert(std::make_pair(kTestUsername, std::move(test_form))); | 616 map.insert(std::make_pair(kTestUsername, std::move(test_form))); |
616 controller()->OnPasswordAutofilled(map, test_form_ptr->origin, nullptr); | 617 controller()->OnPasswordAutofilled(map, test_form_ptr->origin, nullptr); |
617 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); | 618 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
618 | 619 |
619 // Pop up the autosignin promo. The state should stay intact. | 620 // Pop up the autosignin promo. The state should stay intact. |
620 EXPECT_CALL(*controller(), CreateAutoSigninPrompt(_)).WillOnce( | 621 EXPECT_CALL(*controller(), CreateAutoSigninPrompt(_)).WillOnce( |
(...skipping 23 matching lines...) Expand all Loading... |
644 ASSERT_TRUE(testing::Mock::VerifyAndClearExpectations(&dialog_prompt())); | 645 ASSERT_TRUE(testing::Mock::VerifyAndClearExpectations(&dialog_prompt())); |
645 EXPECT_CALL(dialog_prompt(), ControllerGone()); | 646 EXPECT_CALL(dialog_prompt(), ControllerGone()); |
646 } | 647 } |
647 | 648 |
648 TEST_F(ManagePasswordsUIControllerTest, AutofillDuringAutoSignin) { | 649 TEST_F(ManagePasswordsUIControllerTest, AutofillDuringAutoSignin) { |
649 ScopedVector<autofill::PasswordForm> local_credentials; | 650 ScopedVector<autofill::PasswordForm> local_credentials; |
650 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); | 651 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); |
651 controller()->OnAutoSignin(std::move(local_credentials), | 652 controller()->OnAutoSignin(std::move(local_credentials), |
652 test_local_form().origin); | 653 test_local_form().origin); |
653 ExpectIconAndControllerStateIs(password_manager::ui::AUTO_SIGNIN_STATE); | 654 ExpectIconAndControllerStateIs(password_manager::ui::AUTO_SIGNIN_STATE); |
654 scoped_ptr<autofill::PasswordForm> test_form( | 655 std::unique_ptr<autofill::PasswordForm> test_form( |
655 new autofill::PasswordForm(test_local_form())); | 656 new autofill::PasswordForm(test_local_form())); |
656 autofill::PasswordFormMap map; | 657 autofill::PasswordFormMap map; |
657 base::string16 kTestUsername = test_form->username_value; | 658 base::string16 kTestUsername = test_form->username_value; |
658 map.insert(std::make_pair(kTestUsername, std::move(test_form))); | 659 map.insert(std::make_pair(kTestUsername, std::move(test_form))); |
659 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); | 660 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); |
660 | 661 |
661 ExpectIconAndControllerStateIs(password_manager::ui::AUTO_SIGNIN_STATE); | 662 ExpectIconAndControllerStateIs(password_manager::ui::AUTO_SIGNIN_STATE); |
662 } | 663 } |
663 | 664 |
664 TEST_F(ManagePasswordsUIControllerTest, InactiveOnPSLMatched) { | 665 TEST_F(ManagePasswordsUIControllerTest, InactiveOnPSLMatched) { |
665 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); | 666 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); |
666 autofill::PasswordFormMap map; | 667 autofill::PasswordFormMap map; |
667 scoped_ptr<autofill::PasswordForm> psl_matched_test_form( | 668 std::unique_ptr<autofill::PasswordForm> psl_matched_test_form( |
668 new autofill::PasswordForm(test_local_form())); | 669 new autofill::PasswordForm(test_local_form())); |
669 psl_matched_test_form->is_public_suffix_match = true; | 670 psl_matched_test_form->is_public_suffix_match = true; |
670 map.insert(std::make_pair(kTestUsername, std::move(psl_matched_test_form))); | 671 map.insert(std::make_pair(kTestUsername, std::move(psl_matched_test_form))); |
671 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); | 672 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); |
672 | 673 |
673 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); | 674 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
674 } | 675 } |
675 | 676 |
676 TEST_F(ManagePasswordsUIControllerTest, UpdatePasswordSubmitted) { | 677 TEST_F(ManagePasswordsUIControllerTest, UpdatePasswordSubmitted) { |
677 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 678 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
678 CreateFormManager()); | 679 CreateFormManager()); |
679 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); | 680 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); |
680 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, | 681 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, |
681 controller()->GetState()); | 682 controller()->GetState()); |
682 | 683 |
683 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); | 684 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); |
684 } | 685 } |
685 | 686 |
686 TEST_F(ManagePasswordsUIControllerTest, PasswordUpdated) { | 687 TEST_F(ManagePasswordsUIControllerTest, PasswordUpdated) { |
687 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 688 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
688 CreateFormManager()); | 689 CreateFormManager()); |
689 test_form_manager->ProvisionallySave( | 690 test_form_manager->ProvisionallySave( |
690 test_local_form(), | 691 test_local_form(), |
691 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 692 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
692 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); | 693 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); |
693 | 694 |
694 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); | 695 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); |
695 controller()->UpdatePassword(autofill::PasswordForm()); | 696 controller()->UpdatePassword(autofill::PasswordForm()); |
696 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 697 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
697 } | 698 } |
698 | 699 |
699 TEST_F(ManagePasswordsUIControllerTest, SavePendingStatePasswordAutofilled) { | 700 TEST_F(ManagePasswordsUIControllerTest, SavePendingStatePasswordAutofilled) { |
700 TestNotChangingStateOnAutofill(password_manager::ui::PENDING_PASSWORD_STATE); | 701 TestNotChangingStateOnAutofill(password_manager::ui::PENDING_PASSWORD_STATE); |
701 } | 702 } |
702 | 703 |
703 TEST_F(ManagePasswordsUIControllerTest, UpdatePendingStatePasswordAutofilled) { | 704 TEST_F(ManagePasswordsUIControllerTest, UpdatePendingStatePasswordAutofilled) { |
704 TestNotChangingStateOnAutofill( | 705 TestNotChangingStateOnAutofill( |
705 password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); | 706 password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); |
706 } | 707 } |
707 | 708 |
708 TEST_F(ManagePasswordsUIControllerTest, ConfirmationStatePasswordAutofilled) { | 709 TEST_F(ManagePasswordsUIControllerTest, ConfirmationStatePasswordAutofilled) { |
709 TestNotChangingStateOnAutofill(password_manager::ui::CONFIRMATION_STATE); | 710 TestNotChangingStateOnAutofill(password_manager::ui::CONFIRMATION_STATE); |
710 } | 711 } |
OLD | NEW |