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

Side by Side Diff: components/password_manager/core/browser/password_form_manager_unittest.cc

Issue 1730313004: Remove PasswordStore::AuthorizationPromptPolicy (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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 "components/password_manager/core/browser/password_form_manager.h" 5 #include "components/password_manager/core/browser/password_form_manager.h"
6 6
7 #include <map> 7 #include <map>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 334
335 void TearDown() override { 335 void TearDown() override {
336 if (mock_store_.get()) 336 if (mock_store_.get())
337 mock_store_->ShutdownOnUIThread(); 337 mock_store_->ShutdownOnUIThread();
338 } 338 }
339 339
340 MockPasswordStore* mock_store() const { return mock_store_.get(); } 340 MockPasswordStore* mock_store() const { return mock_store_.get(); }
341 341
342 void SimulateMatchingPhase(PasswordFormManager* p, 342 void SimulateMatchingPhase(PasswordFormManager* p,
343 ResultOfSimulatedMatchingMask result) { 343 ResultOfSimulatedMatchingMask result) {
344 const PasswordStore::AuthorizationPromptPolicy auth_policy = 344 EXPECT_CALL(*mock_store(), GetLogins(p->observed_form(), p));
345 PasswordStore::DISALLOW_PROMPT; 345 p->FetchDataFromPasswordStore();
346 EXPECT_CALL(*mock_store(), GetLogins(p->observed_form(), auth_policy, p));
347 p->FetchDataFromPasswordStore(auth_policy);
348 if (result == RESULT_NO_MATCH) { 346 if (result == RESULT_NO_MATCH) {
349 p->OnGetPasswordStoreResults(ScopedVector<PasswordForm>()); 347 p->OnGetPasswordStoreResults(ScopedVector<PasswordForm>());
350 return; 348 return;
351 } 349 }
352 350
353 ScopedVector<PasswordForm> result_form; 351 ScopedVector<PasswordForm> result_form;
354 if (result & RESULT_SAVED_MATCH) { 352 if (result & RESULT_SAVED_MATCH) {
355 result_form.push_back(new PasswordForm(saved_match_)); 353 result_form.push_back(new PasswordForm(saved_match_));
356 } 354 }
357 if (result & RESULT_PSL_MATCH) { 355 if (result & RESULT_PSL_MATCH) {
(...skipping 1024 matching lines...) Expand 10 before | Expand all | Expand 10 after
1382 encountered_form.action = GURL("http://accounts.google.com/Login"); 1380 encountered_form.action = GURL("http://accounts.google.com/Login");
1383 encountered_form.username_element = ASCIIToUTF16("Email"); 1381 encountered_form.username_element = ASCIIToUTF16("Email");
1384 encountered_form.password_element = ASCIIToUTF16("Passwd"); 1382 encountered_form.password_element = ASCIIToUTF16("Passwd");
1385 encountered_form.submit_element = ASCIIToUTF16("signIn"); 1383 encountered_form.submit_element = ASCIIToUTF16("signIn");
1386 1384
1387 EXPECT_CALL(*(client()->mock_driver()), AllowPasswordGenerationForForm(_)); 1385 EXPECT_CALL(*(client()->mock_driver()), AllowPasswordGenerationForForm(_));
1388 1386
1389 PasswordFormManager form_manager(password_manager(), client(), 1387 PasswordFormManager form_manager(password_manager(), client(),
1390 client()->driver(), encountered_form, false); 1388 client()->driver(), encountered_form, false);
1391 1389
1392 const PasswordStore::AuthorizationPromptPolicy auth_policy = 1390 EXPECT_CALL(*mock_store(), GetLogins(encountered_form, &form_manager));
1393 PasswordStore::DISALLOW_PROMPT; 1391 form_manager.FetchDataFromPasswordStore();
1394 EXPECT_CALL(*mock_store(),
1395 GetLogins(encountered_form, auth_policy, &form_manager));
1396 form_manager.FetchDataFromPasswordStore(auth_policy);
1397 1392
1398 // Password store only has these incomplete credentials. 1393 // Password store only has these incomplete credentials.
1399 scoped_ptr<PasswordForm> incomplete_form(new PasswordForm()); 1394 scoped_ptr<PasswordForm> incomplete_form(new PasswordForm());
1400 incomplete_form->origin = GURL("http://accounts.google.com/LoginAuth"); 1395 incomplete_form->origin = GURL("http://accounts.google.com/LoginAuth");
1401 incomplete_form->signon_realm = "http://accounts.google.com/"; 1396 incomplete_form->signon_realm = "http://accounts.google.com/";
1402 incomplete_form->password_value = ASCIIToUTF16("my_password"); 1397 incomplete_form->password_value = ASCIIToUTF16("my_password");
1403 incomplete_form->username_value = ASCIIToUTF16("my_username"); 1398 incomplete_form->username_value = ASCIIToUTF16("my_username");
1404 incomplete_form->preferred = true; 1399 incomplete_form->preferred = true;
1405 incomplete_form->ssl_valid = false; 1400 incomplete_form->ssl_valid = false;
1406 incomplete_form->scheme = PasswordForm::SCHEME_HTML; 1401 incomplete_form->scheme = PasswordForm::SCHEME_HTML;
(...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after
1842 form->origin = GURL(example_url); 1837 form->origin = GURL(example_url);
1843 form->signon_realm = example_url; 1838 form->signon_realm = example_url;
1844 form->action = GURL(example_url); 1839 form->action = GURL(example_url);
1845 form->username_element = ASCIIToUTF16("u"); 1840 form->username_element = ASCIIToUTF16("u");
1846 form->password_element = ASCIIToUTF16("p"); 1841 form->password_element = ASCIIToUTF16("p");
1847 form->submit_element = ASCIIToUTF16("s"); 1842 form->submit_element = ASCIIToUTF16("s");
1848 1843
1849 PasswordFormManager form_manager(password_manager(), client(), 1844 PasswordFormManager form_manager(password_manager(), client(),
1850 client()->driver(), *form, false); 1845 client()->driver(), *form, false);
1851 1846
1852 const PasswordStore::AuthorizationPromptPolicy auth_policy = 1847 EXPECT_CALL(*mock_store(), GetLogins(*form, &form_manager));
1853 PasswordStore::DISALLOW_PROMPT; 1848 form_manager.FetchDataFromPasswordStore();
1854 EXPECT_CALL(*mock_store(), GetLogins(*form, auth_policy, &form_manager));
1855 form_manager.FetchDataFromPasswordStore(auth_policy);
1856 1849
1857 // Suddenly, the frame and its driver disappear. 1850 // Suddenly, the frame and its driver disappear.
1858 client()->KillDriver(); 1851 client()->KillDriver();
1859 1852
1860 ScopedVector<PasswordForm> simulated_results; 1853 ScopedVector<PasswordForm> simulated_results;
1861 simulated_results.push_back(std::move(form)); 1854 simulated_results.push_back(std::move(form));
1862 form_manager.OnGetPasswordStoreResults(std::move(simulated_results)); 1855 form_manager.OnGetPasswordStoreResults(std::move(simulated_results));
1863 } 1856 }
1864 1857
1865 TEST_F(PasswordFormManagerTest, PreferredMatchIsUpToDate) { 1858 TEST_F(PasswordFormManagerTest, PreferredMatchIsUpToDate) {
1866 // Check that preferred_match() is always a member of best_matches(). 1859 // Check that preferred_match() is always a member of best_matches().
1867 const PasswordStore::AuthorizationPromptPolicy auth_policy = 1860 EXPECT_CALL(*mock_store(), GetLogins(*observed_form(), form_manager()));
1868 PasswordStore::DISALLOW_PROMPT; 1861 form_manager()->FetchDataFromPasswordStore();
1869 EXPECT_CALL(*mock_store(),
1870 GetLogins(*observed_form(), auth_policy, form_manager()));
1871 form_manager()->FetchDataFromPasswordStore(auth_policy);
1872 1862
1873 ScopedVector<PasswordForm> simulated_results; 1863 ScopedVector<PasswordForm> simulated_results;
1874 scoped_ptr<PasswordForm> form(new PasswordForm(*observed_form())); 1864 scoped_ptr<PasswordForm> form(new PasswordForm(*observed_form()));
1875 form->username_value = ASCIIToUTF16("username"); 1865 form->username_value = ASCIIToUTF16("username");
1876 form->password_value = ASCIIToUTF16("password1"); 1866 form->password_value = ASCIIToUTF16("password1");
1877 form->preferred = false; 1867 form->preferred = false;
1878 1868
1879 scoped_ptr<PasswordForm> generated_form(new PasswordForm(*form)); 1869 scoped_ptr<PasswordForm> generated_form(new PasswordForm(*form));
1880 generated_form->type = PasswordForm::TYPE_GENERATED; 1870 generated_form->type = PasswordForm::TYPE_GENERATED;
1881 generated_form->password_value = ASCIIToUTF16("password2"); 1871 generated_form->password_value = ASCIIToUTF16("password2");
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
2140 } 2130 }
2141 2131
2142 TEST_F(PasswordFormManagerTest, WipeStoreCopyIfOutdated_BeforeStoreCallback) { 2132 TEST_F(PasswordFormManagerTest, WipeStoreCopyIfOutdated_BeforeStoreCallback) {
2143 PasswordForm form(*saved_match()); 2133 PasswordForm form(*saved_match());
2144 ASSERT_FALSE(form.password_value.empty()); 2134 ASSERT_FALSE(form.password_value.empty());
2145 2135
2146 PasswordFormManager form_manager(password_manager(), client(), 2136 PasswordFormManager form_manager(password_manager(), client(),
2147 client()->driver(), form, false); 2137 client()->driver(), form, false);
2148 2138
2149 // Do not notify the store observer after this GetLogins call. 2139 // Do not notify the store observer after this GetLogins call.
2150 EXPECT_CALL(*mock_store(), GetLogins(_, _, _)); 2140 EXPECT_CALL(*mock_store(), GetLogins(_, _));
2151 form_manager.FetchDataFromPasswordStore(PasswordStore::DISALLOW_PROMPT); 2141 form_manager.FetchDataFromPasswordStore();
2152 2142
2153 PasswordForm submitted_form(form); 2143 PasswordForm submitted_form(form);
2154 submitted_form.password_value += ASCIIToUTF16("add stuff, make it different"); 2144 submitted_form.password_value += ASCIIToUTF16("add stuff, make it different");
2155 form_manager.ProvisionallySave( 2145 form_manager.ProvisionallySave(
2156 submitted_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); 2146 submitted_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES);
2157 2147
2158 base::HistogramTester histogram_tester; 2148 base::HistogramTester histogram_tester;
2159 EXPECT_CALL(*mock_store(), RemoveLogin(_)).Times(0); 2149 EXPECT_CALL(*mock_store(), RemoveLogin(_)).Times(0);
2160 form_manager.WipeStoreCopyIfOutdated(); 2150 form_manager.WipeStoreCopyIfOutdated();
2161 histogram_tester.ExpectUniqueSample("PasswordManager.StoreReadyWhenWiping", 0, 2151 histogram_tester.ExpectUniqueSample("PasswordManager.StoreReadyWhenWiping", 0,
2162 1); 2152 1);
2163 } 2153 }
2164 2154
2165 TEST_F(PasswordFormManagerTest, WipeStoreCopyIfOutdated_NotOutdated) { 2155 TEST_F(PasswordFormManagerTest, WipeStoreCopyIfOutdated_NotOutdated) {
2166 PasswordForm form(*saved_match()); 2156 PasswordForm form(*saved_match());
2167 form.username_value = ASCIIToUTF16("test@gmail.com"); 2157 form.username_value = ASCIIToUTF16("test@gmail.com");
2168 ASSERT_FALSE(form.password_value.empty()); 2158 ASSERT_FALSE(form.password_value.empty());
2169 2159
2170 PasswordFormManager form_manager(password_manager(), client(), 2160 PasswordFormManager form_manager(password_manager(), client(),
2171 client()->driver(), form, false); 2161 client()->driver(), form, false);
2172 2162
2173 // For GAIA authentication, the first two usernames are equivalent to 2163 // For GAIA authentication, the first two usernames are equivalent to
2174 // test@gmail.com, but the third is not. 2164 // test@gmail.com, but the third is not.
2175 PasswordForm form_related(form); 2165 PasswordForm form_related(form);
2176 form_related.username_value = ASCIIToUTF16("test@googlemail.com"); 2166 form_related.username_value = ASCIIToUTF16("test@googlemail.com");
2177 PasswordForm form_related2(form); 2167 PasswordForm form_related2(form);
2178 form_related2.username_value = ASCIIToUTF16("test"); 2168 form_related2.username_value = ASCIIToUTF16("test");
2179 PasswordForm form_unrelated(form); 2169 PasswordForm form_unrelated(form);
2180 form_unrelated.username_value = ASCIIToUTF16("test.else"); 2170 form_unrelated.username_value = ASCIIToUTF16("test.else");
2181 EXPECT_CALL(*mock_store(), GetLogins(_, _, _)) 2171 EXPECT_CALL(*mock_store(), GetLogins(_, _))
2182 .WillOnce(testing::WithArg<2>( 2172 .WillOnce(testing::WithArg<1>(
2183 InvokeConsumer(form, form_related, form_related2, form_unrelated))); 2173 InvokeConsumer(form, form_related, form_related2, form_unrelated)));
2184 form_manager.FetchDataFromPasswordStore(PasswordStore::DISALLOW_PROMPT); 2174 form_manager.FetchDataFromPasswordStore();
2185 2175
2186 form_manager.ProvisionallySave( 2176 form_manager.ProvisionallySave(
2187 form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); 2177 form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES);
2188 2178
2189 base::HistogramTester histogram_tester; 2179 base::HistogramTester histogram_tester;
2190 EXPECT_CALL(*mock_store(), RemoveLogin(_)).Times(0); 2180 EXPECT_CALL(*mock_store(), RemoveLogin(_)).Times(0);
2191 form_manager.WipeStoreCopyIfOutdated(); 2181 form_manager.WipeStoreCopyIfOutdated();
2192 histogram_tester.ExpectUniqueSample("PasswordManager.StoreReadyWhenWiping", 1, 2182 histogram_tester.ExpectUniqueSample("PasswordManager.StoreReadyWhenWiping", 1,
2193 1); 2183 1);
2194 } 2184 }
2195 2185
2196 TEST_F(PasswordFormManagerTest, WipeStoreCopyIfOutdated_Outdated) { 2186 TEST_F(PasswordFormManagerTest, WipeStoreCopyIfOutdated_Outdated) {
2197 PasswordForm form(*saved_match()); 2187 PasswordForm form(*saved_match());
2198 ASSERT_FALSE(form.password_value.empty()); 2188 ASSERT_FALSE(form.password_value.empty());
2199 2189
2200 PasswordFormManager form_manager(password_manager(), client(), 2190 PasswordFormManager form_manager(password_manager(), client(),
2201 client()->driver(), form, false); 2191 client()->driver(), form, false);
2202 2192
2203 // For GAIA authentication, the first two usernames are equivalent to 2193 // For GAIA authentication, the first two usernames are equivalent to
2204 // test@gmail.com, but the third is not. 2194 // test@gmail.com, but the third is not.
2205 PasswordForm form_related(form); 2195 PasswordForm form_related(form);
2206 form_related.username_value = ASCIIToUTF16("test@googlemail.com"); 2196 form_related.username_value = ASCIIToUTF16("test@googlemail.com");
2207 PasswordForm form_related2(form); 2197 PasswordForm form_related2(form);
2208 form_related2.username_value = ASCIIToUTF16("test"); 2198 form_related2.username_value = ASCIIToUTF16("test");
2209 PasswordForm form_unrelated(form); 2199 PasswordForm form_unrelated(form);
2210 form_unrelated.username_value = ASCIIToUTF16("test.else"); 2200 form_unrelated.username_value = ASCIIToUTF16("test.else");
2211 EXPECT_CALL(*mock_store(), GetLogins(_, _, _)) 2201 EXPECT_CALL(*mock_store(), GetLogins(_, _))
2212 .WillOnce(testing::WithArg<2>( 2202 .WillOnce(testing::WithArg<1>(
2213 InvokeConsumer(form, form_related, form_related2, form_unrelated))); 2203 InvokeConsumer(form, form_related, form_related2, form_unrelated)));
2214 form_manager.FetchDataFromPasswordStore(PasswordStore::DISALLOW_PROMPT); 2204 form_manager.FetchDataFromPasswordStore();
2215 2205
2216 PasswordForm submitted_form(form); 2206 PasswordForm submitted_form(form);
2217 submitted_form.password_value += ASCIIToUTF16("add stuff, make it different"); 2207 submitted_form.password_value += ASCIIToUTF16("add stuff, make it different");
2218 form_manager.ProvisionallySave( 2208 form_manager.ProvisionallySave(
2219 submitted_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); 2209 submitted_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES);
2220 2210
2221 base::HistogramTester histogram_tester; 2211 base::HistogramTester histogram_tester;
2222 EXPECT_CALL(*mock_store(), RemoveLogin(form)); 2212 EXPECT_CALL(*mock_store(), RemoveLogin(form));
2223 EXPECT_CALL(*mock_store(), RemoveLogin(form_related)); 2213 EXPECT_CALL(*mock_store(), RemoveLogin(form_related));
2224 EXPECT_CALL(*mock_store(), RemoveLogin(form_related2)); 2214 EXPECT_CALL(*mock_store(), RemoveLogin(form_related2));
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
2359 EXPECT_CALL(*mock_store(), RemoveLogin(_)).Times(0); 2349 EXPECT_CALL(*mock_store(), RemoveLogin(_)).Times(0);
2360 EXPECT_CALL(*client()->mock_driver()->mock_autofill_download_manager(), 2350 EXPECT_CALL(*client()->mock_driver()->mock_autofill_download_manager(),
2361 StartUploadRequest(_, false, _, _, true)); 2351 StartUploadRequest(_, false, _, _, true));
2362 2352
2363 form_manager()->ProvisionallySave( 2353 form_manager()->ProvisionallySave(
2364 submitted_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); 2354 submitted_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES);
2365 form_manager()->Save(); 2355 form_manager()->Save();
2366 } 2356 }
2367 2357
2368 TEST_F(PasswordFormManagerTest, GenerationStatusChangedWithPassword) { 2358 TEST_F(PasswordFormManagerTest, GenerationStatusChangedWithPassword) {
2369 const PasswordStore::AuthorizationPromptPolicy auth_policy = 2359 EXPECT_CALL(*mock_store(), GetLogins(*observed_form(), form_manager()));
2370 PasswordStore::DISALLOW_PROMPT; 2360 form_manager()->FetchDataFromPasswordStore();
2371 EXPECT_CALL(*mock_store(),
2372 GetLogins(*observed_form(), auth_policy, form_manager()));
2373 form_manager()->FetchDataFromPasswordStore(auth_policy);
2374 2361
2375 scoped_ptr<PasswordForm> generated_form(new PasswordForm(*observed_form())); 2362 scoped_ptr<PasswordForm> generated_form(new PasswordForm(*observed_form()));
2376 generated_form->type = PasswordForm::TYPE_GENERATED; 2363 generated_form->type = PasswordForm::TYPE_GENERATED;
2377 generated_form->username_value = ASCIIToUTF16("username"); 2364 generated_form->username_value = ASCIIToUTF16("username");
2378 generated_form->password_value = ASCIIToUTF16("password2"); 2365 generated_form->password_value = ASCIIToUTF16("password2");
2379 generated_form->preferred = true; 2366 generated_form->preferred = true;
2380 2367
2381 PasswordForm submitted_form(*generated_form); 2368 PasswordForm submitted_form(*generated_form);
2382 submitted_form.password_value = ASCIIToUTF16("password3"); 2369 submitted_form.password_value = ASCIIToUTF16("password3");
2383 2370
2384 ScopedVector<PasswordForm> simulated_results; 2371 ScopedVector<PasswordForm> simulated_results;
2385 simulated_results.push_back(std::move(generated_form)); 2372 simulated_results.push_back(std::move(generated_form));
2386 form_manager()->OnGetPasswordStoreResults(std::move(simulated_results)); 2373 form_manager()->OnGetPasswordStoreResults(std::move(simulated_results));
2387 2374
2388 form_manager()->ProvisionallySave( 2375 form_manager()->ProvisionallySave(
2389 submitted_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); 2376 submitted_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES);
2390 2377
2391 PasswordForm new_credentials; 2378 PasswordForm new_credentials;
2392 EXPECT_CALL(*mock_store(), UpdateLogin(_)) 2379 EXPECT_CALL(*mock_store(), UpdateLogin(_))
2393 .WillOnce(testing::SaveArg<0>(&new_credentials)); 2380 .WillOnce(testing::SaveArg<0>(&new_credentials));
2394 form_manager()->Save(); 2381 form_manager()->Save();
2395 2382
2396 EXPECT_EQ(PasswordForm::TYPE_MANUAL, new_credentials.type); 2383 EXPECT_EQ(PasswordForm::TYPE_MANUAL, new_credentials.type);
2397 } 2384 }
2398 2385
2399 TEST_F(PasswordFormManagerTest, GenerationStatusNotUpdatedIfPasswordUnchanged) { 2386 TEST_F(PasswordFormManagerTest, GenerationStatusNotUpdatedIfPasswordUnchanged) {
2400 base::HistogramTester histogram_tester; 2387 base::HistogramTester histogram_tester;
2401 2388
2402 const PasswordStore::AuthorizationPromptPolicy auth_policy = 2389 EXPECT_CALL(*mock_store(), GetLogins(*observed_form(), form_manager()));
2403 PasswordStore::DISALLOW_PROMPT; 2390 form_manager()->FetchDataFromPasswordStore();
2404 EXPECT_CALL(*mock_store(),
2405 GetLogins(*observed_form(), auth_policy, form_manager()));
2406 form_manager()->FetchDataFromPasswordStore(auth_policy);
2407 2391
2408 scoped_ptr<PasswordForm> generated_form(new PasswordForm(*observed_form())); 2392 scoped_ptr<PasswordForm> generated_form(new PasswordForm(*observed_form()));
2409 generated_form->type = PasswordForm::TYPE_GENERATED; 2393 generated_form->type = PasswordForm::TYPE_GENERATED;
2410 generated_form->username_value = ASCIIToUTF16("username"); 2394 generated_form->username_value = ASCIIToUTF16("username");
2411 generated_form->password_value = ASCIIToUTF16("password2"); 2395 generated_form->password_value = ASCIIToUTF16("password2");
2412 generated_form->preferred = true; 2396 generated_form->preferred = true;
2413 2397
2414 PasswordForm submitted_form(*generated_form); 2398 PasswordForm submitted_form(*generated_form);
2415 2399
2416 ScopedVector<PasswordForm> simulated_results; 2400 ScopedVector<PasswordForm> simulated_results;
2417 simulated_results.push_back(std::move(generated_form)); 2401 simulated_results.push_back(std::move(generated_form));
2418 form_manager()->OnGetPasswordStoreResults(std::move(simulated_results)); 2402 form_manager()->OnGetPasswordStoreResults(std::move(simulated_results));
2419 2403
2420 form_manager()->ProvisionallySave( 2404 form_manager()->ProvisionallySave(
2421 submitted_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); 2405 submitted_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES);
2422 2406
2423 PasswordForm new_credentials; 2407 PasswordForm new_credentials;
2424 EXPECT_CALL(*mock_store(), UpdateLogin(_)) 2408 EXPECT_CALL(*mock_store(), UpdateLogin(_))
2425 .WillOnce(testing::SaveArg<0>(&new_credentials)); 2409 .WillOnce(testing::SaveArg<0>(&new_credentials));
2426 form_manager()->Save(); 2410 form_manager()->Save();
2427 2411
2428 EXPECT_EQ(PasswordForm::TYPE_GENERATED, new_credentials.type); 2412 EXPECT_EQ(PasswordForm::TYPE_GENERATED, new_credentials.type);
2429 histogram_tester.ExpectBucketCount("PasswordGeneration.SubmissionEvent", 2413 histogram_tester.ExpectBucketCount("PasswordGeneration.SubmissionEvent",
2430 metrics_util::PASSWORD_USED, 1); 2414 metrics_util::PASSWORD_USED, 1);
2431 } 2415 }
2432 2416
2433 TEST_F(PasswordFormManagerTest, 2417 TEST_F(PasswordFormManagerTest,
2434 FetchMatchingLoginsFromPasswordStore_Reentrance) { 2418 FetchMatchingLoginsFromPasswordStore_Reentrance) {
2435 const PasswordStore::AuthorizationPromptPolicy auth_policy = 2419 EXPECT_CALL(*mock_store(),
2436 PasswordStore::DISALLOW_PROMPT; 2420 GetLogins(form_manager()->observed_form(), form_manager()))
2437 EXPECT_CALL(*mock_store(), GetLogins(form_manager()->observed_form(),
2438 auth_policy, form_manager()))
2439 .Times(2); 2421 .Times(2);
2440 form_manager()->FetchDataFromPasswordStore(auth_policy); 2422 form_manager()->FetchDataFromPasswordStore();
2441 form_manager()->FetchDataFromPasswordStore(auth_policy); 2423 form_manager()->FetchDataFromPasswordStore();
2442 2424
2443 // First response from the store, should be ignored. 2425 // First response from the store, should be ignored.
2444 scoped_ptr<PasswordForm> saved_form(new PasswordForm(*saved_match())); 2426 scoped_ptr<PasswordForm> saved_form(new PasswordForm(*saved_match()));
2445 saved_form->username_value = ASCIIToUTF16("a@gmail.com"); 2427 saved_form->username_value = ASCIIToUTF16("a@gmail.com");
2446 ScopedVector<PasswordForm> results; 2428 ScopedVector<PasswordForm> results;
2447 results.push_back(std::move(saved_form)); 2429 results.push_back(std::move(saved_form));
2448 form_manager()->OnGetPasswordStoreResults(std::move(results)); 2430 form_manager()->OnGetPasswordStoreResults(std::move(results));
2449 EXPECT_TRUE(form_manager()->best_matches().empty()); 2431 EXPECT_TRUE(form_manager()->best_matches().empty());
2450 2432
2451 // Second response from the store should not be ignored. 2433 // Second response from the store should not be ignored.
(...skipping 27 matching lines...) Expand all
2479 form_manager()->ProcessFrame(second_driver.AsWeakPtr()); 2461 form_manager()->ProcessFrame(second_driver.AsWeakPtr());
2480 } 2462 }
2481 2463
2482 TEST_F(PasswordFormManagerTest, ProcessFrame_DriverBeforeMatching) { 2464 TEST_F(PasswordFormManagerTest, ProcessFrame_DriverBeforeMatching) {
2483 NiceMock<MockPasswordManagerDriver> extra_driver; 2465 NiceMock<MockPasswordManagerDriver> extra_driver;
2484 2466
2485 EXPECT_CALL(extra_driver, FillPasswordForm(_)); 2467 EXPECT_CALL(extra_driver, FillPasswordForm(_));
2486 2468
2487 // Ask store for logins, but store should not respond yet. 2469 // Ask store for logins, but store should not respond yet.
2488 EXPECT_CALL(*mock_store(), 2470 EXPECT_CALL(*mock_store(),
2489 GetLogins(form_manager()->observed_form(), _, form_manager())); 2471 GetLogins(form_manager()->observed_form(), form_manager()));
2490 form_manager()->FetchDataFromPasswordStore(PasswordStore::DISALLOW_PROMPT); 2472 form_manager()->FetchDataFromPasswordStore();
2491 2473
2492 // Now add the extra driver. 2474 // Now add the extra driver.
2493 form_manager()->ProcessFrame(extra_driver.AsWeakPtr()); 2475 form_manager()->ProcessFrame(extra_driver.AsWeakPtr());
2494 2476
2495 // Password store responds. 2477 // Password store responds.
2496 scoped_ptr<PasswordForm> match(new PasswordForm(*saved_match())); 2478 scoped_ptr<PasswordForm> match(new PasswordForm(*saved_match()));
2497 ScopedVector<PasswordForm> result_form; 2479 ScopedVector<PasswordForm> result_form;
2498 result_form.push_back(std::move(match)); 2480 result_form.push_back(std::move(match));
2499 form_manager()->OnGetPasswordStoreResults(std::move(result_form)); 2481 form_manager()->OnGetPasswordStoreResults(std::move(result_form));
2500 } 2482 }
2501 2483
2502 TEST_F(PasswordFormManagerTest, ProcessFrame_StoreUpdatesCausesAutofill) { 2484 TEST_F(PasswordFormManagerTest, ProcessFrame_StoreUpdatesCausesAutofill) {
2503 EXPECT_CALL(*client()->mock_driver(), FillPasswordForm(_)).Times(2); 2485 EXPECT_CALL(*client()->mock_driver(), FillPasswordForm(_)).Times(2);
2504 SimulateMatchingPhase(form_manager(), RESULT_SAVED_MATCH); 2486 SimulateMatchingPhase(form_manager(), RESULT_SAVED_MATCH);
2505 SimulateMatchingPhase(form_manager(), RESULT_SAVED_MATCH); 2487 SimulateMatchingPhase(form_manager(), RESULT_SAVED_MATCH);
2506 } 2488 }
2507 2489
2508 TEST_F(PasswordFormManagerTest, UpdateFormManagers_IsCalled) { 2490 TEST_F(PasswordFormManagerTest, UpdateFormManagers_IsCalled) {
2509 // Let |password_manager()| create one additional PasswordFormManager. 2491 // Let |password_manager()| create one additional PasswordFormManager.
2510 PasswordStoreConsumer* consumer = nullptr; // Will point to the new PFM. 2492 PasswordStoreConsumer* consumer = nullptr; // Will point to the new PFM.
2511 EXPECT_CALL(*mock_store(), GetLogins(_, _, _)) 2493 EXPECT_CALL(*mock_store(), GetLogins(_, _)).WillOnce(SaveArg<1>(&consumer));
2512 .WillOnce(SaveArg<2>(&consumer));
2513 PasswordForm form; 2494 PasswordForm form;
2514 std::vector<PasswordForm> observed; 2495 std::vector<PasswordForm> observed;
2515 observed.push_back(form); 2496 observed.push_back(form);
2516 password_manager()->OnPasswordFormsParsed(client()->mock_driver(), observed); 2497 password_manager()->OnPasswordFormsParsed(client()->mock_driver(), observed);
2517 // Make sure that the additional PFM is in POST_MATCHING phase. 2498 // Make sure that the additional PFM is in POST_MATCHING phase.
2518 ASSERT_TRUE(consumer); 2499 ASSERT_TRUE(consumer);
2519 consumer->OnGetPasswordStoreResults(ScopedVector<PasswordForm>()); 2500 consumer->OnGetPasswordStoreResults(ScopedVector<PasswordForm>());
2520 2501
2521 // Now prepare |form_manager()| for saving. 2502 // Now prepare |form_manager()| for saving.
2522 SimulateMatchingPhase(form_manager(), RESULT_NO_MATCH); 2503 SimulateMatchingPhase(form_manager(), RESULT_NO_MATCH);
2523 PasswordForm saved_form(*observed_form()); 2504 PasswordForm saved_form(*observed_form());
2524 saved_form.preferred = true; 2505 saved_form.preferred = true;
2525 form_manager()->ProvisionallySave( 2506 form_manager()->ProvisionallySave(
2526 saved_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); 2507 saved_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES);
2527 2508
2528 // Firing Save() should cause PasswordManager::UpdateFormManagers to make the 2509 // Firing Save() should cause PasswordManager::UpdateFormManagers to make the
2529 // additional PFM to call the password store again. 2510 // additional PFM to call the password store again.
2530 EXPECT_CALL(*mock_store(), GetLogins(_, _, _)); 2511 EXPECT_CALL(*mock_store(), GetLogins(_, _));
2531 form_manager()->Save(); 2512 form_manager()->Save();
2532 } 2513 }
2533 2514
2534 TEST_F(PasswordFormManagerTest, UploadChangePasswordForm_NEW_PASSWORD) { 2515 TEST_F(PasswordFormManagerTest, UploadChangePasswordForm_NEW_PASSWORD) {
2535 ChangePasswordUploadTest(autofill::NEW_PASSWORD); 2516 ChangePasswordUploadTest(autofill::NEW_PASSWORD);
2536 } 2517 }
2537 2518
2538 TEST_F(PasswordFormManagerTest, 2519 TEST_F(PasswordFormManagerTest,
2539 UploadChangePasswordForm_PROBABLY_NEW_PASSWORD) { 2520 UploadChangePasswordForm_PROBABLY_NEW_PASSWORD) {
2540 ChangePasswordUploadTest(autofill::PROBABLY_NEW_PASSWORD); 2521 ChangePasswordUploadTest(autofill::PROBABLY_NEW_PASSWORD);
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
2695 2676
2696 EXPECT_EQ(credentials.password_value, new_credentials.password_value); 2677 EXPECT_EQ(credentials.password_value, new_credentials.password_value);
2697 EXPECT_EQ(credentials.username_value, new_credentials.username_value); 2678 EXPECT_EQ(credentials.username_value, new_credentials.username_value);
2698 EXPECT_EQ(credentials.password_element, new_credentials.password_element); 2679 EXPECT_EQ(credentials.password_element, new_credentials.password_element);
2699 EXPECT_EQ(credentials.username_element, new_credentials.username_element); 2680 EXPECT_EQ(credentials.username_element, new_credentials.username_element);
2700 EXPECT_EQ(credentials.origin, new_credentials.origin); 2681 EXPECT_EQ(credentials.origin, new_credentials.origin);
2701 } 2682 }
2702 2683
2703 #if !defined(OS_IOS) && !defined(OS_ANDROID) 2684 #if !defined(OS_IOS) && !defined(OS_ANDROID)
2704 TEST_F(PasswordFormManagerTest, FetchStatistics) { 2685 TEST_F(PasswordFormManagerTest, FetchStatistics) {
2705 const PasswordStore::AuthorizationPromptPolicy auth_policy =
2706 PasswordStore::DISALLOW_PROMPT;
2707 InteractionsStats stats; 2686 InteractionsStats stats;
2708 stats.origin_domain = observed_form()->origin.GetOrigin(); 2687 stats.origin_domain = observed_form()->origin.GetOrigin();
2709 stats.username_value = saved_match()->username_value; 2688 stats.username_value = saved_match()->username_value;
2710 stats.dismissal_count = 5; 2689 stats.dismissal_count = 5;
2711 EXPECT_CALL(*mock_store(), 2690 EXPECT_CALL(*mock_store(), GetLogins(*observed_form(), form_manager()));
2712 GetLogins(*observed_form(), auth_policy, form_manager()));
2713 std::vector<InteractionsStats*> db_stats; 2691 std::vector<InteractionsStats*> db_stats;
2714 db_stats.push_back(new InteractionsStats(stats)); 2692 db_stats.push_back(new InteractionsStats(stats));
2715 EXPECT_CALL(*mock_store(), GetSiteStatsMock(stats.origin_domain)) 2693 EXPECT_CALL(*mock_store(), GetSiteStatsMock(stats.origin_domain))
2716 .WillOnce(Return(db_stats)); 2694 .WillOnce(Return(db_stats));
2717 form_manager()->FetchDataFromPasswordStore(auth_policy); 2695 form_manager()->FetchDataFromPasswordStore();
2718 base::RunLoop().RunUntilIdle(); 2696 base::RunLoop().RunUntilIdle();
2719 2697
2720 EXPECT_THAT(form_manager()->interactions_stats(), 2698 EXPECT_THAT(form_manager()->interactions_stats(),
2721 ElementsAre(Pointee(stats))); 2699 ElementsAre(Pointee(stats)));
2722 } 2700 }
2723 #else 2701 #else
2724 TEST_F(PasswordFormManagerTest, DontFetchStatistics) { 2702 TEST_F(PasswordFormManagerTest, DontFetchStatistics) {
2725 const PasswordStore::AuthorizationPromptPolicy auth_policy = 2703 EXPECT_CALL(*mock_store(), GetLogins(*observed_form(), form_manager()));
2726 PasswordStore::DISALLOW_PROMPT;
2727 EXPECT_CALL(*mock_store(),
2728 GetLogins(*observed_form(), auth_policy, form_manager()));
2729 EXPECT_CALL(*mock_store(), GetSiteStatsMock(_)).Times(0); 2704 EXPECT_CALL(*mock_store(), GetSiteStatsMock(_)).Times(0);
2730 form_manager()->FetchDataFromPasswordStore(auth_policy); 2705 form_manager()->FetchDataFromPasswordStore();
2731 base::RunLoop().RunUntilIdle(); 2706 base::RunLoop().RunUntilIdle();
2732 } 2707 }
2733 #endif 2708 #endif
2734 2709
2735 TEST_F(PasswordFormManagerTest, 2710 TEST_F(PasswordFormManagerTest,
2736 TestSavingOnChangePasswordFormGenerationNoStoredForms) { 2711 TestSavingOnChangePasswordFormGenerationNoStoredForms) {
2737 client()->set_is_update_password_ui_enabled(true); 2712 client()->set_is_update_password_ui_enabled(true);
2738 SimulateMatchingPhase(form_manager(), RESULT_NO_MATCH); 2713 SimulateMatchingPhase(form_manager(), RESULT_NO_MATCH);
2739 form_manager()->set_has_generated_password(true); 2714 form_manager()->set_has_generated_password(true);
2740 2715
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
2957 Mock::VerifyAndClearExpectations(mock_store()); 2932 Mock::VerifyAndClearExpectations(mock_store());
2958 2933
2959 EXPECT_EQ(saved_match()->username_value + ASCIIToUTF16("1"), 2934 EXPECT_EQ(saved_match()->username_value + ASCIIToUTF16("1"),
2960 new_credentials.username_value); 2935 new_credentials.username_value);
2961 EXPECT_EQ(saved_match()->password_value, new_credentials.password_value); 2936 EXPECT_EQ(saved_match()->password_value, new_credentials.password_value);
2962 EXPECT_EQ(base::string16(), new_credentials.username_element); 2937 EXPECT_EQ(base::string16(), new_credentials.username_element);
2963 EXPECT_EQ(autofill::PasswordForm::TYPE_API, new_credentials.type); 2938 EXPECT_EQ(autofill::PasswordForm::TYPE_API, new_credentials.type);
2964 } 2939 }
2965 2940
2966 } // namespace password_manager 2941 } // namespace password_manager
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698