Commit c51be489 authored by David Black's avatar David Black Committed by Commit Bot

Modify suggestion chip TTS behavior for Assistant.

Previously, a text interaction initiated by suggestion chip would
never return TTS. Now, suggestion chips will allow TTS if the previous
response contained TTS. In such cases, the suggestion chip text
interaction is really a continuation of the preceding voice interaction.

This CL also renames the SendTextQuery API to StartTextInteraction to
be consistent with the other StartXInteraction APIs.

Bug: b:119565728
Change-Id: I8bf836b8d2b542bf4f50e50de55c989ce349f7ce
Reviewed-on: https://chromium-review.googlesource.com/c/1337812Reviewed-by: default avatarXiaohui Chen <xiaohuic@chromium.org>
Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Commit-Queue: David Black <dmblack@google.com>
Cr-Commit-Position: refs/heads/master@{#609574}
parent 748d454a
...@@ -120,7 +120,7 @@ void AssistantInteractionController::OnDeepLinkReceived( ...@@ -120,7 +120,7 @@ void AssistantInteractionController::OnDeepLinkReceived(
} }
assistant_controller_->ui_controller()->ShowUi(AssistantSource::kDeepLink); assistant_controller_->ui_controller()->ShowUi(AssistantSource::kDeepLink);
StartTextInteraction(query.value()); StartTextInteraction(query.value(), /*allow_tts=*/false);
} }
void AssistantInteractionController::OnUiModeChanged(AssistantUiMode ui_mode) { void AssistantInteractionController::OnUiModeChanged(AssistantUiMode ui_mode) {
...@@ -369,7 +369,13 @@ void AssistantInteractionController::OnSuggestionChipPressed( ...@@ -369,7 +369,13 @@ void AssistantInteractionController::OnSuggestionChipPressed(
} }
// Otherwise, we will submit a simple text query using the suggestion text. // Otherwise, we will submit a simple text query using the suggestion text.
StartTextInteraction(suggestion->text); // Note that a text query originating from a suggestion chip will carry
// forward the allowance/forbiddance of TTS from the previous response. This
// is because suggestion chips pressed after a voice query should continue to
// return TTS, as really the text interaction is just a continuation of the
// user's preceding voice interaction.
StartTextInteraction(suggestion->text, /*allow_tts=*/model_.response() &&
model_.response()->has_tts());
} }
void AssistantInteractionController::OnSuggestionsResponse( void AssistantInteractionController::OnSuggestionsResponse(
...@@ -497,7 +503,7 @@ void AssistantInteractionController::OnDialogPlateButtonPressed( ...@@ -497,7 +503,7 @@ void AssistantInteractionController::OnDialogPlateButtonPressed(
void AssistantInteractionController::OnDialogPlateContentsCommitted( void AssistantInteractionController::OnDialogPlateContentsCommitted(
const std::string& text) { const std::string& text) {
DCHECK(!text.empty()); DCHECK(!text.empty());
StartTextInteraction(text); StartTextInteraction(text, /*allow_tts=*/false);
} }
bool AssistantInteractionController::HasUnprocessedPendingResponse() { bool AssistantInteractionController::HasUnprocessedPendingResponse() {
...@@ -581,12 +587,13 @@ void AssistantInteractionController::StartScreenContextInteraction() { ...@@ -581,12 +587,13 @@ void AssistantInteractionController::StartScreenContextInteraction() {
} }
void AssistantInteractionController::StartTextInteraction( void AssistantInteractionController::StartTextInteraction(
const std::string text) { const std::string text,
bool allow_tts) {
StopActiveInteraction(false); StopActiveInteraction(false);
model_.SetPendingQuery(std::make_unique<AssistantTextQuery>(text)); model_.SetPendingQuery(std::make_unique<AssistantTextQuery>(text));
assistant_->SendTextQuery(text); assistant_->StartTextInteraction(text, allow_tts);
} }
void AssistantInteractionController::StartVoiceInteraction() { void AssistantInteractionController::StartVoiceInteraction() {
......
...@@ -116,7 +116,7 @@ class AssistantInteractionController ...@@ -116,7 +116,7 @@ class AssistantInteractionController
void StartMetalayerInteraction(const gfx::Rect& region); void StartMetalayerInteraction(const gfx::Rect& region);
void StartScreenContextInteraction(); void StartScreenContextInteraction();
void StartTextInteraction(const std::string text); void StartTextInteraction(const std::string text, bool allow_tts);
void StartVoiceInteraction(); void StartVoiceInteraction();
void StopActiveInteraction(bool cancel_conversation); void StopActiveInteraction(bool cancel_conversation);
......
...@@ -344,11 +344,15 @@ void AssistantManagerServiceImpl::StartMetalayerInteraction( ...@@ -344,11 +344,15 @@ void AssistantManagerServiceImpl::StartMetalayerInteraction(
/*assistant_tree=*/nullptr)); /*assistant_tree=*/nullptr));
} }
void AssistantManagerServiceImpl::SendTextQuery(const std::string& query) { void AssistantManagerServiceImpl::StartTextInteraction(const std::string& query,
bool allow_tts) {
assistant_client::VoicelessOptions options; assistant_client::VoicelessOptions options;
options.is_user_initiated = true; options.is_user_initiated = true;
options.modality =
assistant_client::VoicelessOptions::Modality::TYPING_MODALITY; if (!allow_tts) {
options.modality =
assistant_client::VoicelessOptions::Modality::TYPING_MODALITY;
}
std::string interaction = CreateTextQueryInteraction(query); std::string interaction = CreateTextQueryInteraction(query);
assistant_manager_internal_->SendVoicelessInteraction( assistant_manager_internal_->SendVoicelessInteraction(
......
...@@ -92,9 +92,9 @@ class AssistantManagerServiceImpl ...@@ -92,9 +92,9 @@ class AssistantManagerServiceImpl
// mojom::Assistant overrides: // mojom::Assistant overrides:
void StartCachedScreenContextInteraction() override; void StartCachedScreenContextInteraction() override;
void StartMetalayerInteraction(const gfx::Rect& region) override; void StartMetalayerInteraction(const gfx::Rect& region) override;
void StartTextInteraction(const std::string& query, bool allow_tts) override;
void StartVoiceInteraction() override; void StartVoiceInteraction() override;
void StopActiveInteraction(bool cancel_conversation) override; void StopActiveInteraction(bool cancel_conversation) override;
void SendTextQuery(const std::string& query) override;
void AddAssistantInteractionSubscriber( void AddAssistantInteractionSubscriber(
mojom::AssistantInteractionSubscriberPtr subscriber) override; mojom::AssistantInteractionSubscriberPtr subscriber) override;
void AddAssistantNotificationSubscriber( void AddAssistantNotificationSubscriber(
......
...@@ -61,13 +61,15 @@ void FakeAssistantManagerServiceImpl::StartCachedScreenContextInteraction() {} ...@@ -61,13 +61,15 @@ void FakeAssistantManagerServiceImpl::StartCachedScreenContextInteraction() {}
void FakeAssistantManagerServiceImpl::StartMetalayerInteraction( void FakeAssistantManagerServiceImpl::StartMetalayerInteraction(
const gfx::Rect& region) {} const gfx::Rect& region) {}
void FakeAssistantManagerServiceImpl::StartTextInteraction(
const std::string& query,
bool allow_tts) {}
void FakeAssistantManagerServiceImpl::StartVoiceInteraction() {} void FakeAssistantManagerServiceImpl::StartVoiceInteraction() {}
void FakeAssistantManagerServiceImpl::StopActiveInteraction( void FakeAssistantManagerServiceImpl::StopActiveInteraction(
bool cancel_conversation) {} bool cancel_conversation) {}
void FakeAssistantManagerServiceImpl::SendTextQuery(const std::string& query) {}
void FakeAssistantManagerServiceImpl::AddAssistantInteractionSubscriber( void FakeAssistantManagerServiceImpl::AddAssistantInteractionSubscriber(
mojom::AssistantInteractionSubscriberPtr subscriber) {} mojom::AssistantInteractionSubscriberPtr subscriber) {}
......
...@@ -48,9 +48,9 @@ class FakeAssistantManagerServiceImpl : public AssistantManagerService { ...@@ -48,9 +48,9 @@ class FakeAssistantManagerServiceImpl : public AssistantManagerService {
// mojom::Assistant overrides: // mojom::Assistant overrides:
void StartCachedScreenContextInteraction() override; void StartCachedScreenContextInteraction() override;
void StartMetalayerInteraction(const gfx::Rect& region) override; void StartMetalayerInteraction(const gfx::Rect& region) override;
void StartTextInteraction(const std::string& query, bool allow_tts) override;
void StartVoiceInteraction() override; void StartVoiceInteraction() override;
void StopActiveInteraction(bool cancel_conversation) override; void StopActiveInteraction(bool cancel_conversation) override;
void SendTextQuery(const std::string& query) override;
void AddAssistantInteractionSubscriber( void AddAssistantInteractionSubscriber(
mojom::AssistantInteractionSubscriberPtr subscriber) override; mojom::AssistantInteractionSubscriberPtr subscriber) override;
void AddAssistantNotificationSubscriber( void AddAssistantNotificationSubscriber(
......
...@@ -23,6 +23,12 @@ interface Assistant { ...@@ -23,6 +23,12 @@ interface Assistant {
// |AssistantInteractionSubscriber| interface to registered subscribers. // |AssistantInteractionSubscriber| interface to registered subscribers.
StartMetalayerInteraction(gfx.mojom.Rect region); StartMetalayerInteraction(gfx.mojom.Rect region);
// Starts a new Assistant text interaction. If |allow_tts| is true, the
// result will contain TTS. Otherwise TTS will not be present in the
// generated server response. Results will be returned through registered
// |AssistantInteractionSubscriber|.
StartTextInteraction(string query, bool allow_tts);
// Starts a new Assistant voice interaction. // Starts a new Assistant voice interaction.
StartVoiceInteraction(); StartVoiceInteraction();
...@@ -31,10 +37,6 @@ interface Assistant { ...@@ -31,10 +37,6 @@ interface Assistant {
// is a no-op. // is a no-op.
StopActiveInteraction(bool cancel_conversation); StopActiveInteraction(bool cancel_conversation);
// Send text query to assistant. Result will be returned through registered
// |AssistantInteractionSubscriber|.
SendTextQuery(string query);
// Registers assistant interaction event subscriber. Subscribers' // Registers assistant interaction event subscriber. Subscribers'
// implementation is responsible for selecting events of interest. // implementation is responsible for selecting events of interest.
AddAssistantInteractionSubscriber(AssistantInteractionSubscriber subscriber); AddAssistantInteractionSubscriber(AssistantInteractionSubscriber subscriber);
......
...@@ -25,12 +25,12 @@ class MockAssistant : public mojom::Assistant { ...@@ -25,12 +25,12 @@ class MockAssistant : public mojom::Assistant {
MOCK_METHOD1(StartMetalayerInteraction, void(const gfx::Rect&)); MOCK_METHOD1(StartMetalayerInteraction, void(const gfx::Rect&));
MOCK_METHOD2(StartTextInteraction, void(const std::string&, bool));
MOCK_METHOD0(StartVoiceInteraction, void()); MOCK_METHOD0(StartVoiceInteraction, void());
MOCK_METHOD1(StopActiveInteraction, void(bool)); MOCK_METHOD1(StopActiveInteraction, void(bool));
MOCK_METHOD1(SendTextQuery, void(const std::string&));
MOCK_METHOD1( MOCK_METHOD1(
AddAssistantInteractionSubscriber, AddAssistantInteractionSubscriber,
void(chromeos::assistant::mojom::AssistantInteractionSubscriberPtr)); void(chromeos::assistant::mojom::AssistantInteractionSubscriberPtr));
......
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