Commit 6f2f7971 authored by dalyk's avatar dalyk Committed by Commit Bot

Secure DNS setting formatting tweaks.

The automatic mode radio button description is broken into two lines.
The privacy policy line and custom text field are left-aligned with the
dropdown menu. This cl also adds accessibility labels.

Bug: 1040145
Change-Id: I4b1d62f91c87e328f5869e2e77740127a9fd196f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2087703Reviewed-by: default avatarEsmael Elmoslimany <aee@chromium.org>
Commit-Queue: Katharine Daly <dalyk@google.com>
Cr-Commit-Position: refs/heads/master@{#749378}
parent 924c7bd1
...@@ -1690,7 +1690,7 @@ ...@@ -1690,7 +1690,7 @@
Enhanced Protection Enhanced Protection
</message> </message>
<message name="IDS_SETTINGS_SAFEBROWSING_ENHANCED_DESC" desc="Description of safe browsing enhanced protection mode"> <message name="IDS_SETTINGS_SAFEBROWSING_ENHANCED_DESC" desc="Description of safe browsing enhanced protection mode">
Faster, proactive protection against dangerous websites, downloads, and extensions. Warns you about password breaches. Requires browsing data to be sent to Google. Faster, proactive protection against dangerous websites, downloads, and extensions. Warns you about password breaches. Requires browsing data to be sent to Google.
</message> </message>
<message name="IDS_SETTINGS_SAFEBROWSING_ENHANCED_BULLET_ONE" desc="First bullet point under the safe browsing enhanced protection mode"> <message name="IDS_SETTINGS_SAFEBROWSING_ENHANCED_BULLET_ONE" desc="First bullet point under the safe browsing enhanced protection mode">
Predicts and warns you about dangerous events before they happen. Predicts and warns you about dangerous events before they happen.
...@@ -1778,7 +1778,16 @@ ...@@ -1778,7 +1778,16 @@
Determines how to connect to websites over a secure connection Determines how to connect to websites over a secure connection
</message> </message>
<message name="IDS_SETTINGS_AUTOMATIC_MODE_DESCRIPTION" desc="Text of the radio button that puts secure DNS in auto-upgrade mode"> <message name="IDS_SETTINGS_AUTOMATIC_MODE_DESCRIPTION" desc="Text of the radio button that puts secure DNS in auto-upgrade mode">
With your current service provider. Secure DNS may not be available all the time. With your current service provider
</message>
<message name="IDS_SETTINGS_AUTOMATIC_MODE_DESCRIPTION_SECONDARY" desc="Secondary, continued explanation of the radio button that puts secure DNS in auto-upgrade mode">
Secure DNS may not be available all the time
</message>
<message name="IDS_SETTINGS_SECURE_MODE_DESCRIPTION_ACCESSIBILITY_LABEL" desc="Accessibility label for the radio button that puts secure DNS in secure mode">
With a provider of your choice
</message>
<message name="IDS_SETTINGS_SECURE_DNS_DROPDOWN_ACCESSIBILITY_LABEL" desc="Accessibility label for the dropdown menu containing secure resolvers">
Provider options
</message> </message>
<message name="IDS_SETTINGS_SECURE_DROPDOWN_MODE_DESCRIPTION" desc="Text of the radio button that allows a secure resolver to be selected from a dropdown menu"> <message name="IDS_SETTINGS_SECURE_DROPDOWN_MODE_DESCRIPTION" desc="Text of the radio button that allows a secure resolver to be selected from a dropdown menu">
With With
......
...@@ -17,13 +17,36 @@ ...@@ -17,13 +17,36 @@
<dom-module id="settings-secure-dns"> <dom-module id="settings-secure-dns">
<template> <template>
<style include="settings-shared md-select"> <style include="settings-shared md-select">
#secureResolverSelect { #automaticRadioButton {
margin-inline-start: 12px; align-items: flex-start;
padding: 6px 0;
--cr-radio-button-disc-margin-block-start: calc(
(1.54em /* line-height */ - var(--cr-radio-button-size)) / 2);
} }
#secureResolverSelectRadioButton { #secureResolverSelectRadioButton {
align-items: flex-start; align-items: flex-start;
--cr-radio-button-disc-margin-block-start: 1.25em; --cr-radio-button-disc-margin-block-start: calc(
(1.54em /* line-height */ + 12px /* md-select padding */ -
var(--cr-radio-button-size)) / 2);
}
#secureRadioButtonItem {
align-items: baseline;
}
#secureRadioButtonItemInner {
margin-inline-start: 0.5em;
width: 80%;
}
#privacyPolicy {
display: none;
padding: 8px /* md-select left padding */;
}
#secureDnsInput {
margin-top: 6px;
} }
</style> </style>
<settings-toggle-button <settings-toggle-button
...@@ -37,28 +60,34 @@ ...@@ -37,28 +60,34 @@
selected="{{secureDnsRadio_}}" selected="{{secureDnsRadio_}}"
on-selected-changed="onRadioSelectionChanged_" on-selected-changed="onRadioSelectionChanged_"
hidden="[[!showRadioGroup_]]"> hidden="[[!showRadioGroup_]]">
<cr-radio-button class="list-item" name="[[secureDnsModeEnum_.AUTOMATIC]]" <cr-radio-button id="automaticRadioButton" class="list-item"
name="[[secureDnsModeEnum_.AUTOMATIC]]"
label="$i18n{secureDnsAutomaticModeDescription}"> label="$i18n{secureDnsAutomaticModeDescription}">
<div class="secondary">
$i18n{secureDnsAutomaticModeDescriptionSecondary}
</div>
</cr-radio-button> </cr-radio-button>
<cr-radio-button id="secureResolverSelectRadioButton" class="list-item" <cr-radio-button id="secureResolverSelectRadioButton" class="list-item"
name="[[secureDnsModeEnum_.SECURE]]"> name="[[secureDnsModeEnum_.SECURE]]"
<div class="list-item"> aria-label="$i18n{secureDnsSecureModeA11yLabel}">
<div>$i18n{secureDnsSecureDropdownModeDescription}</div> <div id="secureRadioButtonItem" class="list-item">
<select id="secureResolverSelect" class="md-select" $i18n{secureDnsSecureDropdownModeDescription}
on-click="stopEventPropagation_" <div id="secureRadioButtonItemInner">
on-change="onDropdownSelectionChanged_"> <select id="secureResolverSelect" class="md-select"
<template is="dom-repeat" items="[[resolverOptions_]]"> aria-label="$i18n{secureDnsDropdownA11yLabel}"
<option value="[[item.value]]">[[item.name]]</option> on-click="stopEventPropagation_"
</template> on-change="onDropdownSelectionChanged_">
</select> <template is="dom-repeat" items="[[resolverOptions_]]">
</div> <option value="[[item.value]]">[[item.name]]</option>
<div id="privacyPolicy" class="secondary" </template>
inner-h-t-m-l="[[privacyPolicyString_]]" </select>
hidden="[[!showPrivacyPolicyLine_]]"></div> <div id="privacyPolicy" class="secondary"
<secure-dns-input id="secureDnsInput" value="[[secureDnsInputValue_]]" inner-h-t-m-l="[[privacyPolicyString_]]"></div>
hidden="[[showPrivacyPolicyLine_]]" <secure-dns-input id="secureDnsInput"
on-value-update="onSecureDnsInputEvaluated_" value="[[secureDnsInputValue_]]"
on-click="stopEventPropagation_"> on-value-update="onSecureDnsInputEvaluated_"
on-click="stopEventPropagation_">
</div>
</secure-dns-input> </secure-dns-input>
</cr-radio-button> </cr-radio-button>
</cr-radio-group> </cr-radio-group>
......
...@@ -81,12 +81,6 @@ Polymer({ ...@@ -81,12 +81,6 @@ Polymer({
*/ */
resolverOptions_: Array, resolverOptions_: Array,
/**
* Whether the privacy policy line should be displayed.
* @private
*/
showPrivacyPolicyLine_: Boolean,
/** /**
* String displaying the privacy policy of the resolver selected in the * String displaying the privacy policy of the resolver selected in the
* dropdown menu. * dropdown menu.
...@@ -353,12 +347,14 @@ Polymer({ ...@@ -353,12 +347,14 @@ Polymer({
// If the selected item is the custom provider option, hide the privacy // If the selected item is the custom provider option, hide the privacy
// policy line. // policy line.
if (this.$.secureResolverSelect.value === 'custom') { if (this.$.secureResolverSelect.value === 'custom') {
this.showPrivacyPolicyLine_ = false; this.$.privacyPolicy.style.display = 'none';
this.$.secureDnsInput.style.display = 'block';
return; return;
} }
// Otherwise, display the corresponding privacy policy. // Otherwise, display the corresponding privacy policy.
this.showPrivacyPolicyLine_ = true; this.$.privacyPolicy.style.display = 'block';
this.$.secureDnsInput.style.display = 'none';
const resolver = this.resolverOptions_.find( const resolver = this.resolverOptions_.find(
r => r.value === this.$.secureResolverSelect.value); r => r.value === this.$.secureResolverSelect.value);
if (!resolver) { if (!resolver) {
......
...@@ -1086,6 +1086,12 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, ...@@ -1086,6 +1086,12 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source,
IDS_SETTINGS_SECURE_DNS_DISABLED_FOR_PARENTAL_CONTROL}, IDS_SETTINGS_SECURE_DNS_DISABLED_FOR_PARENTAL_CONTROL},
{"secureDnsAutomaticModeDescription", {"secureDnsAutomaticModeDescription",
IDS_SETTINGS_AUTOMATIC_MODE_DESCRIPTION}, IDS_SETTINGS_AUTOMATIC_MODE_DESCRIPTION},
{"secureDnsAutomaticModeDescriptionSecondary",
IDS_SETTINGS_AUTOMATIC_MODE_DESCRIPTION_SECONDARY},
{"secureDnsSecureModeA11yLabel",
IDS_SETTINGS_SECURE_MODE_DESCRIPTION_ACCESSIBILITY_LABEL},
{"secureDnsDropdownA11yLabel",
IDS_SETTINGS_SECURE_DNS_DROPDOWN_ACCESSIBILITY_LABEL},
{"secureDnsSecureDropdownModeDescription", {"secureDnsSecureDropdownModeDescription",
IDS_SETTINGS_SECURE_DROPDOWN_MODE_DESCRIPTION}, IDS_SETTINGS_SECURE_DROPDOWN_MODE_DESCRIPTION},
{"secureDnsSecureDropdownModePrivacyPolicy", {"secureDnsSecureDropdownModePrivacyPolicy",
......
...@@ -186,9 +186,10 @@ suite('SettingsSecureDnsInteractive', function() { ...@@ -186,9 +186,10 @@ suite('SettingsSecureDnsInteractive', function() {
Polymer.dom.flush(); Polymer.dom.flush();
assertEquals(settings.SecureDnsMode.SECURE, secureDnsRadioGroup.selected); assertEquals(settings.SecureDnsMode.SECURE, secureDnsRadioGroup.selected);
assertEquals(0, testElement.$$('#secureResolverSelect').selectedIndex); assertEquals(0, testElement.$$('#secureResolverSelect').selectedIndex);
assertTrue(testElement.$$('#privacyPolicy').hasAttribute('hidden')); assertEquals(
assertFalse(testElement.$$('#secureDnsInput').hasAttribute('hidden')); 'none', getComputedStyle(testElement.$$('#privacyPolicy')).display);
assertFalse(testElement.$$('#secureDnsInput').matches(':focus-within')); assertEquals(
'block', getComputedStyle(testElement.$$('#secureDnsInput')).display);
assertEquals('custom', testElement.$$('#secureDnsInput').value); assertEquals('custom', testElement.$$('#secureDnsInput').value);
}); });
...@@ -206,7 +207,8 @@ suite('SettingsSecureDnsInteractive', function() { ...@@ -206,7 +207,8 @@ suite('SettingsSecureDnsInteractive', function() {
const secureDnsInput = testElement.$$('#secureDnsInput'); const secureDnsInput = testElement.$$('#secureDnsInput');
assertEquals(1, dropdownMenu.selectedIndex); assertEquals(1, dropdownMenu.selectedIndex);
assertFalse(privacyPolicyLine.hasAttribute('hidden')); assertEquals(
'block', getComputedStyle(testElement.$$('#privacyPolicy')).display);
assertEquals( assertEquals(
resolverList[1].policy, privacyPolicyLine.querySelector('a').href); resolverList[1].policy, privacyPolicyLine.querySelector('a').href);
...@@ -214,7 +216,8 @@ suite('SettingsSecureDnsInteractive', function() { ...@@ -214,7 +216,8 @@ suite('SettingsSecureDnsInteractive', function() {
dropdownMenu.value = resolverList[2].value; dropdownMenu.value = resolverList[2].value;
dropdownMenu.dispatchEvent(new Event('change')); dropdownMenu.dispatchEvent(new Event('change'));
assertEquals(2, dropdownMenu.selectedIndex); assertEquals(2, dropdownMenu.selectedIndex);
assertFalse(privacyPolicyLine.hasAttribute('hidden')); assertEquals(
'block', getComputedStyle(testElement.$$('#privacyPolicy')).display);
assertEquals( assertEquals(
resolverList[2].policy, privacyPolicyLine.querySelector('a').href); resolverList[2].policy, privacyPolicyLine.querySelector('a').href);
assertEquals( assertEquals(
...@@ -225,7 +228,8 @@ suite('SettingsSecureDnsInteractive', function() { ...@@ -225,7 +228,8 @@ suite('SettingsSecureDnsInteractive', function() {
dropdownMenu.value = 'custom'; dropdownMenu.value = 'custom';
dropdownMenu.dispatchEvent(new Event('change')); dropdownMenu.dispatchEvent(new Event('change'));
assertEquals(0, dropdownMenu.selectedIndex); assertEquals(0, dropdownMenu.selectedIndex);
assertTrue(privacyPolicyLine.hasAttribute('hidden')); assertEquals(
'none', getComputedStyle(testElement.$$('#privacyPolicy')).display);
assertTrue(secureDnsInput.matches(':focus-within')); assertTrue(secureDnsInput.matches(':focus-within'));
assertFalse(secureDnsInput.isInvalid()); assertFalse(secureDnsInput.isInvalid());
assertEquals(settings.SecureDnsMode.SECURE, secureDnsRadioGroup.selected); assertEquals(settings.SecureDnsMode.SECURE, secureDnsRadioGroup.selected);
...@@ -271,7 +275,8 @@ suite('SettingsSecureDnsInteractive', function() { ...@@ -271,7 +275,8 @@ suite('SettingsSecureDnsInteractive', function() {
dropdownMenu.value = resolverList[3].value; dropdownMenu.value = resolverList[3].value;
dropdownMenu.dispatchEvent(new Event('change')); dropdownMenu.dispatchEvent(new Event('change'));
assertEquals(3, dropdownMenu.selectedIndex); assertEquals(3, dropdownMenu.selectedIndex);
assertFalse(privacyPolicyLine.hasAttribute('hidden')); assertEquals(
'block', getComputedStyle(testElement.$$('#privacyPolicy')).display);
assertEquals( assertEquals(
resolverList[3].policy, privacyPolicyLine.querySelector('a').href); resolverList[3].policy, privacyPolicyLine.querySelector('a').href);
assertEquals( assertEquals(
...@@ -294,7 +299,8 @@ suite('SettingsSecureDnsInteractive', function() { ...@@ -294,7 +299,8 @@ suite('SettingsSecureDnsInteractive', function() {
Polymer.dom.flush(); Polymer.dom.flush();
assertFalse(secureDnsRadioGroup.hidden); assertFalse(secureDnsRadioGroup.hidden);
assertEquals(3, dropdownMenu.selectedIndex); assertEquals(3, dropdownMenu.selectedIndex);
assertFalse(privacyPolicyLine.hasAttribute('hidden')); assertEquals(
'block', getComputedStyle(testElement.$$('#privacyPolicy')).display);
assertEquals( assertEquals(
resolverList[3].policy, privacyPolicyLine.querySelector('a').href); resolverList[3].policy, privacyPolicyLine.querySelector('a').href);
...@@ -303,7 +309,8 @@ suite('SettingsSecureDnsInteractive', function() { ...@@ -303,7 +309,8 @@ suite('SettingsSecureDnsInteractive', function() {
assertFalse(secureDnsRadioGroup.hidden); assertFalse(secureDnsRadioGroup.hidden);
assertEquals(settings.SecureDnsMode.SECURE, secureDnsRadioGroup.selected); assertEquals(settings.SecureDnsMode.SECURE, secureDnsRadioGroup.selected);
assertEquals(3, dropdownMenu.selectedIndex); assertEquals(3, dropdownMenu.selectedIndex);
assertFalse(privacyPolicyLine.hasAttribute('hidden')); assertEquals(
'block', getComputedStyle(testElement.$$('#privacyPolicy')).display);
assertEquals( assertEquals(
resolverList[3].policy, privacyPolicyLine.querySelector('a').href); resolverList[3].policy, privacyPolicyLine.querySelector('a').href);
assertEquals( assertEquals(
...@@ -323,7 +330,7 @@ suite('SettingsSecureDnsInteractive', function() { ...@@ -323,7 +330,7 @@ suite('SettingsSecureDnsInteractive', function() {
Polymer.dom.flush(); Polymer.dom.flush();
const secureDnsRadioGroup = testElement.$$('#secureDnsRadioGroup'); const secureDnsRadioGroup = testElement.$$('#secureDnsRadioGroup');
const secureDnsInput = testElement.$$('#secureDnsInput'); const secureDnsInput = testElement.$$('#secureDnsInput');
assertFalse(secureDnsInput.hasAttribute('hidden')); assertEquals('block', getComputedStyle(secureDnsInput).display);
assertFalse(secureDnsInput.matches(':focus-within')); assertFalse(secureDnsInput.matches(':focus-within'));
assertFalse(secureDnsInput.isInvalid()); assertFalse(secureDnsInput.isInvalid());
assertEquals('https://dns.example/dns-query', secureDnsInput.value); assertEquals('https://dns.example/dns-query', secureDnsInput.value);
...@@ -353,7 +360,7 @@ suite('SettingsSecureDnsInteractive', function() { ...@@ -353,7 +360,7 @@ suite('SettingsSecureDnsInteractive', function() {
managementMode: settings.SecureDnsUiManagementMode.NO_OVERRIDE, managementMode: settings.SecureDnsUiManagementMode.NO_OVERRIDE,
}); });
Polymer.dom.flush(); Polymer.dom.flush();
assertFalse(secureDnsInput.hasAttribute('hidden')); assertEquals('block', getComputedStyle(secureDnsInput).display);
assertFalse(secureDnsInput.matches(':focus-within')); assertFalse(secureDnsInput.matches(':focus-within'));
assertTrue(secureDnsInput.isInvalid()); assertTrue(secureDnsInput.isInvalid());
assertEquals(invalidEntry, secureDnsInput.value); assertEquals(invalidEntry, secureDnsInput.value);
...@@ -411,7 +418,7 @@ suite('SettingsSecureDnsInteractive', function() { ...@@ -411,7 +418,7 @@ suite('SettingsSecureDnsInteractive', function() {
managementMode: settings.SecureDnsUiManagementMode.NO_OVERRIDE, managementMode: settings.SecureDnsUiManagementMode.NO_OVERRIDE,
}); });
Polymer.dom.flush(); Polymer.dom.flush();
assertFalse(secureDnsInput.hasAttribute('hidden')); assertEquals('block', getComputedStyle(secureDnsInput).display);
assertFalse(secureDnsInput.matches(':focus-within')); assertFalse(secureDnsInput.matches(':focus-within'));
assertFalse(secureDnsInput.isInvalid()); assertFalse(secureDnsInput.isInvalid());
assertEquals( assertEquals(
......
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