Commit 6fa2f82c authored by Viktor Semeniuk's avatar Viktor Semeniuk Committed by Commit Bot

[Passwords] Compromised passwords are not displayed if check Canceled

This change fixes the bug when Compromised passwords are not displayed
in passwords section if check was not finished successfully e.g.
Canceled although some number of compromised passwords were found.

Bug: 1070897
Change-Id: I73068029f0c02979520bc7caddabc7d72e7b1faf
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2148323Reviewed-by: default avatarJan Wilken Dörrie <jdoerrie@chromium.org>
Commit-Queue: Viktor Semeniuk <vsemeniuk@google.com>
Cr-Commit-Position: refs/heads/master@{#759580}
parent 28e7d0c1
......@@ -121,7 +121,7 @@ Polymer({
shouldShowBanner_: {
type: Boolean,
value: true,
computed: 'computeShouldShowBanner_(' +
computed: 'computeShouldShowBanner_(hasLeakedCredentials_,' +
'signedIn_, hasNeverCheckedPasswords_, hasStoredPasswords_)',
},
......@@ -410,7 +410,7 @@ Polymer({
*/
computeShouldShowBanner_() {
return this.signedIn_ && this.hasStoredPasswords_ &&
this.hasNeverCheckedPasswords_;
this.hasNeverCheckedPasswords_ && !this.hasLeakedCredentials_;
},
/**
......
......@@ -5,7 +5,7 @@
/** @fileoverview Runs the Polymer Password Settings tests. */
// clang-format off
// #import {PasswordManagerProxy, PasswordManagerImpl, routes, Router} from 'chrome://settings/settings.js';
// #import {PasswordManagerProxy, PasswordManagerImpl, PluralStringProxyImpl, routes, Router} from 'chrome://settings/settings.js';
// #import {getToastManager} from 'chrome://settings/lazy_load.js';
// #import {PasswordSectionElementFactory, createExceptionEntry, createPasswordEntry, makeCompromisedCredential, makePasswordCheckStatus} from 'chrome://test/settings/passwords_and_autofill_fake_data.m.js';
// #import {runStartExportTest, runExportFlowFastTest, runExportFlowErrorTest, runExportFlowErrorRetryTest, runExportFlowSlowTest, runCancelExportTest, runFireCloseEventAfterExportCompleteTest} from 'chrome://test/settings/passwords_export_test.m.js';
......@@ -13,6 +13,7 @@
// #import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
// #import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
// #import {TestPasswordManagerProxy} from 'chrome://test/settings/test_password_manager_proxy.m.js';
// #import {TestPluralStringProxy} from 'chrome://test/settings/test_plural_string_proxy.m.js';
// #import {getSyncAllPrefs, simulateSyncStatus} from 'chrome://test/settings/sync_test_util.m.js';
// #import {isChromeOS} from 'chrome://resources/js/cr.m.js';
// clang-format on
......@@ -123,6 +124,9 @@ cr.define('settings_passwords_section', function() {
/** @type {autofill_test_util.PasswordSectionElementFactory} */
let elementFactory = null;
/** @type {TestPluralStringProxy} */
let pluaralString = null;
suiteSetup(function() {
loadTimeData.overrideValues({enablePasswordCheck: true});
});
......@@ -131,6 +135,9 @@ cr.define('settings_passwords_section', function() {
PolymerTest.clearBody();
// Override the PasswordManagerImpl for testing.
passwordManager = new TestPasswordManagerProxy();
pluaralString = new TestPluralStringProxy();
settings.PluralStringProxyImpl.instance_ = pluaralString;
PasswordManagerImpl.instance_ = passwordManager;
elementFactory =
new autofill_test_util.PasswordSectionElementFactory(document);
......@@ -831,6 +838,41 @@ cr.define('settings_passwords_section', function() {
});
});
test(
'showPasswordCheckBannerWhenCanceledCheckedBeforeAndSignedInAndHavePasswords',
async function() {
// Suppose initial check was canceled, non-empty list of passwords,
// signed in.
assertEquals(
passwordManager.data.checkStatus.elapsedTimeSinceLastCheck,
undefined);
const passwordList = [
autofill_test_util.createPasswordEntry('site1.com', 'luigi'),
autofill_test_util.createPasswordEntry('site2.com', 'luigi'),
];
passwordManager.data.checkStatus.state = PasswordCheckState.CANCELED;
passwordManager.data.leakedCredentials = [
autofill_test_util.makeCompromisedCredential(
'site1.com', 'luigi', 'LEAKED'),
];
pluaralString.text = '1 compromised password';
const passwordsSection = elementFactory.createPasswordsSection(
passwordManager, passwordList, []);
await passwordManager.whenCalled('getCompromisedCredentials');
await pluaralString.whenCalled('getPluralString');
Polymer.dom.flush();
assertTrue(
passwordsSection.$$('#checkPasswordsBannerContainer').hidden);
assertTrue(passwordsSection.$$('#checkPasswordsButtonRow').hidden);
assertFalse(passwordsSection.$$('#checkPasswordsLinkRow').hidden);
assertEquals(
pluaralString.text,
passwordsSection.$$('#checkPasswordLeakCount').innerText.trim());
});
test(
'showPasswordCheckLinkButtonWithoutWarningWhenNotSignedIn', function() {
// Suppose no check done initially, non-empty list of passwords,
......
......@@ -18,11 +18,13 @@
super([
'getPluralString',
]);
this.text = 'some text';
}
/** override */
getPluralString(messageName, itemCount) {
this.methodCalled('getPluralString', {messageName, itemCount});
return Promise.resolve('some text');
return Promise.resolve(this.text);
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment