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

Side by Side Diff: chrome/browser/ui/views/passwords/password_dialog_view_browsertest.cc

Issue 1832933002: Update the |skip_zero_click| flag of a credential when selected in the account chooser. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comments Created 4 years, 8 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "base/strings/utf_string_conversions.h" 5 #include "base/strings/utf_string_conversions.h"
6 #include "chrome/browser/password_manager/chrome_password_manager_client.h" 6 #include "chrome/browser/password_manager/chrome_password_manager_client.h"
7 #include "chrome/browser/profiles/profile.h" 7 #include "chrome/browser/profiles/profile.h"
8 #include "chrome/browser/ui/browser.h" 8 #include "chrome/browser/ui/browser.h"
9 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h" 9 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h"
10 #include "chrome/browser/ui/tabs/tab_strip_model.h" 10 #include "chrome/browser/ui/tabs/tab_strip_model.h"
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 115
116 content::WebContents* SetupTabWithTestController(Browser* browser); 116 content::WebContents* SetupTabWithTestController(Browser* browser);
117 117
118 TestManagePasswordsUIController* controller() const { return controller_; } 118 TestManagePasswordsUIController* controller() const { return controller_; }
119 119
120 ChromePasswordManagerClient* client() const { 120 ChromePasswordManagerClient* client() const {
121 return ChromePasswordManagerClient::FromWebContents( 121 return ChromePasswordManagerClient::FromWebContents(
122 browser()->tab_strip_model()->GetActiveWebContents()); 122 browser()->tab_strip_model()->GetActiveWebContents());
123 } 123 }
124 124
125 MOCK_METHOD1(OnChooseCredential, 125 MOCK_METHOD1(OnChooseCredential, void(const autofill::PasswordForm*));
126 void(const password_manager::CredentialInfo&));
127 126
128 private: 127 private:
129 TestManagePasswordsUIController* controller_; 128 TestManagePasswordsUIController* controller_;
130 }; 129 };
131 130
132 void PasswordDialogViewTest::SetUpOnMainThread() { 131 void PasswordDialogViewTest::SetUpOnMainThread() {
133 SetupTabWithTestController(browser()); 132 SetupTabWithTestController(browser());
134 } 133 }
135 134
136 void PasswordDialogViewTest::SetupChooseCredentials( 135 void PasswordDialogViewTest::SetupChooseCredentials(
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 NULL, base::Bind(&TestURLFetcherCallback::CreateURLFetcher, 188 NULL, base::Bind(&TestURLFetcherCallback::CreateURLFetcher,
190 base::Unretained(&url_callback))); 189 base::Unretained(&url_callback)));
191 factory.SetFakeResponse(icon_url, std::string(), net::HTTP_OK, 190 factory.SetFakeResponse(icon_url, std::string(), net::HTTP_OK,
192 net::URLRequestStatus::FAILED); 191 net::URLRequestStatus::FAILED);
193 EXPECT_CALL(url_callback, OnRequestDone(icon_url)); 192 EXPECT_CALL(url_callback, OnRequestDone(icon_url));
194 193
195 SetupChooseCredentials(std::move(local_credentials), 194 SetupChooseCredentials(std::move(local_credentials),
196 ScopedVector<autofill::PasswordForm>(), origin); 195 ScopedVector<autofill::PasswordForm>(), origin);
197 ASSERT_TRUE(controller()->current_account_chooser()); 196 ASSERT_TRUE(controller()->current_account_chooser());
198 AccountChooserDialogView* dialog = controller()->current_account_chooser(); 197 AccountChooserDialogView* dialog = controller()->current_account_chooser();
199 EXPECT_CALL(*this, 198 EXPECT_CALL(*this, OnChooseCredential(nullptr));
200 OnChooseCredential(Field(
201 &password_manager::CredentialInfo::type,
202 password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY)));
203 EXPECT_CALL(*controller(), OnDialogClosed()); 199 EXPECT_CALL(*controller(), OnDialogClosed());
204 dialog->GetWidget()->Close(); 200 dialog->GetWidget()->Close();
205 201
206 EXPECT_FALSE(controller()->current_autosignin_prompt()); 202 EXPECT_FALSE(controller()->current_autosignin_prompt());
207 } 203 }
208 204
209 IN_PROC_BROWSER_TEST_F( 205 IN_PROC_BROWSER_TEST_F(
210 PasswordDialogViewTest, 206 PasswordDialogViewTest,
211 PopupAccountChooserWithMultipleCredentialsReturnNonEmpty) { 207 PopupAccountChooserWithMultipleCredentialsReturnNonEmpty) {
212 GURL origin("https://example.com"); 208 GURL origin("https://example.com");
(...skipping 10 matching lines...) Expand all
223 form.federation_origin = url::Origin(GURL("https://google.com/federation")); 219 form.federation_origin = url::Origin(GURL("https://google.com/federation"));
224 local_credentials.push_back(new autofill::PasswordForm(form)); 220 local_credentials.push_back(new autofill::PasswordForm(form));
225 221
226 SetupChooseCredentials(std::move(local_credentials), 222 SetupChooseCredentials(std::move(local_credentials),
227 ScopedVector<autofill::PasswordForm>(), origin); 223 ScopedVector<autofill::PasswordForm>(), origin);
228 ASSERT_TRUE(controller()->current_account_chooser()); 224 ASSERT_TRUE(controller()->current_account_chooser());
229 225
230 // After picking a credential, we should pass it back to the caller via the 226 // After picking a credential, we should pass it back to the caller via the
231 // callback, but we should not pop up the autosignin prompt as there were 227 // callback, but we should not pop up the autosignin prompt as there were
232 // multiple credentials available. 228 // multiple credentials available.
233 EXPECT_CALL( 229 EXPECT_CALL(*this, OnChooseCredential(testing::Pointee(form)));
234 *this, OnChooseCredential(Field(
235 &password_manager::CredentialInfo::type,
236 password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED)));
237 EXPECT_TRUE( 230 EXPECT_TRUE(
238 password_bubble_experiment::ShouldShowAutoSignInPromptFirstRunExperience( 231 password_bubble_experiment::ShouldShowAutoSignInPromptFirstRunExperience(
239 browser()->profile()->GetPrefs())); 232 browser()->profile()->GetPrefs()));
240 controller()->ChooseCredential( 233 controller()->ChooseCredential(
241 form, password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD); 234 form, password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD);
242 EXPECT_FALSE(controller()->current_autosignin_prompt()); 235 EXPECT_FALSE(controller()->current_autosignin_prompt());
243 } 236 }
244 237
245 IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest, 238 IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest,
246 PopupAccountChooserWithSingleCredentialReturnEmpty) { 239 PopupAccountChooserWithSingleCredentialReturnEmpty) {
247 GURL origin("https://example.com"); 240 GURL origin("https://example.com");
248 ScopedVector<autofill::PasswordForm> local_credentials; 241 ScopedVector<autofill::PasswordForm> local_credentials;
249 autofill::PasswordForm form; 242 autofill::PasswordForm form;
250 form.origin = origin; 243 form.origin = origin;
251 form.display_name = base::ASCIIToUTF16("Peter"); 244 form.display_name = base::ASCIIToUTF16("Peter");
252 form.username_value = base::ASCIIToUTF16("peter@pan.test"); 245 form.username_value = base::ASCIIToUTF16("peter@pan.test");
253 local_credentials.push_back(new autofill::PasswordForm(form)); 246 local_credentials.push_back(new autofill::PasswordForm(form));
254 247
255 SetupChooseCredentials(std::move(local_credentials), 248 SetupChooseCredentials(std::move(local_credentials),
256 ScopedVector<autofill::PasswordForm>(), origin); 249 ScopedVector<autofill::PasswordForm>(), origin);
257 250
258 EXPECT_TRUE(controller()->current_account_chooser()); 251 EXPECT_TRUE(controller()->current_account_chooser());
259 AccountChooserDialogView* dialog = controller()->current_account_chooser(); 252 AccountChooserDialogView* dialog = controller()->current_account_chooser();
260 EXPECT_CALL(*this, 253 EXPECT_CALL(*this, OnChooseCredential(nullptr));
261 OnChooseCredential(Field(
262 &password_manager::CredentialInfo::type,
263 password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY)));
264 EXPECT_CALL(*controller(), OnDialogClosed()); 254 EXPECT_CALL(*controller(), OnDialogClosed());
265 dialog->GetWidget()->Close(); 255 dialog->GetWidget()->Close();
266 EXPECT_FALSE(controller()->current_autosignin_prompt()); 256 EXPECT_FALSE(controller()->current_autosignin_prompt());
267 } 257 }
268 258
269 IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest, 259 IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest,
270 PopupAccountChooserWithSingleCredentialReturnNonEmpty) { 260 PopupAccountChooserWithSingleCredentialReturnNonEmpty) {
271 GURL origin("https://example.com"); 261 GURL origin("https://example.com");
272 ScopedVector<autofill::PasswordForm> local_credentials; 262 ScopedVector<autofill::PasswordForm> local_credentials;
273 autofill::PasswordForm form; 263 autofill::PasswordForm form;
274 form.origin = origin; 264 form.origin = origin;
275 form.display_name = base::ASCIIToUTF16("Peter"); 265 form.display_name = base::ASCIIToUTF16("Peter");
276 form.username_value = base::ASCIIToUTF16("peter@pan.test"); 266 form.username_value = base::ASCIIToUTF16("peter@pan.test");
277 local_credentials.push_back(new autofill::PasswordForm(form)); 267 local_credentials.push_back(new autofill::PasswordForm(form));
278 268
279 SetupChooseCredentials(std::move(local_credentials), 269 SetupChooseCredentials(std::move(local_credentials),
280 ScopedVector<autofill::PasswordForm>(), origin); 270 ScopedVector<autofill::PasswordForm>(), origin);
281 271
282 EXPECT_TRUE(controller()->current_account_chooser()); 272 EXPECT_TRUE(controller()->current_account_chooser());
283 273
284 // After picking a credential, we should pass it back to the caller via the 274 // After picking a credential, we should pass it back to the caller via the
285 // callback, and pop up the autosignin prompt iff we should show it. 275 // callback, and pop up the autosignin prompt iff we should show it.
286 EXPECT_CALL(*this, 276 EXPECT_CALL(*this, OnChooseCredential(testing::Pointee(form)));
287 OnChooseCredential(Field(
288 &password_manager::CredentialInfo::type,
289 password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD)));
290 EXPECT_TRUE( 277 EXPECT_TRUE(
291 password_bubble_experiment::ShouldShowAutoSignInPromptFirstRunExperience( 278 password_bubble_experiment::ShouldShowAutoSignInPromptFirstRunExperience(
292 browser()->profile()->GetPrefs())); 279 browser()->profile()->GetPrefs()));
293 controller()->ChooseCredential( 280 controller()->ChooseCredential(
294 form, password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD); 281 form, password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD);
295 282
296 EXPECT_TRUE(controller()->current_autosignin_prompt()); 283 EXPECT_TRUE(controller()->current_autosignin_prompt());
297 } 284 }
298 285
299 IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest, 286 IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest,
300 PopupAccountChooserWithDisabledAutoSignin) { 287 PopupAccountChooserWithDisabledAutoSignin) {
301 EXPECT_TRUE( 288 EXPECT_TRUE(
302 password_bubble_experiment::ShouldShowAutoSignInPromptFirstRunExperience( 289 password_bubble_experiment::ShouldShowAutoSignInPromptFirstRunExperience(
303 browser()->profile()->GetPrefs())); 290 browser()->profile()->GetPrefs()));
304 GURL origin("https://example.com"); 291 GURL origin("https://example.com");
305 ScopedVector<autofill::PasswordForm> local_credentials; 292 ScopedVector<autofill::PasswordForm> local_credentials;
306 autofill::PasswordForm form; 293 autofill::PasswordForm form;
307 form.origin = origin; 294 form.origin = origin;
308 form.display_name = base::ASCIIToUTF16("Peter"); 295 form.display_name = base::ASCIIToUTF16("Peter");
309 form.username_value = base::ASCIIToUTF16("peter@pan.test"); 296 form.username_value = base::ASCIIToUTF16("peter@pan.test");
310 local_credentials.push_back(new autofill::PasswordForm(form)); 297 local_credentials.push_back(new autofill::PasswordForm(form));
311 298
312 SetupChooseCredentials(std::move(local_credentials), 299 SetupChooseCredentials(std::move(local_credentials),
313 ScopedVector<autofill::PasswordForm>(), origin); 300 ScopedVector<autofill::PasswordForm>(), origin);
314 301
315 EXPECT_TRUE(controller()->current_account_chooser()); 302 EXPECT_TRUE(controller()->current_account_chooser());
316 303
317 // After picking a credential, we should pass it back to the caller via the 304 // After picking a credential, we should pass it back to the caller via the
318 // callback, and pop up the autosignin prompt iff we should show it. 305 // callback, and pop up the autosignin prompt iff we should show it.
319 EXPECT_CALL(*this, 306 EXPECT_CALL(*this, OnChooseCredential(testing::Pointee(form)));
320 OnChooseCredential(Field(
321 &password_manager::CredentialInfo::type,
322 password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD)));
323 browser()->profile()->GetPrefs()->SetBoolean( 307 browser()->profile()->GetPrefs()->SetBoolean(
324 password_manager::prefs::kCredentialsEnableAutosignin, false); 308 password_manager::prefs::kCredentialsEnableAutosignin, false);
325 controller()->ChooseCredential( 309 controller()->ChooseCredential(
326 form, password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD); 310 form, password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD);
327 311
328 // The first run experience isn't shown because the setting is off. 312 // The first run experience isn't shown because the setting is off.
329 EXPECT_FALSE(controller()->current_autosignin_prompt()); 313 EXPECT_FALSE(controller()->current_autosignin_prompt());
330 } 314 }
331 315
332 IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest, 316 IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest,
(...skipping 17 matching lines...) Expand all
350 ChromePasswordManagerClient* client = 334 ChromePasswordManagerClient* client =
351 ChromePasswordManagerClient::FromWebContents(tab); 335 ChromePasswordManagerClient::FromWebContents(tab);
352 client->PromptUserToChooseCredentials( 336 client->PromptUserToChooseCredentials(
353 std::move(local_credentials), ScopedVector<autofill::PasswordForm>(), 337 std::move(local_credentials), ScopedVector<autofill::PasswordForm>(),
354 origin, 338 origin,
355 base::Bind(&PasswordDialogViewTest::OnChooseCredential, this)); 339 base::Bind(&PasswordDialogViewTest::OnChooseCredential, this));
356 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, 340 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE,
357 controller()->GetState()); 341 controller()->GetState());
358 EXPECT_TRUE(controller()->current_account_chooser()); 342 EXPECT_TRUE(controller()->current_account_chooser());
359 343
360 EXPECT_CALL(*this, 344 EXPECT_CALL(*this, OnChooseCredential(testing::Pointee(form)));
361 OnChooseCredential(Field(
362 &password_manager::CredentialInfo::type,
363 password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD)));
364 controller()->ChooseCredential( 345 controller()->ChooseCredential(
365 form, password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD); 346 form, password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD);
366 347
367 // The first run experience isn't shown because of Incognito. 348 // The first run experience isn't shown because of Incognito.
368 EXPECT_FALSE(controller()->current_autosignin_prompt()); 349 EXPECT_FALSE(controller()->current_autosignin_prompt());
369 } 350 }
370 351
371 IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest, PopupAutoSigninPrompt) { 352 IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest, PopupAutoSigninPrompt) {
372 EXPECT_TRUE( 353 EXPECT_TRUE(
373 password_bubble_experiment::ShouldShowAutoSignInPromptFirstRunExperience( 354 password_bubble_experiment::ShouldShowAutoSignInPromptFirstRunExperience(
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 password_manager::prefs::kCredentialsEnableAutosignin, true); 409 password_manager::prefs::kCredentialsEnableAutosignin, true);
429 410
430 // Successful login with the same form after block will prompt: 411 // Successful login with the same form after block will prompt:
431 blocked_form.reset(new autofill::PasswordForm(form)); 412 blocked_form.reset(new autofill::PasswordForm(form));
432 client()->NotifyUserCouldBeAutoSignedIn(std::move(blocked_form)); 413 client()->NotifyUserCouldBeAutoSignedIn(std::move(blocked_form));
433 client()->NotifySuccessfulLoginWithExistingPassword(form); 414 client()->NotifySuccessfulLoginWithExistingPassword(form);
434 ASSERT_TRUE(controller()->current_autosignin_prompt()); 415 ASSERT_TRUE(controller()->current_autosignin_prompt());
435 } 416 }
436 417
437 } // namespace 418 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698