Commit 0477bf9c authored by Tibor Goldschwendt's avatar Tibor Goldschwendt Committed by Commit Bot

[webui][ntp] Add listening text to voice search overlay

Bug: 1042534
Change-Id: I90ebfa07d025bc668593aa8df08c8cbbe4ddb8a6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2031755
Commit-Queue: Tibor Goldschwendt <tiborg@chromium.org>
Reviewed-by: default avatarMoe Ahmadi <mahmadi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#739138}
parent af1ca923
<style> <style>
:host { :host {
--receiving-audio-color: var(--google-red-refresh-500); --receiving-audio-color: var(--google-red-refresh-500);
--speak-shown-duration: 2s;
}
.display-stack {
display: grid;
}
.display-stack > * {
grid-column-start: 1;
grid-row-start: 1;
} }
#dialog { #dialog {
...@@ -58,18 +68,11 @@ ...@@ -58,18 +68,11 @@
#texts { #texts {
color: var(--ntp-secondary-text-color); color: var(--ntp-secondary-text-color);
display: grid;
flex-grow: 1; flex-grow: 1;
font-size: 32px; font-size: 32px;
text-align: start; text-align: start;
} }
#texts > *,
#micContainer > * {
grid-column-start: 1;
grid-row-start: 1;
}
*[text] { *[text] {
transition-delay: 200ms; transition-delay: 200ms;
transition-duration: 500ms; transition-duration: 500ms;
...@@ -91,6 +94,20 @@ ...@@ -91,6 +94,20 @@
visibility: visible; visibility: visible;
} }
*[text='speak'][visible] #speak {
opacity: 0;
transition: opacity 0ms var(--speak-shown-duration);
}
*[text='speak'] #listening {
opacity: 0;
}
*[text='speak'][visible] #listening {
opacity: 1;
transition: opacity 750ms ease-out var(--speak-shown-duration);
}
#finalResult { #finalResult {
color: var(--ntp-primary-text-color); color: var(--ntp-primary-text-color);
} }
...@@ -112,7 +129,6 @@ ...@@ -112,7 +129,6 @@
--mic-button-size: 165px; --mic-button-size: 165px;
--mic-container-size: 300px; --mic-container-size: 300px;
align-items: center; align-items: center;
display: grid;
flex-shrink: 0; flex-shrink: 0;
height: var(--mic-container-size); height: var(--mic-container-size);
justify-items: center; justify-items: center;
...@@ -174,14 +190,16 @@ ...@@ -174,14 +190,16 @@
</style> </style>
<dialog id="dialog" on-close="onOverlayClose_" on-click="onOverlayClick_"> <dialog id="dialog" on-close="onOverlayClose_" on-click="onOverlayClick_">
<button id="closeButton" tabindex="0" title="$i18n{close}">×</button> <button id="closeButton" tabindex="0" title="$i18n{close}">×</button>
<!-- TODO(crbug.com/1042534): Add Listening state. -->
<div id="content"> <div id="content">
<iron-selector id="texts" selected="[[getText_(state_)]]" <iron-selector id="texts" selected="[[getText_(state_)]]"
attr-for-selected="text" fallback-selection="none" aria-live="polite" attr-for-selected="text" fallback-selection="none" aria-live="polite"
selected-attribute="visible"> selected-attribute="visible" class="display-stack">
<div text="none"></div> <div text="none"></div>
<div text="waiting">$i18n{waiting}</div> <div text="waiting">$i18n{waiting}</div>
<div text="speak">$i18n{speak}</div> <div text="speak" class="display-stack">
<div id="speak">$i18n{speak}</div>
<div id="listening">$i18n{listening}</div>
</div>
<div text="result"> <div text="result">
<span id="finalResult">[[finalResult_]]</span> <span id="finalResult">[[finalResult_]]</span>
<span>[[interimResult_]]</span> <span>[[interimResult_]]</span>
...@@ -213,7 +231,7 @@ ...@@ -213,7 +231,7 @@
</iron-pages> </iron-pages>
</div> </div>
</iron-selector> </iron-selector>
<div id="micContainer" class$="[[getMicClass_(state_)]]"> <div id="micContainer" class$="[[getMicClass_(state_)]] display-stack">
<div id="micVolume" <div id="micVolume"
style="--mic-volume-level: [[micVolumeLevel_]]; style="--mic-volume-level: [[micVolumeLevel_]];
--mic-volume-duration: [[micVolumeDuration_]]ms;"> --mic-volume-duration: [[micVolumeDuration_]]ms;">
......
...@@ -92,6 +92,7 @@ content::WebUIDataSource* CreateNewTabPageUiHtmlSource(Profile* profile) { ...@@ -92,6 +92,7 @@ content::WebUIDataSource* CreateNewTabPageUiHtmlSource(Profile* profile) {
{"details", IDS_NEW_TAB_VOICE_DETAILS}, {"details", IDS_NEW_TAB_VOICE_DETAILS},
{"languageError", IDS_NEW_TAB_VOICE_LANGUAGE_ERROR}, {"languageError", IDS_NEW_TAB_VOICE_LANGUAGE_ERROR},
{"learnMore", IDS_LEARN_MORE}, {"learnMore", IDS_LEARN_MORE},
{"listening", IDS_NEW_TAB_VOICE_LISTENING},
{"networkError", IDS_NEW_TAB_VOICE_NETWORK_ERROR}, {"networkError", IDS_NEW_TAB_VOICE_NETWORK_ERROR},
{"noTranslation", IDS_NEW_TAB_VOICE_NO_TRANSLATION}, {"noTranslation", IDS_NEW_TAB_VOICE_NO_TRANSLATION},
{"noVoice", IDS_NEW_TAB_VOICE_NO_VOICE}, {"noVoice", IDS_NEW_TAB_VOICE_NO_VOICE},
......
...@@ -66,7 +66,10 @@ suite('NewTabPageVoiceSearchOverlayTest', () => { ...@@ -66,7 +66,10 @@ suite('NewTabPageVoiceSearchOverlayTest', () => {
// Assert. // Assert.
assertTrue(isVisible( assertTrue(isVisible(
voiceSearchOverlay.shadowRoot.querySelector('#texts *[text=waiting]'))); voiceSearchOverlay.shadowRoot.querySelector('#texts *[text=waiting]')));
assertEquals(voiceSearchOverlay.$.micContainer.className, ''); assertFalse(
voiceSearchOverlay.$.micContainer.classList.contains('listening'));
assertFalse(
voiceSearchOverlay.$.micContainer.classList.contains('receiving'));
assertStyle(voiceSearchOverlay.$.micVolume, '--mic-volume-level', '0'); assertStyle(voiceSearchOverlay.$.micVolume, '--mic-volume-level', '0');
}); });
...@@ -156,7 +159,10 @@ suite('NewTabPageVoiceSearchOverlayTest', () => { ...@@ -156,7 +159,10 @@ suite('NewTabPageVoiceSearchOverlayTest', () => {
// Assert. // Assert.
const href = await testProxy.whenCalled('navigate'); const href = await testProxy.whenCalled('navigate');
assertEquals(href, `${googleBaseUrl}/search?q=hello+world&gs_ivs=1`); assertEquals(href, `${googleBaseUrl}/search?q=hello+world&gs_ivs=1`);
assertEquals(voiceSearchOverlay.$.micContainer.className, ''); assertFalse(
voiceSearchOverlay.$.micContainer.classList.contains('listening'));
assertFalse(
voiceSearchOverlay.$.micContainer.classList.contains('receiving'));
assertStyle(voiceSearchOverlay.$.micVolume, '--mic-volume-level', '0'); assertStyle(voiceSearchOverlay.$.micVolume, '--mic-volume-level', '0');
}); });
...@@ -169,7 +175,10 @@ suite('NewTabPageVoiceSearchOverlayTest', () => { ...@@ -169,7 +175,10 @@ suite('NewTabPageVoiceSearchOverlayTest', () => {
voiceSearchOverlay.shadowRoot.querySelector('#texts *[text=error]'))); voiceSearchOverlay.shadowRoot.querySelector('#texts *[text=error]')));
assertTrue(isVisible( assertTrue(isVisible(
voiceSearchOverlay.shadowRoot.querySelector('#errors *[error="2"]'))); voiceSearchOverlay.shadowRoot.querySelector('#errors *[error="2"]')));
assertEquals(voiceSearchOverlay.$.micContainer.className, ''); assertFalse(
voiceSearchOverlay.$.micContainer.classList.contains('listening'));
assertFalse(
voiceSearchOverlay.$.micContainer.classList.contains('receiving'));
assertStyle(voiceSearchOverlay.$.micVolume, '--mic-volume-level', '0'); assertStyle(voiceSearchOverlay.$.micVolume, '--mic-volume-level', '0');
}); });
......
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