Commit 8497044c authored by Rainhard Findling's avatar Rainhard Findling Committed by Commit Bot

Wire user actions to safety check buttons

* Prepares extension child for state update in backend
 (crrev.com/c/2089775).
* Updates button relaunches browser.
* Password button links to password check page.
* Safe browsing button links to security page.
* Extensions button opens extensions in new tab.

Bug: 1015841
Change-Id: I522ce5080eda92ebcee6ce6d17303eb490a651c4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2087677
Commit-Queue: Rainhard Findling <rainhard@chromium.org>
Reviewed-by: default avatardpapad <dpapad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#748019}
parent 46eb80c6
......@@ -89,10 +89,10 @@
<message name="IDS_SETTINGS_SAFETY_CHECK_PARENT_PRIMARY_LABEL_BEFORE" desc="This text describes what the safety check is. (It's an area of the Settings page where users can quickly check whether their safety-related settings are fully protecting them.)">
Chromium can help keep you safe from data breaches, bad extensions, and more
</message>
<message name="IDS_SETTINGS_SAFETY_CHECK_UPDATES_SUB_LABEL_FAILED_OFFLINE" desc="This text describles that Chrome cannot check for updates because there currently is no internet connection.">
<message name="IDS_SETTINGS_SAFETY_CHECK_UPDATES_FAILED_OFFLINE" desc="This text describles that Chrome cannot check for updates because there currently is no internet connection.">
Chromium can't check for updates. Try checking your internet connection.
</message>
<message name="IDS_SETTINGS_SAFETY_CHECK_UPDATES_SUB_LABEL_FAILED" desc="This text describles that Chrome cannot update due to an unknown error.">
<message name="IDS_SETTINGS_SAFETY_CHECK_UPDATES_FAILED" desc="This text describles that Chrome cannot update due to an unknown error.">
Chromium didn't update, something went wrong. <ph name="BEGIN_LINK">&lt;a target="_blank" href="$1"&gt;</ph>Fix Chromium update problems and failed updates.<ph name="END_LINK">&lt;/a&gt;</ph>
</message>
......
......@@ -89,10 +89,10 @@
<message name="IDS_SETTINGS_SAFETY_CHECK_PARENT_PRIMARY_LABEL_BEFORE" desc="This text describes what the safety check is. (It's an area of the Settings page where users can quickly check whether their safety-related settings are fully protecting them.)">
Chrome can help keep you safe from data breaches, bad extensions, and more
</message>
<message name="IDS_SETTINGS_SAFETY_CHECK_UPDATES_SUB_LABEL_FAILED_OFFLINE" desc="This text describles that Chrome cannot check for updates because there currently is no internet connection.">
<message name="IDS_SETTINGS_SAFETY_CHECK_UPDATES_FAILED_OFFLINE" desc="This text describles that Chrome cannot check for updates because there currently is no internet connection.">
Chrome can't check for updates. Try checking your internet connection.
</message>
<message name="IDS_SETTINGS_SAFETY_CHECK_UPDATES_SUB_LABEL_FAILED" desc="This text describles that Chrome cannot update due to an unknown error.">
<message name="IDS_SETTINGS_SAFETY_CHECK_UPDATES_FAILED" desc="This text describles that Chrome cannot update due to an unknown error.">
Chrome didn't update, something went wrong. <ph name="BEGIN_LINK">&lt;a target="_blank" href="$1"&gt;</ph>Fix Chrome update problems and failed updates.<ph name="END_LINK">&lt;/a&gt;</ph>
</message>
......
......@@ -1537,28 +1537,25 @@
<message name="IDS_SETTINGS_SAFETY_CHECK_UPDATES_PRIMARY_LABEL" desc="'Updates' is an element in safety check that shows the update status of Chrome.">
Updates
</message>
<message name="IDS_SETTINGS_SAFETY_CHECK_UPDATES_SUB_LABEL_DISABLED_BY_ADMIN" desc="This text describles that updates are managed by the administrator.">
<message name="IDS_SETTINGS_SAFETY_CHECK_UPDATES_DISABLED_BY_ADMIN" desc="This text describles that updates are managed by the administrator.">
Updates are managed by your <ph name="BEGIN_LINK">&lt;a target="_blank" href="$1"&gt;</ph>administrator<ph name="END_LINK">&lt;/a&gt;</ph>
</message>
<message name="IDS_SETTINGS_SAFETY_CHECK_PASSWORDS_PRIMARY_LABEL" desc="'Passwords' is an element in safety check that allows users to check for their passwords being compromised.">
Passwords
</message>
<message name="IDS_SAFETY_CHECK_PASSWORDS_BUTTON_COMPROMISED" desc="This button allows users to change their compromised passwords.">
<message name="IDS_SETTINGS_SAFETY_CHECK_PASSWORDS_BUTTON" desc="This button allows users to change their compromised passwords.">
Change passwords
</message>
<message name="IDS_SAFETY_CHECK_PASSWORDS_BUTTON_ERROR" desc="This button allows users to try the password check again.">
Try again
</message>
<message name="IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_SUB_LABEL_ENABLED" desc="This text points out that Safe Browsing is enabled and that the user is protected.">
<message name="IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_ENABLED" desc="This text points out that Safe Browsing is enabled and that the user is protected.">
Safe Browsing is up to date and protecting you from harmful sites and downloads
</message>
<message name="IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_SUB_LABEL_DISABLED" desc="This text points out that Safe Browsing is disabled and that the user is not protected.">
<message name="IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_DISABLED" desc="This text points out that Safe Browsing is disabled and that the user is not protected.">
Safe Browsing is off. To stay safe on the web, turn it on.
</message>
<message name="IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_SUB_LABEL_DISABLED_BY_ADMIN" desc="This text points out that Safe Browsing is disabled by an administrator.">
<message name="IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_DISABLED_BY_ADMIN" desc="This text points out that Safe Browsing is disabled by an administrator.">
Your <ph name="BEGIN_LINK">&lt;a target="_blank" href="$1"&gt;</ph>administrator<ph name="END_LINK">&lt;/a&gt;</ph> has turned off Safe Browsing
</message>
<message name="IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_SUB_LABEL_DISABLED_BY_EXTENSION" desc="This text points out that Safe Browsing is disabled by an extension.">
<message name="IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_DISABLED_BY_EXTENSION" desc="This text points out that Safe Browsing is disabled by an extension.">
An extension has turned off Safe Browsing
</message>
<message name="IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_BUTTON" desc="This is the text for the button that allows users to manage their Safe Browsing settings.">
......
......@@ -16,6 +16,9 @@ js_library("safety_check_page") {
deps = [
":safety_check_browser_proxy",
"..:lifetime_browser_proxy",
"..:open_window_proxy",
"..:route",
"..:router",
"//ui/webui/resources/js:assert",
"//ui/webui/resources/js:i18n_behavior",
"//ui/webui/resources/js:web_ui_listener_behavior",
......
......@@ -64,10 +64,11 @@ cr.define('settings', function() {
const SafetyCheckExtensionsStatus = {
CHECKING: 0,
ERROR: 1,
SAFE: 2,
BAD_EXTENSIONS_ON: 3,
BAD_EXTENSIONS_OFF: 4,
MANAGED_BY_ADMIN: 5,
NO_BLACKLISTED_EXTENSIONS: 2,
BLACKLISTED_ALL_DISABLED: 3,
BLACKLISTED_REENABLED_ALL_BY_USER: 4,
BLACKLISTED_REENABLED_SOME_BY_USER: 5,
BLACKLISTED_REENABLED_ALL_BY_ADMIN: 6,
};
/** @interface */
......
......@@ -10,7 +10,10 @@
<link rel="import" href="chrome://resources/polymer/v1_0/iron-icon/iron-icon.html">
<link rel="import" href="../i18n_setup.html">
<link rel="import" href="../lifetime_browser_proxy.html">
<link rel="import" href="../open_window_proxy.html">
<link rel="import" href="../prefs/prefs_behavior.html">
<link rel="import" href="../route.html">
<link rel="import" href="../router.html">
<link rel="import" href="../settings_shared_css.html">
<link rel="import" href="safety_check_browser_proxy.html">
......@@ -115,10 +118,9 @@
<template is="dom-if"
if="[[shouldShowPasswordsButton_(passwordsStatus_)]]" restamp>
<div class="separator"></div>
<cr-button id="safetyCheckPasswordsButton"
class$="[[getPasswordsButtonClass_(passwordsStatus_)]]"
<cr-button id="safetyCheckPasswordsButton" class="action-button"
on-click="onPasswordsButtonClick_" no-search>
[[getPasswordsButtonText_(passwordsStatus_)]]
$i18n{safetyCheckPasswordsButton}
</cr-button>
</template>
</div>
......
......@@ -442,13 +442,8 @@ Polymer({
* @return {boolean}
*/
shouldShowPasswordsButton_: function() {
switch (this.passwordsStatus_) {
case settings.SafetyCheckPasswordsStatus.COMPROMISED:
case settings.SafetyCheckPasswordsStatus.ERROR:
return true;
default:
return false;
}
return this.passwordsStatus_ ==
settings.SafetyCheckPasswordsStatus.COMPROMISED;
},
/**
......@@ -504,46 +499,12 @@ Polymer({
}
},
/**
* @private
* @return {?string}
*/
getPasswordsButtonText_: function() {
switch (this.passwordsStatus_) {
case settings.SafetyCheckPasswordsStatus.COMPROMISED:
return this.i18n('safetyCheckPasswordsButtonCompromised');
case settings.SafetyCheckPasswordsStatus.ERROR:
return this.i18n('safetyCheckPasswordsButtonError');
default:
return null;
}
},
/**
* @private
* @return {string}
*/
getPasswordsButtonClass_: function() {
switch (this.passwordsStatus_) {
case settings.SafetyCheckPasswordsStatus.COMPROMISED:
return 'action-button';
default:
return '';
}
},
/** @private */
onPasswordsButtonClick_: function() {
switch (this.passwordsStatus_) {
case settings.SafetyCheckPasswordsStatus.COMPROMISED:
// TODO(crbug.com/1010001): Implement once behavior has been agreed on.
break;
case settings.SafetyCheckPasswordsStatus.ERROR:
this.runSafetyCheck_();
break;
default:
break;
}
settings.Router.getInstance().navigateTo(
loadTimeData.getBoolean('enablePasswordCheck') ?
settings.routes.CHECK_PASSWORDS :
settings.routes.PASSWORDS);
},
/**
......@@ -551,12 +512,8 @@ Polymer({
* @return {boolean}
*/
shouldShowSafeBrowsingButton_: function() {
switch (this.safeBrowsingStatus_) {
case settings.SafetyCheckSafeBrowsingStatus.DISABLED:
return true;
default:
return false;
}
return this.safeBrowsingStatus_ ==
settings.SafetyCheckSafeBrowsingStatus.DISABLED;
},
/**
......@@ -643,7 +600,7 @@ Polymer({
/** @private */
onSafeBrowsingButtonClick_: function() {
// TODO(crbug.com/1010001): Implement once behavior has been agreed on.
settings.Router.getInstance().navigateTo(settings.routes.SECURITY);
},
/**
......@@ -652,8 +609,11 @@ Polymer({
*/
shouldShowExtensionsButton_: function() {
switch (this.extensionsStatus_) {
case settings.SafetyCheckExtensionsStatus.BAD_EXTENSIONS_ON:
case settings.SafetyCheckExtensionsStatus.BAD_EXTENSIONS_OFF:
case settings.SafetyCheckExtensionsStatus.BLACKLISTED_ALL_DISABLED:
case settings.SafetyCheckExtensionsStatus
.BLACKLISTED_REENABLED_ALL_BY_USER:
case settings.SafetyCheckExtensionsStatus
.BLACKLISTED_REENABLED_SOME_BY_USER:
return true;
default:
return false;
......@@ -666,12 +626,12 @@ Polymer({
*/
shouldShowExtensionsManagedIcon_: function() {
return this.extensionsStatus_ ==
settings.SafetyCheckExtensionsStatus.MANAGED_BY_ADMIN;
settings.SafetyCheckExtensionsStatus.BLACKLISTED_REENABLED_ALL_BY_ADMIN;
},
/** @private */
onSafetyCheckExtensionsButtonClicked_: function() {
// TODO(crbug.com/1010001): Implement once behavior has been agreed on.
settings.OpenWindowProxyImpl.getInstance().openURL('chrome://extensions');
},
/**
......@@ -683,12 +643,16 @@ Polymer({
case settings.SafetyCheckExtensionsStatus.CHECKING:
return null;
case settings.SafetyCheckExtensionsStatus.ERROR:
case settings.SafetyCheckExtensionsStatus.MANAGED_BY_ADMIN:
case settings.SafetyCheckExtensionsStatus
.BLACKLISTED_REENABLED_ALL_BY_ADMIN:
return 'cr:info';
case settings.SafetyCheckExtensionsStatus.SAFE:
case settings.SafetyCheckExtensionsStatus.BAD_EXTENSIONS_OFF:
case settings.SafetyCheckExtensionsStatus.NO_BLACKLISTED_EXTENSIONS:
case settings.SafetyCheckExtensionsStatus.BLACKLISTED_ALL_DISABLED:
return 'cr:check';
case settings.SafetyCheckExtensionsStatus.BAD_EXTENSIONS_ON:
case settings.SafetyCheckExtensionsStatus
.BLACKLISTED_REENABLED_ALL_BY_USER:
case settings.SafetyCheckExtensionsStatus
.BLACKLISTED_REENABLED_SOME_BY_USER:
return 'cr:warning';
default:
assertNotReached();
......@@ -715,10 +679,13 @@ Polymer({
getExtensionsIconClass_: function() {
switch (this.extensionsStatus_) {
case settings.SafetyCheckExtensionsStatus.CHECKING:
case settings.SafetyCheckExtensionsStatus.SAFE:
case settings.SafetyCheckExtensionsStatus.BAD_EXTENSIONS_OFF:
case settings.SafetyCheckExtensionsStatus.NO_BLACKLISTED_EXTENSIONS:
case settings.SafetyCheckExtensionsStatus.BLACKLISTED_ALL_DISABLED:
return 'icon-blue';
case settings.SafetyCheckExtensionsStatus.BAD_EXTENSIONS_ON:
case settings.SafetyCheckExtensionsStatus
.BLACKLISTED_REENABLED_ALL_BY_USER:
case settings.SafetyCheckExtensionsStatus
.BLACKLISTED_REENABLED_SOME_BY_USER:
return 'icon-red';
default:
return '';
......@@ -731,7 +698,10 @@ Polymer({
*/
getExtensionsButtonClass_: function() {
switch (this.extensionsStatus_) {
case settings.SafetyCheckExtensionsStatus.BAD_EXTENSIONS_ON:
case settings.SafetyCheckExtensionsStatus
.BLACKLISTED_REENABLED_ALL_BY_USER:
case settings.SafetyCheckExtensionsStatus
.BLACKLISTED_REENABLED_SOME_BY_USER:
return 'action-button';
default:
return '';
......
......@@ -1130,17 +1130,15 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source,
{"safetyCheckUpdatesPrimaryLabel",
IDS_SETTINGS_SAFETY_CHECK_UPDATES_PRIMARY_LABEL},
{"safetyCheckUpdatesSubLabelFailedOffline",
IDS_SETTINGS_SAFETY_CHECK_UPDATES_SUB_LABEL_FAILED_OFFLINE},
{"safetyCheckPasswordsButtonCompromised",
IDS_SAFETY_CHECK_PASSWORDS_BUTTON_COMPROMISED},
{"safetyCheckPasswordsButtonError",
IDS_SAFETY_CHECK_PASSWORDS_BUTTON_ERROR},
IDS_SETTINGS_SAFETY_CHECK_UPDATES_FAILED_OFFLINE},
{"safetyCheckPasswordsButton",
IDS_SETTINGS_SAFETY_CHECK_PASSWORDS_BUTTON},
{"safetyCheckSafeBrowsingSubLabelEnabled",
IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_SUB_LABEL_ENABLED},
IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_ENABLED},
{"safetyCheckSafeBrowsingSubLabelDisabled",
IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_SUB_LABEL_DISABLED},
IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_DISABLED},
{"safetyCheckSafeBrowsingSubLabelDisabledByExtension",
IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_SUB_LABEL_DISABLED_BY_EXTENSION},
IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_DISABLED_BY_EXTENSION},
{"safetyCheckSafeBrowsingButton",
IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_BUTTON},
{"safetyCheckExtensionsPrimaryLabel",
......@@ -1175,17 +1173,17 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source,
html_source->AddString(
"safetyCheckUpdatesSubLabelFailed",
l10n_util::GetStringFUTF16(
IDS_SETTINGS_SAFETY_CHECK_UPDATES_SUB_LABEL_FAILED,
IDS_SETTINGS_SAFETY_CHECK_UPDATES_FAILED,
base::ASCIIToUTF16(chrome::kChromeFixUpdateProblems)));
html_source->AddString(
"safetyCheckUpdatesSubLabelDisabledByAdmin",
l10n_util::GetStringFUTF16(
IDS_SETTINGS_SAFETY_CHECK_UPDATES_SUB_LABEL_DISABLED_BY_ADMIN,
IDS_SETTINGS_SAFETY_CHECK_UPDATES_DISABLED_BY_ADMIN,
base::ASCIIToUTF16(chrome::kWhoIsMyAdministratorHelpURL)));
html_source->AddString(
"safetyCheckSafeBrowsingSubLabelDisabledByAdmin",
l10n_util::GetStringFUTF16(
IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_SUB_LABEL_DISABLED_BY_ADMIN,
IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_DISABLED_BY_ADMIN,
base::ASCIIToUTF16(chrome::kWhoIsMyAdministratorHelpURL)));
// The link to the Advanced Protection Program landing page, with a referrer
......
......@@ -79,7 +79,8 @@ suite('SafetyCheckUiTests', function() {
fireSafetyCheckPasswordsEvent(settings.SafetyCheckPasswordsStatus.SAFE);
fireSafetyCheckSafeBrowsingEvent(
settings.SafetyCheckSafeBrowsingStatus.ENABLED);
fireSafetyCheckExtensionsEvent(settings.SafetyCheckExtensionsStatus.SAFE);
fireSafetyCheckExtensionsEvent(
settings.SafetyCheckExtensionsStatus.NO_BLACKLISTED_EXTENSIONS);
Polymer.dom.flush();
......@@ -147,16 +148,10 @@ suite('SafetyCheckUiTests', function() {
fireSafetyCheckPasswordsEvent(state);
Polymer.dom.flush();
// button is only visible in COMPROMISED and ERROR states
switch (state) {
case settings.SafetyCheckPasswordsStatus.COMPROMISED:
case settings.SafetyCheckPasswordsStatus.ERROR:
assertTrue(!!page.$$('#safetyCheckPasswordsButton'));
break;
default:
assertFalse(!!page.$$('#safetyCheckPasswordsButton'));
break;
}
// button is only visible in COMPROMISED state
assertEquals(
state === settings.SafetyCheckPasswordsStatus.COMPROMISED,
!!page.$$('#safetyCheckPasswordsButton'));
}
});
......@@ -200,6 +195,22 @@ suite('SafetyCheckUiTests', function() {
assertTrue(!!page.$$('#safetyCheckSafeBrowsingManagedIcon'));
});
test('extensionsCheckingUiTest', function() {
fireSafetyCheckExtensionsEvent(
settings.SafetyCheckExtensionsStatus.CHECKING);
Polymer.dom.flush();
assertFalse(!!page.$$('#safetyCheckExtensionsButton'));
assertFalse(!!page.$$('#safetyCheckExtensionsManagedIcon'));
});
test('extensionsErrorUiTest', function() {
fireSafetyCheckExtensionsEvent(settings.SafetyCheckExtensionsStatus.ERROR);
Polymer.dom.flush();
assertFalse(!!page.$$('#safetyCheckExtensionsButton'));
assertFalse(!!page.$$('#safetyCheckExtensionsManagedIcon'));
});
test('extensionsCheckingUiTest', function() {
fireSafetyCheckExtensionsEvent(
settings.SafetyCheckExtensionsStatus.CHECKING);
......@@ -216,31 +227,40 @@ suite('SafetyCheckUiTests', function() {
});
test('extensionsSafeUiTest', function() {
fireSafetyCheckExtensionsEvent(settings.SafetyCheckExtensionsStatus.SAFE);
fireSafetyCheckExtensionsEvent(
settings.SafetyCheckExtensionsStatus.NO_BLACKLISTED_EXTENSIONS);
Polymer.dom.flush();
assertFalse(!!page.$$('#safetyCheckExtensionsButton'));
assertFalse(!!page.$$('#safetyCheckExtensionsManagedIcon'));
});
test('extensionsBadExtensionsOnUiTest', function() {
test('extensionsBlacklistedOffUiTest', function() {
fireSafetyCheckExtensionsEvent(
settings.SafetyCheckExtensionsStatus.BAD_EXTENSIONS_ON);
settings.SafetyCheckExtensionsStatus.BLACKLISTED_ALL_DISABLED);
Polymer.dom.flush();
assertTrue(!!page.$$('#safetyCheckExtensionsButton'));
assertFalse(!!page.$$('#safetyCheckExtensionsManagedIcon'));
});
test('extensionsBadExtensionsOffUiTest', function() {
test('extensionsBlacklistedOnAllUserUiTest', function() {
fireSafetyCheckExtensionsEvent(
settings.SafetyCheckExtensionsStatus.BAD_EXTENSIONS_OFF);
settings.SafetyCheckExtensionsStatus.BLACKLISTED_REENABLED_ALL_BY_USER);
Polymer.dom.flush();
assertTrue(!!page.$$('#safetyCheckExtensionsButton'));
assertFalse(!!page.$$('#safetyCheckExtensionsManagedIcon'));
});
test('extensionsManagedByAdminUiTest', function() {
fireSafetyCheckExtensionsEvent(
settings.SafetyCheckExtensionsStatus.MANAGED_BY_ADMIN);
test('extensionsBlacklistedOnUserAdminUiTest', function() {
fireSafetyCheckExtensionsEvent(settings.SafetyCheckExtensionsStatus
.BLACKLISTED_REENABLED_SOME_BY_USER);
Polymer.dom.flush();
assertTrue(!!page.$$('#safetyCheckExtensionsButton'));
assertFalse(!!page.$$('#safetyCheckExtensionsManagedIcon'));
});
test('extensionsBlacklistedOnAllAdminUiTest', function() {
fireSafetyCheckExtensionsEvent(settings.SafetyCheckExtensionsStatus
.BLACKLISTED_REENABLED_ALL_BY_ADMIN);
Polymer.dom.flush();
assertFalse(!!page.$$('#safetyCheckExtensionsButton'));
assertTrue(!!page.$$('#safetyCheckExtensionsManagedIcon'));
......
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