Skip to content

Commit

Permalink
Quick Answers V2: Add settings toggles for request types
Browse files Browse the repository at this point in the history
https://docs.google.com/presentation/d/1L0QFZykpX1PUL48Hh557Q1M-lQ1SzpZTe-piWU37v60/edit?resourcekey=0-zVG6nz-s0Cgbuo_pq9jhjQ#slide=id.gc7519d0064_1_0

Bug: b/190577441
Test: Manual Test
Change-Id: I1b81dcd46b762ae43ff6bad0f8755db4bd9aec86
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2950340
Commit-Queue: Yue Li <updowndota@chromium.org>
Reviewed-by: Sam McNally <sammc@chromium.org>
Reviewed-by: Kyle Horimoto <khorimoto@chromium.org>
Reviewed-by: Xiaohui Chen <xiaohuic@chromium.org>
Cr-Commit-Position: refs/heads/master@{#892746}
  • Loading branch information
Yue Li authored and Chromium LUCI CQ committed Jun 15, 2021
1 parent f2ab631 commit 6790d8a
Show file tree
Hide file tree
Showing 19 changed files with 367 additions and 15 deletions.
9 changes: 9 additions & 0 deletions chrome/app/os_settings_search_tag_strings.grdp
Original file line number Diff line number Diff line change
Expand Up @@ -728,6 +728,15 @@
<message name="IDS_OS_SETTINGS_TAG_QUICK_ANSWERS_ALT3" desc="Text for search result item which, when clicked, navigates the user to Quick Answers settings, with a toggle to enable/disable the functionality. Alternate phrase for: 'Quick Answers', 'Look up', 'Quick search'">
Right click card
</message>
<message name="IDS_OS_SETTINGS_TAG_QUICK_ANSWERS_DEFINITION" desc="Text for search result item which, when clicked, navigates the user to Quick Answers settings, with a toggle to enable/disable the Quick Answers definition functionality.">
Quick Answers definition
</message>
<message name="IDS_OS_SETTINGS_TAG_QUICK_ANSWERS_TRANSLATION" desc="Text for search result item which, when clicked, navigates the user to Quick Answers settings, with a toggle to enable/disable the Quick Answers translation functionality.">
Quick Answers translation
</message>
<message name="IDS_OS_SETTINGS_TAG_QUICK_ANSWERS_UNIT_CONVERSION" desc="Text for search result item which, when clicked, navigates the user to Quick Answers settings, with a toggle to enable/disable the Quick Answers unit conversion functionality.">
Quick Answers unit conversion
</message>
<message name="IDS_OS_SETTINGS_TAG_ASSISTANT" desc="Text for search result item which, when clicked, navigates the user to Google Assistant settings.">
Google Assistant
</message>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
5977ea558e027e595868dd42217b4a27f4187cba
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
59488166c0decf1749100f7bfedb314fb6121a36
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
e24b29300b9cc86b2235aca673c340bc633fd0dd
12 changes: 12 additions & 0 deletions chrome/app/os_settings_strings.grdp
Original file line number Diff line number Diff line change
Expand Up @@ -777,6 +777,18 @@
<message name="IDS_SETTINGS_QUICK_ANSWERS_ENABLE_DESCRIPTION" desc="Sub label for the Quick Answers toggle.">
With a right-click or long press, show related info for your text selection
</message>
<message name="IDS_SETTINGS_QUICK_ANSWERS_DEFINITION_ENABLE" desc="Title for a toggle that controls the Quick Answers definiton feature.">
Definition
</message>
<message name="IDS_SETTINGS_QUICK_ANSWERS_TRANSLATION_ENABLE" desc="Title for a toggle that controls the Quick Answers translation feature.">
Translation
</message>
<message name="IDS_SETTINGS_QUICK_ANSWERS_TRANSLATION_ENABLE_DESCRIPTION" desc="Sub label for the Quick Answers translation toggle.">
Add your preferred website languages. The top language from the list will be used for translations.
</message>
<message name="IDS_SETTINGS_QUICK_ANSWERS_UNIT_CONVERSION_ENABLE" desc="Title for a toggle that controls the Quick Answers unit conversion feature.">
Unit Conversion
</message>

<!-- Files Page (OS settings) -->
<message name="IDS_OS_SETTINGS_FILES" desc="Name of the settings page which displays file preferences.">
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
b924890205d69dcd101a272d004e5d9da4e9f43c
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
b924890205d69dcd101a272d004e5d9da4e9f43c
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
b924890205d69dcd101a272d004e5d9da4e9f43c
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
b924890205d69dcd101a272d004e5d9da4e9f43c
9 changes: 9 additions & 0 deletions chrome/browser/extensions/api/settings_private/prefs_util.cc
Original file line number Diff line number Diff line change
Expand Up @@ -614,6 +614,15 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() {
// Quick Answers.
(*s_allowlist)[chromeos::quick_answers::prefs::kQuickAnswersEnabled] =
settings_api::PrefType::PREF_TYPE_BOOLEAN;
(*s_allowlist)
[chromeos::quick_answers::prefs::kQuickAnswersDefinitionEnabled] =
settings_api::PrefType::PREF_TYPE_BOOLEAN;
(*s_allowlist)
[chromeos::quick_answers::prefs::kQuickAnswersTranslationEnabled] =
settings_api::PrefType::PREF_TYPE_BOOLEAN;
(*s_allowlist)
[chromeos::quick_answers::prefs::kQuickAnswersUnitConverstionEnabled] =
settings_api::PrefType::PREF_TYPE_BOOLEAN;

// Misc.
(*s_allowlist)[::prefs::kUse24HourClock] =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,19 @@
<dom-module id="settings-search-subpage">
<template>
<style include="cr-shared-style settings-shared">
.subsection {
padding-inline-end: var(--cr-section-padding);
padding-inline-start: var(--cr-section-indent-padding);
}

.subsection > settings-toggle-button {
padding-inline-end: 0;
padding-inline-start: 0;
}

#quick-answers-definition-enable {
border-top: none;
}
</style>
<settings-search-engine
deep-link-focus-id$="[[Setting.kPreferredSearchEngine]]">
Expand All @@ -36,6 +49,28 @@
sub-label="$i18n{quickAnswersEnableDescription}"
deep-link-focus-id$="[[Setting.kQuickAnswersOnOff]]">
</settings-toggle-button>
<template is="dom-if"
if="[[prefs.settings.quick_answers.enabled.value]]">
<settings-toggle-button id="quick-answers-definition-enable"
class="hr subsection no-border-top"
pref="{{prefs.settings.quick_answers.definition.enabled}}"
label="$i18n{quickAnswersDefinitionEnable}"
deep-link-focus-id$="[[Setting.kQuickAnswersDefinition]]">
</settings-toggle-button>
<settings-toggle-button id="quick-answers-translation-enable"
class="hr subsection"
pref="{{prefs.settings.quick_answers.translation.enabled}}"
label="$i18n{quickAnswersTranslationEnable}"
sub-label="$i18n{quickAnswersTranslationEnableDescription}"
deep-link-focus-id$="[[Setting.kQuickAnswersTranslation]]">
</settings-toggle-button>
<settings-toggle-button id="quick-answers-unit-conversion-enable"
class="hr subsection"
pref="{{prefs.settings.quick_answers.unit_conversion.enabled}}"
label="$i18n{quickAnswersUnitConversionEnable}"
deep-link-focus-id$="[[Setting.kQuickAnswersUnitConversion]]">
</settings-toggle-button>
</template>
</template>
<script src="search_subpage.js"></script>
</dom-module>
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ Polymer({
behaviors: [
DeepLinkingBehavior,
I18nBehavior,
PrefsBehavior,
settings.RouteObserverBehavior,
],

Expand All @@ -25,6 +26,9 @@ Polymer({
value: () => new Set([
chromeos.settings.mojom.Setting.kPreferredSearchEngine,
chromeos.settings.mojom.Setting.kQuickAnswersOnOff,
chromeos.settings.mojom.Setting.kQuickAnswersDefinition,
chromeos.settings.mojom.Setting.kQuickAnswersTranslation,
chromeos.settings.mojom.Setting.kQuickAnswersUnitConversion,
]),
},
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,9 @@ enum Setting {
kAssistantVoiceInput = 606,
kTrainAssistantVoiceModel = 607,
kQuickAnswersOnOff = 608,
kQuickAnswersDefinition = 609,
kQuickAnswersTranslation = 610,
kQuickAnswersUnitConversion = 611,

// Apps section.
kManageAndroidPreferences = 700,
Expand Down
75 changes: 64 additions & 11 deletions chrome/browser/ui/webui/settings/chromeos/search_section.cc
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,30 @@ const std::vector<SearchConcept>& GetQuickAnswersSearchConcepts() {
return *tags;
}

const std::vector<SearchConcept>& GetQuickAnswersOnSearchConcepts() {
static const base::NoDestructor<std::vector<SearchConcept>> tags({
{IDS_OS_SETTINGS_TAG_QUICK_ANSWERS_DEFINITION,
mojom::kSearchSubpagePath,
mojom::SearchResultIcon::kMagnifyingGlass,
mojom::SearchResultDefaultRank::kLow,
mojom::SearchResultType::kSetting,
{.setting = mojom::Setting::kQuickAnswersDefinition}},
{IDS_OS_SETTINGS_TAG_QUICK_ANSWERS_TRANSLATION,
mojom::kSearchSubpagePath,
mojom::SearchResultIcon::kMagnifyingGlass,
mojom::SearchResultDefaultRank::kLow,
mojom::SearchResultType::kSetting,
{.setting = mojom::Setting::kQuickAnswersTranslation}},
{IDS_OS_SETTINGS_TAG_QUICK_ANSWERS_UNIT_CONVERSION,
mojom::kSearchSubpagePath,
mojom::SearchResultIcon::kMagnifyingGlass,
mojom::SearchResultDefaultRank::kLow,
mojom::SearchResultType::kSetting,
{.setting = mojom::Setting::kQuickAnswersUnitConversion}},
});
return *tags;
}

const std::vector<SearchConcept>& GetAssistantSearchConcepts() {
static const base::NoDestructor<std::vector<SearchConcept>> tags({
{IDS_OS_SETTINGS_TAG_ASSISTANT,
Expand Down Expand Up @@ -155,6 +179,14 @@ void AddQuickAnswersStrings(content::WebUIDataSource* html_source) {
{"quickAnswersEnable", IDS_SETTINGS_QUICK_ANSWERS_ENABLE},
{"quickAnswersEnableDescription",
IDS_SETTINGS_QUICK_ANSWERS_ENABLE_DESCRIPTION},
{"quickAnswersDefinitionEnable",
IDS_SETTINGS_QUICK_ANSWERS_DEFINITION_ENABLE},
{"quickAnswersTranslationEnable",
IDS_SETTINGS_QUICK_ANSWERS_TRANSLATION_ENABLE},
{"quickAnswersTranslationEnableDescription",
IDS_SETTINGS_QUICK_ANSWERS_TRANSLATION_ENABLE_DESCRIPTION},
{"quickAnswersUnitConversionEnable",
IDS_SETTINGS_QUICK_ANSWERS_UNIT_CONVERSION_ENABLE},
};

html_source->AddLocalizedStrings(kLocalizedStrings);
Expand Down Expand Up @@ -201,18 +233,22 @@ void AddGoogleAssistantStrings(content::WebUIDataSource* html_source) {
}

const std::vector<mojom::Setting>& GetSearchSettings() {
if (ShouldShowQuickAnswersSettings()) {
static const base::NoDestructor<std::vector<mojom::Setting>> settings({
mojom::Setting::kQuickAnswersOnOff,
mojom::Setting::kPreferredSearchEngine,
});
return *settings;
} else {
static const base::NoDestructor<std::vector<mojom::Setting>> settings({
static const base::NoDestructor<std::vector<mojom::Setting>> settings([] {
std::vector<mojom::Setting> base_settings{
mojom::Setting::kQuickAnswersOnOff,
});
return *settings;
}
mojom::Setting::kQuickAnswersDefinition,
mojom::Setting::kQuickAnswersTranslation,
mojom::Setting::kQuickAnswersUnitConversion,
};

if (ShouldShowQuickAnswersSettings()) {
base_settings.insert(base_settings.end(),
mojom::Setting::kPreferredSearchEngine);
}

return base_settings;
}());
return *settings;
}

} // namespace
Expand All @@ -233,6 +269,11 @@ SearchSection::SearchSection(Profile* profile,
assistant_state->AddObserver(this);
UpdateAssistantSearchTags();
}

if (ShouldShowQuickAnswersSettings()) {
ash::QuickAnswersState::Get()->AddObserver(this);
UpdateQuickAnswersSearchTags();
}
}

SearchSection::~SearchSection() {
Expand Down Expand Up @@ -347,6 +388,10 @@ void SearchSection::OnAssistantHotwordEnabled(bool enabled) {
UpdateAssistantSearchTags();
}

void SearchSection::OnSettingsEnabled(bool enabled) {
UpdateQuickAnswersSearchTags();
}

bool SearchSection::IsAssistantAllowed() const {
// NOTE: This will be false when the flag is disabled.
return ::assistant::IsAssistantAllowedForProfile(profile()) ==
Expand Down Expand Up @@ -382,5 +427,13 @@ void SearchSection::UpdateAssistantSearchTags() {
}
}

void SearchSection::UpdateQuickAnswersSearchTags() {
SearchTagRegistry::ScopedTagUpdater updater = registry()->StartUpdate();
updater.RemoveSearchTags(GetQuickAnswersOnSearchConcepts());

if (ash::QuickAnswersState::Get()->settings_enabled())
updater.AddSearchTags(GetQuickAnswersOnSearchConcepts());
}

} // namespace settings
} // namespace chromeos
8 changes: 7 additions & 1 deletion chrome/browser/ui/webui/settings/chromeos/search_section.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#define CHROME_BROWSER_UI_WEBUI_SETTINGS_CHROMEOS_SEARCH_SECTION_H_

#include "ash/public/cpp/assistant/assistant_state_base.h"
#include "ash/public/cpp/quick_answers/quick_answers_state.h"
#include "base/values.h"
#include "chrome/browser/ui/webui/settings/chromeos/os_settings_section.h"

Expand All @@ -22,7 +23,8 @@ class SearchTagRegistry;
// tags for Assistant settings are added/removed depending on whether the
// feature and relevant flags are enabled/disabled.
class SearchSection : public OsSettingsSection,
public ash::AssistantStateObserver {
public ash::AssistantStateObserver,
public ash::QuickAnswersStateObserver {
public:
SearchSection(Profile* profile, SearchTagRegistry* search_tag_registry);
~SearchSection() override;
Expand All @@ -44,8 +46,12 @@ class SearchSection : public OsSettingsSection,
void OnAssistantSettingsEnabled(bool enabled) override;
void OnAssistantHotwordEnabled(bool enabled) override;

// ash::QuickAnswersStateObserver:
void OnSettingsEnabled(bool enabled) override;

bool IsAssistantAllowed() const;
void UpdateAssistantSearchTags();
void UpdateQuickAnswersSearchTags();
};

} // namespace settings
Expand Down

0 comments on commit 6790d8a

Please sign in to comment.