Commit 3bb0a4eb authored by Roman Arora's avatar Roman Arora Committed by Commit Bot

Tab Search: Search field font & placeholder fixes.

- Change search field font to inherited one
- Move shortcut text to a side in a div

Bug: 1145608
Change-Id: I6e6926c9d7a6a843072950e2fd0f31eaaf0df747
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2521097
Commit-Queue: Roman Arora <romanarora@chromium.org>
Reviewed-by: default avatarThomas Lukaszewicz <tluk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#825520}
parent ad5eda73
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
</svg> </svg>
</iron-iconset-svg> </iron-iconset-svg>
<tab-search-search-field id="searchField" autofocus clear-label="$i18n{clearSearch}" <tab-search-search-field id="searchField" autofocus clear-label="$i18n{clearSearch}"
label="$i18n{searchTabs} [[getKeyboardShortcut_()]]" on-focus="onSearchFocus_" label="$i18n{searchTabs}" on-focus="onSearchFocus_"
on-keydown="onSearchKeyDown_" on-search-changed="onSearchChanged_"> on-keydown="onSearchKeyDown_" on-search-changed="onSearchChanged_">
</tab-search-search-field> </tab-search-search-field>
<div id="tabs"> <div id="tabs">
......
...@@ -14,7 +14,6 @@ import './tab_search_search_field.js'; ...@@ -14,7 +14,6 @@ import './tab_search_search_field.js';
import './strings.js'; import './strings.js';
import {assert} from 'chrome://resources/js/assert.m.js'; import {assert} from 'chrome://resources/js/assert.m.js';
import {isMac} from 'chrome://resources/js/cr.m.js';
import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
import {listenOnce} from 'chrome://resources/js/util.m.js'; import {listenOnce} from 'chrome://resources/js/util.m.js';
import {IronA11yAnnouncer} from 'chrome://resources/polymer/v3_0/iron-a11y-announcer/iron-a11y-announcer.js'; import {IronA11yAnnouncer} from 'chrome://resources/polymer/v3_0/iron-a11y-announcer/iron-a11y-announcer.js';
...@@ -423,14 +422,6 @@ export class TabSearchAppElement extends PolymerElement { ...@@ -423,14 +422,6 @@ export class TabSearchAppElement extends PolymerElement {
return `${tabData.tab.title} ${tabData.hostname}`; return `${tabData.tab.title} ${tabData.hostname}`;
} }
/**
* @return {string}
* @private
*/
getKeyboardShortcut_() {
return (isMac ? 'Cmd' : 'Ctrl') + '+Shift+A';
}
/** /**
* @param {!Array<!WindowTabs>} windowTabs * @param {!Array<!WindowTabs>} windowTabs
* @private * @private
......
...@@ -8,36 +8,64 @@ ...@@ -8,36 +8,64 @@
user-select: none; user-select: none;
} }
:host([has-search-text]) label {
visibility: hidden;
}
#searchIcon { #searchIcon {
height: var(--mwb-icon-size); height: var(--mwb-icon-size);
padding-inline-end: var(--mwb-list-item-horizontal-margin); padding-inline-end: var(--mwb-list-item-horizontal-margin);
width: var(--mwb-icon-size); width: var(--mwb-icon-size);
} }
#searchInput { #searchWrapper {
padding: 0; display: flex;
flex: 1;
height: 100%;
position: relative;
} }
@media (prefers-color-scheme: dark) { #searchLabel {
#searchIcon { align-items: center;
color: var(--google-blue-refresh-300); color: var(--cr-secondary-text-color);
} cursor: text;
display: flex;
font-size: var(--mwb-primary-text-font-size);
height: 100%;
justify-content: space-between;
position: absolute;
width: 100%;
} }
input { #searchInput {
align-self: stretch;
background-color: transparent; background-color: transparent;
border: none; border: none;
border-radius: 0; border-radius: 0;
color: var(--cr-primary-text-color); color: var(--cr-primary-text-color);
flex: 1; flex: 1;
font-family: inherit;
font-size: var(--mwb-primary-text-font-size); font-size: var(--mwb-primary-text-font-size);
font-style: inherit;
outline: none; outline: none;
padding: 0;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
@media (prefers-color-scheme: dark) {
#searchIcon {
color: var(--google-blue-refresh-300);
}
}
</style> </style>
<iron-icon id="searchIcon" icon="mwb16:search"></iron-icon> <iron-icon id="searchIcon" icon="mwb16:search"></iron-icon>
<input id="searchInput" on-search="onSearchTermSearch" <div id="searchWrapper">
on-input="onSearchTermInput" aria-label$="[[label]]" type="search" <label id="searchLabel" for="searchInput" aria-hidden="true">
autofocus="[[autofocus]]" placeholder="[[label]]" autocomplete="off" <span>[[label]]</span>
spellcheck="false"> <span>[[shortcut_]]</span>
</label>
<input id="searchInput" aria-labelledby="searchLabel"
autofocus="[[autofocus]]" autocomplete="off"
on-search="onSearchTermSearch" on-input="onSearchTermInput" type="search"
spellcheck="false">
</div>
...@@ -8,6 +8,7 @@ import 'chrome://resources/cr_elements/shared_vars_css.m.js'; ...@@ -8,6 +8,7 @@ import 'chrome://resources/cr_elements/shared_vars_css.m.js';
import 'chrome://resources/polymer/v3_0/iron-icon/iron-icon.js'; import 'chrome://resources/polymer/v3_0/iron-icon/iron-icon.js';
import {CrSearchFieldBehavior, CrSearchFieldBehaviorInterface} from 'chrome://resources/cr_elements/cr_search_field/cr_search_field_behavior.m.js'; import {CrSearchFieldBehavior, CrSearchFieldBehaviorInterface} from 'chrome://resources/cr_elements/cr_search_field/cr_search_field_behavior.m.js';
import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
/** /**
...@@ -38,6 +39,12 @@ export class TabSearchSearchField extends TabSearchSearchFieldBase { ...@@ -38,6 +39,12 @@ export class TabSearchSearchField extends TabSearchSearchFieldBase {
type: Boolean, type: Boolean,
value: false, value: false,
}, },
/** @private {string} */
shortcut_: {
type: String,
value: () => loadTimeData.getString('shortcutText'),
},
}; };
} }
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
#include "content/public/browser/web_ui.h" #include "content/public/browser/web_ui.h"
#include "content/public/browser/web_ui_data_source.h" #include "content/public/browser/web_ui_data_source.h"
#include "ui/base/accelerators/accelerator.h"
#include "ui/base/webui/web_ui_util.h" #include "ui/base/webui/web_ui_util.h"
#include "ui/views/style/platform_style.h" #include "ui/views/style/platform_style.h"
...@@ -62,8 +63,12 @@ TabSearchUI::TabSearchUI(content::WebUI* web_ui) ...@@ -62,8 +63,12 @@ TabSearchUI::TabSearchUI(content::WebUI* web_ui)
features::kTabSearchSearchThresholdMax)); features::kTabSearchSearchThresholdMax));
source->AddDouble("searchTitleToHostnameWeightRatio", source->AddDouble("searchTitleToHostnameWeightRatio",
features::kTabSearchTitleToHostnameWeightRatio.Get()); features::kTabSearchTitleToHostnameWeightRatio.Get());
source->AddLocalizedString("close", IDS_CLOSE); source->AddLocalizedString("close", IDS_CLOSE);
ui::Accelerator accelerator(ui::VKEY_A,
ui::EF_SHIFT_DOWN | ui::EF_PLATFORM_ACCELERATOR);
source->AddString("shortcutText", accelerator.GetShortcutText());
webui::SetupWebUIDataSource( webui::SetupWebUIDataSource(
source, base::make_span(kTabSearchResources, kTabSearchResourcesSize), source, base::make_span(kTabSearchResources, kTabSearchResourcesSize),
/*generated_path=*/std::string(), IDR_TAB_SEARCH_TAB_SEARCH_PAGE_HTML); /*generated_path=*/std::string(), IDR_TAB_SEARCH_TAB_SEARCH_PAGE_HTML);
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
import {getDeepActiveElement} from 'chrome://resources/js/util.m.js'; import {getDeepActiveElement} from 'chrome://resources/js/util.m.js';
import {keyDownOn} from 'chrome://resources/polymer/v3_0/iron-test-helpers/mock-interactions.js'; import {keyDownOn} from 'chrome://resources/polymer/v3_0/iron-test-helpers/mock-interactions.js';
import {TabSearchAppElement} from 'chrome://tab-search/app.js'; import {TabSearchAppElement} from 'chrome://tab-search/app.js';
...@@ -15,7 +14,7 @@ import {assertEquals, assertGT} from '../../chai_assert.js'; ...@@ -15,7 +14,7 @@ import {assertEquals, assertGT} from '../../chai_assert.js';
import {flushTasks} from '../../test_util.m.js'; import {flushTasks} from '../../test_util.m.js';
import {generateSampleDataFromSiteNames, sampleData, sampleSiteNames} from './tab_search_test_data.js'; import {generateSampleDataFromSiteNames, sampleData, sampleSiteNames} from './tab_search_test_data.js';
import {assertTabItemAndNeighborsInViewBounds, disableScrollIntoViewAnimations} from './tab_search_test_helper.js'; import {assertTabItemAndNeighborsInViewBounds, disableScrollIntoViewAnimations, initLoadTimeDataWithDefaults} from './tab_search_test_helper.js';
import {TestTabSearchApiProxy} from './test_tab_search_api_proxy.js'; import {TestTabSearchApiProxy} from './test_tab_search_api_proxy.js';
suite('TabSearchAppFocusTest', () => { suite('TabSearchAppFocusTest', () => {
...@@ -28,16 +27,14 @@ suite('TabSearchAppFocusTest', () => { ...@@ -28,16 +27,14 @@ suite('TabSearchAppFocusTest', () => {
/** /**
* @param {ProfileTabs} sampleData * @param {ProfileTabs} sampleData
* @param {Object=} loadTimeOverridenData * @param {Object=} loadTimeOverriddenData
*/ */
async function setupTest(sampleData, loadTimeOverridenData) { async function setupTest(sampleData, loadTimeOverriddenData) {
testProxy = new TestTabSearchApiProxy(); testProxy = new TestTabSearchApiProxy();
testProxy.setProfileTabs(sampleData); testProxy.setProfileTabs(sampleData);
TabSearchApiProxyImpl.instance_ = testProxy; TabSearchApiProxyImpl.instance_ = testProxy;
if (loadTimeOverridenData) { initLoadTimeDataWithDefaults(loadTimeOverriddenData);
loadTimeData.overrideValues(loadTimeOverridenData);
}
tabSearchApp = /** @type {!TabSearchAppElement} */ tabSearchApp = /** @type {!TabSearchAppElement} */
(document.createElement('tab-search-app')); (document.createElement('tab-search-app'));
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
import {keyDownOn} from 'chrome://resources/polymer/v3_0/iron-test-helpers/mock-interactions.js'; import {keyDownOn} from 'chrome://resources/polymer/v3_0/iron-test-helpers/mock-interactions.js';
import {TabSearchAppElement} from 'chrome://tab-search/app.js'; import {TabSearchAppElement} from 'chrome://tab-search/app.js';
import {ProfileTabs, Tab} from 'chrome://tab-search/tab_search.mojom-webui.js'; import {ProfileTabs, Tab} from 'chrome://tab-search/tab_search.mojom-webui.js';
...@@ -14,7 +13,7 @@ import {assertEquals, assertFalse, assertGT, assertNotEquals, assertTrue} from ' ...@@ -14,7 +13,7 @@ import {assertEquals, assertFalse, assertGT, assertNotEquals, assertTrue} from '
import {flushTasks, waitAfterNextRender} from '../../test_util.m.js'; import {flushTasks, waitAfterNextRender} from '../../test_util.m.js';
import {generateSampleDataFromSiteNames, sampleData, sampleSiteNames} from './tab_search_test_data.js'; import {generateSampleDataFromSiteNames, sampleData, sampleSiteNames} from './tab_search_test_data.js';
import {assertTabItemAndNeighborsInViewBounds, assertTabItemInViewBounds, disableScrollIntoViewAnimations} from './tab_search_test_helper.js'; import {assertTabItemAndNeighborsInViewBounds, assertTabItemInViewBounds, disableScrollIntoViewAnimations, initLoadTimeDataWithDefaults} from './tab_search_test_helper.js';
import {TestTabSearchApiProxy} from './test_tab_search_api_proxy.js'; import {TestTabSearchApiProxy} from './test_tab_search_api_proxy.js';
suite('TabSearchAppTest', () => { suite('TabSearchAppTest', () => {
...@@ -45,16 +44,14 @@ suite('TabSearchAppTest', () => { ...@@ -45,16 +44,14 @@ suite('TabSearchAppTest', () => {
/** /**
* @param {ProfileTabs} sampleData * @param {ProfileTabs} sampleData
* @param {Object=} loadTimeOverridenData * @param {Object=} loadTimeOverriddenData
*/ */
async function setupTest(sampleData, loadTimeOverridenData) { async function setupTest(sampleData, loadTimeOverriddenData) {
testProxy = new TestTabSearchApiProxy(); testProxy = new TestTabSearchApiProxy();
testProxy.setProfileTabs(sampleData); testProxy.setProfileTabs(sampleData);
TabSearchApiProxyImpl.instance_ = testProxy; TabSearchApiProxyImpl.instance_ = testProxy;
if (loadTimeOverridenData) { initLoadTimeDataWithDefaults(loadTimeOverriddenData);
loadTimeData.overrideValues(loadTimeOverridenData);
}
tabSearchApp = /** @type {!TabSearchAppElement} */ tabSearchApp = /** @type {!TabSearchAppElement} */
(document.createElement('tab-search-app')); (document.createElement('tab-search-app'));
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
import {assertGE, assertLE} from '../../chai_assert.js'; import {assertGE, assertLE} from '../../chai_assert.js';
/** /**
...@@ -55,3 +56,18 @@ export function assertTabItemAndNeighborsInViewBounds( ...@@ -55,3 +56,18 @@ export function assertTabItemAndNeighborsInViewBounds(
assertTabItemInViewBounds(tabsDiv, tabItems[index + 1]); assertTabItemInViewBounds(tabsDiv, tabItems[index + 1]);
} }
} }
/**
* Initialize the loadTimeData with the provided data and defaults.
* @param {Object=} loadTimeOverriddenData
*/
export function initLoadTimeDataWithDefaults(loadTimeOverriddenData) {
if (!loadTimeOverriddenData) {
loadTimeOverriddenData = {};
}
if (!loadTimeOverriddenData.hasOwnProperty('shortcutText')) {
loadTimeOverriddenData.shortcutText = '';
}
loadTimeData.overrideValues(loadTimeOverriddenData);
}
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