Commit 8bd3b460 authored by Abhijeet Singh's avatar Abhijeet Singh Committed by Commit Bot

Fix impression logging for Quick Answers

Currently, an active impression is approximated by whenever the menu or
the Quick Answer is dismissed without clicking on a menu-item. This
indicates user could be actively looking for Quick-Answers instead of
any other menu operation.

This is currently buggy because DismissQuickAnswers() overcounts the
metric even when a Quick-Answer was not shown to the user (because the
User-Consent view was shown instead).

This CL ensures that the metric is not overcounted by fixing that, and
also ensures this change will not lead to under-counting by routing the
view-close operations via DismissQuickAnswers() where logging happens.

Bug: b:158265647
Test: Tested on Chrome OS VM.
Change-Id: Ieed9356fbb64650b521c893a44e83caa49ea831e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2233342Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Abhijeet Singh <siabhijeet@google.com>
Cr-Commit-Position: refs/heads/master@{#775799}
parent 278a98e5
...@@ -88,10 +88,10 @@ void QuickAnswersControllerImpl::MaybeShowQuickAnswers( ...@@ -88,10 +88,10 @@ void QuickAnswersControllerImpl::MaybeShowQuickAnswers(
void QuickAnswersControllerImpl::DismissQuickAnswers(bool is_active) { void QuickAnswersControllerImpl::DismissQuickAnswers(bool is_active) {
MaybeDismissQuickAnswersConsent(); MaybeDismissQuickAnswersConsent();
quick_answers_ui_controller_->CloseQuickAnswersView(); bool closed = quick_answers_ui_controller_->CloseQuickAnswersView();
quick_answers_client_->OnQuickAnswersDismissed( quick_answers_client_->OnQuickAnswersDismissed(
quick_answer_ ? quick_answer_->result_type : ResultType::kNoResult, quick_answer_ ? quick_answer_->result_type : ResultType::kNoResult,
is_active); is_active && closed);
} }
chromeos::quick_answers::QuickAnswersDelegate* chromeos::quick_answers::QuickAnswersDelegate*
......
...@@ -44,18 +44,22 @@ void QuickAnswersUiController::CreateQuickAnswersView( ...@@ -44,18 +44,22 @@ void QuickAnswersUiController::CreateQuickAnswersView(
} }
void QuickAnswersUiController::OnQuickAnswersViewPressed() { void QuickAnswersUiController::OnQuickAnswersViewPressed() {
CloseQuickAnswersView(); // Route dismissal through |controller_| for logging impressions.
controller_->DismissQuickAnswers(/*is_active=*/true);
ash::AssistantInteractionController::Get()->StartTextInteraction( ash::AssistantInteractionController::Get()->StartTextInteraction(
query_, /*allow_tts=*/false, query_, /*allow_tts=*/false,
chromeos::assistant::mojom::AssistantQuerySource::kQuickAnswers); chromeos::assistant::mojom::AssistantQuerySource::kQuickAnswers);
controller_->OnQuickAnswerClick(); controller_->OnQuickAnswerClick();
} }
void QuickAnswersUiController::CloseQuickAnswersView() { bool QuickAnswersUiController::CloseQuickAnswersView() {
if (quick_answers_view_) { if (quick_answers_view_) {
quick_answers_view_->GetWidget()->Close(); quick_answers_view_->GetWidget()->Close();
quick_answers_view_ = nullptr; quick_answers_view_ = nullptr;
return true;
} }
return false;
} }
void QuickAnswersUiController::OnRetryLabelPressed() { void QuickAnswersUiController::OnRetryLabelPressed() {
...@@ -101,11 +105,13 @@ void QuickAnswersUiController::CreateUserConsentView( ...@@ -101,11 +105,13 @@ void QuickAnswersUiController::CreateUserConsentView(
user_consent_view_->GetWidget()->ShowInactive(); user_consent_view_->GetWidget()->ShowInactive();
} }
void QuickAnswersUiController::CloseUserConsentView() { bool QuickAnswersUiController::CloseUserConsentView() {
if (user_consent_view_) { if (user_consent_view_) {
user_consent_view_->GetWidget()->Close(); user_consent_view_->GetWidget()->Close();
user_consent_view_ = nullptr; user_consent_view_ = nullptr;
return true;
} }
return false;
} }
void QuickAnswersUiController::OnConsentGrantedButtonPressed() { void QuickAnswersUiController::OnConsentGrantedButtonPressed() {
...@@ -118,11 +124,9 @@ void QuickAnswersUiController::OnManageSettingsButtonPressed() { ...@@ -118,11 +124,9 @@ void QuickAnswersUiController::OnManageSettingsButtonPressed() {
} }
void QuickAnswersUiController::OnDogfoodButtonPressed() { void QuickAnswersUiController::OnDogfoodButtonPressed() {
// Close Quick-Answers related views and open the Dogfood link. // Route dismissal through |controller_| for logging impressions.
if (quick_answers_view_) controller_->DismissQuickAnswers(/*is_active=*/true);
CloseQuickAnswersView();
if (user_consent_view_)
CloseUserConsentView();
controller_->OpenQuickAnswersDogfoodLink(); controller_->OpenQuickAnswersDogfoodLink();
} }
......
...@@ -39,7 +39,8 @@ class ASH_EXPORT QuickAnswersUiController { ...@@ -39,7 +39,8 @@ class ASH_EXPORT QuickAnswersUiController {
const std::string& title, const std::string& title,
const std::string& query); const std::string& query);
void CloseQuickAnswersView(); // Returns true if there was a QuickAnswersView to close.
bool CloseQuickAnswersView();
void OnQuickAnswersViewPressed(); void OnQuickAnswersViewPressed();
...@@ -61,7 +62,8 @@ class ASH_EXPORT QuickAnswersUiController { ...@@ -61,7 +62,8 @@ class ASH_EXPORT QuickAnswersUiController {
// anchor. // anchor.
void CreateUserConsentView(const gfx::Rect& anchor_bounds); void CreateUserConsentView(const gfx::Rect& anchor_bounds);
void CloseUserConsentView(); // Returns true if there was a UserConsentView to close.
bool CloseUserConsentView();
// Invoked when user clicks the consent button to grant consent for using // Invoked when user clicks the consent button to grant consent for using
// Quick Answers. // Quick Answers.
......
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