Commit 09625ebf authored by Li Lin's avatar Li Lin Committed by Commit Bot

Update the default style of result text.

Also added rich UI element for KpEntityResultParser.

Bug: b/150783279
Test: unit tests
Change-Id: Ia40b848f9e9caf8b246627d415b4b41fe188b28b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2088212Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Li Lin <llin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#747433}
parent 0fa6fe0c
......@@ -73,7 +73,8 @@ void QuickAnswersControllerImpl::OnQuickAnswerReceived(
quick_answer_with_no_result.title.push_back(
std::make_unique<chromeos::quick_answers::QuickAnswerText>(query_));
quick_answer_with_no_result.first_answer_row.push_back(
std::make_unique<chromeos::quick_answers::QuickAnswerText>(kNoResult));
std::make_unique<chromeos::quick_answers::QuickAnswerResultText>(
kNoResult));
quick_answers_ui_controller_->RenderQuickAnswersViewWithResult(
anchor_bounds_, quick_answer_with_no_result);
}
......
......@@ -68,7 +68,7 @@ class QuickAnswerUiElement {
// class to describe an answer text.
class QuickAnswerText : public QuickAnswerUiElement {
public:
QuickAnswerText(const std::string& text, SkColor color = SK_ColorBLACK)
QuickAnswerText(const std::string& text, SkColor color = gfx::kGoogleGrey900)
: QuickAnswerUiElement(QuickAnswerUiElementType::kText),
text_(text),
color_(color) {}
......@@ -79,6 +79,13 @@ class QuickAnswerText : public QuickAnswerUiElement {
SkColor color_ = SK_ColorBLACK;
};
class QuickAnswerResultText : public QuickAnswerText {
public:
QuickAnswerResultText(const std::string& text,
SkColor color = gfx::kGoogleGrey700)
: QuickAnswerText(text, color) {}
};
class QuickAnswerImage : public QuickAnswerUiElement {
public:
explicit QuickAnswerImage(const gfx::Image& image)
......
......@@ -62,7 +62,7 @@ bool DefinitionResultParser::Parse(const Value* result,
quick_answer->title.push_back(
std::make_unique<QuickAnswerText>(secondary_answer));
quick_answer->first_answer_row.push_back(
std::make_unique<QuickAnswerText>(*definition));
std::make_unique<QuickAnswerResultText>(*definition));
return true;
}
......
......@@ -82,14 +82,16 @@ TEST_F(DefinitionResultParserTest, Success) {
EXPECT_EQ("incapable of being fully explored or understood.",
quick_answer.primary_answer);
EXPECT_EQ("unfathomable · /ˌənˈfaT͟Həməb(ə)/", quick_answer.secondary_answer);
EXPECT_EQ(
"incapable of being fully explored or understood.",
static_cast<QuickAnswerText*>(quick_answer.first_answer_row[0].get())
->text_);
EXPECT_EQ("unfathomable · /ˌənˈfaT͟Həməb(ə)/",
static_cast<QuickAnswerText*>(quick_answer.title[0].get())->text_);
EXPECT_TRUE(quick_answer.title.size() == 1);
EXPECT_TRUE(quick_answer.first_answer_row.size() == 1);
EXPECT_EQ(1u, quick_answer.title.size());
EXPECT_EQ(1u, quick_answer.first_answer_row.size());
auto* answer =
static_cast<QuickAnswerText*>(quick_answer.first_answer_row[0].get());
EXPECT_EQ("incapable of being fully explored or understood.", answer->text_);
EXPECT_EQ(gfx::kGoogleGrey700, answer->color_);
auto* title = static_cast<QuickAnswerText*>(quick_answer.title[0].get());
EXPECT_EQ("unfathomable · /ˌənˈfaT͟Həməb(ə)/", title->text_);
EXPECT_EQ(gfx::kGoogleGrey900, title->color_);
}
TEST_F(DefinitionResultParserTest, EmptyValue) {
......
......@@ -38,9 +38,12 @@ bool KpEntityResultParser::Parse(const Value* result,
const auto* aggregated_count = entity->FindStringPath(kRatingCountPath);
if (average_score.has_value() && aggregated_count) {
quick_answer->primary_answer =
const auto& answer =
base::StringPrintf(kRatingReviewTemplate, average_score.value(),
aggregated_count->c_str());
quick_answer->primary_answer = answer;
quick_answer->first_answer_row.push_back(
std::make_unique<QuickAnswerResultText>(answer));
} else {
const std::string* localized_known_for_reason =
entity->FindStringPath(kKnownForReasonPath);
......@@ -50,6 +53,8 @@ bool KpEntityResultParser::Parse(const Value* result,
}
quick_answer->primary_answer = *localized_known_for_reason;
quick_answer->first_answer_row.push_back(
std::make_unique<QuickAnswerResultText>(*localized_known_for_reason));
}
quick_answer->result_type = ResultType::kKnowledgePanelEntityResult;
......
......@@ -47,6 +47,12 @@ TEST_F(KpEntityResultParserTest, SuccessWithRating) {
EXPECT_EQ(ResultType::kKnowledgePanelEntityResult, quick_answer.result_type);
EXPECT_EQ("4.5 ★ (100 reviews)", quick_answer.primary_answer);
EXPECT_TRUE(quick_answer.secondary_answer.empty());
EXPECT_EQ(0u, quick_answer.title.size());
EXPECT_EQ(1u, quick_answer.first_answer_row.size());
EXPECT_EQ("4.5 ★ (100 reviews)", static_cast<QuickAnswerText*>(
quick_answer.first_answer_row[0].get())
->text_);
}
TEST_F(KpEntityResultParserTest, SuccessWithRatingScoreRound) {
......@@ -67,13 +73,28 @@ TEST_F(KpEntityResultParserTest, SuccessWithRatingScoreRound) {
EXPECT_EQ("4.5 ★ (100 reviews)", quick_answer.primary_answer);
EXPECT_TRUE(quick_answer.secondary_answer.empty());
EXPECT_EQ(0u, quick_answer.title.size());
EXPECT_EQ(1u, quick_answer.first_answer_row.size());
auto* answer =
static_cast<QuickAnswerText*>(quick_answer.first_answer_row[0].get());
EXPECT_EQ("4.5 ★ (100 reviews)", answer->text_);
EXPECT_EQ(gfx::kGoogleGrey700, answer->color_);
result.SetDoublePath(
"knowledgePanelEntityResult.entity.ratingsAndReviews.google."
"aggregateRating.averageScore",
4.56);
EXPECT_TRUE(parser_->Parse(&result, &quick_answer));
EXPECT_EQ("4.6 ★ (100 reviews)", quick_answer.primary_answer);
QuickAnswer quick_answer2;
EXPECT_TRUE(parser_->Parse(&result, &quick_answer2));
EXPECT_EQ("4.6 ★ (100 reviews)", quick_answer2.primary_answer);
EXPECT_EQ(0u, quick_answer2.title.size());
EXPECT_EQ(1u, quick_answer2.first_answer_row.size());
answer =
static_cast<QuickAnswerText*>(quick_answer2.first_answer_row[0].get());
EXPECT_EQ("4.6 ★ (100 reviews)", answer->text_);
EXPECT_EQ(gfx::kGoogleGrey700, answer->color_);
}
TEST_F(KpEntityResultParserTest, SuccessWithKnownForReason) {
......@@ -88,6 +109,13 @@ TEST_F(KpEntityResultParserTest, SuccessWithKnownForReason) {
EXPECT_EQ(ResultType::kKnowledgePanelEntityResult, quick_answer.result_type);
EXPECT_EQ("44th U.S. President", quick_answer.primary_answer);
EXPECT_TRUE(quick_answer.secondary_answer.empty());
EXPECT_EQ(0u, quick_answer.title.size());
EXPECT_EQ(1u, quick_answer.first_answer_row.size());
auto* answer =
static_cast<QuickAnswerText*>(quick_answer.first_answer_row[0].get());
EXPECT_EQ("44th U.S. President", answer->text_);
EXPECT_EQ(gfx::kGoogleGrey700, answer->color_);
}
TEST_F(KpEntityResultParserTest, EmptyValue) {
......
......@@ -54,7 +54,7 @@ bool TranslationResultParser::Parse(const Value* result,
quick_answer->title.push_back(
std::make_unique<QuickAnswerText>(secondary_answer));
quick_answer->first_answer_row.push_back(
std::make_unique<QuickAnswerText>(*translated_text));
std::make_unique<QuickAnswerResultText>(*translated_text));
return true;
}
......
......@@ -44,13 +44,16 @@ TEST_F(TranslationResultParserTest, Success) {
EXPECT_EQ(ResultType::kTranslationResult, quick_answer.result_type);
EXPECT_EQ("ox\\xC3\\xADgeno", quick_answer.primary_answer);
EXPECT_EQ("oxygen · English", quick_answer.secondary_answer);
EXPECT_EQ("ox\\xC3\\xADgeno", static_cast<QuickAnswerText*>(
quick_answer.first_answer_row[0].get())
->text_);
EXPECT_EQ("oxygen · English",
static_cast<QuickAnswerText*>(quick_answer.title[0].get())->text_);
EXPECT_TRUE(quick_answer.title.size() == 1);
EXPECT_TRUE(quick_answer.first_answer_row.size() == 1);
EXPECT_EQ(1u, quick_answer.title.size());
EXPECT_EQ(1u, quick_answer.first_answer_row.size());
auto* title = static_cast<QuickAnswerText*>(quick_answer.title[0].get());
EXPECT_EQ("oxygen · English", title->text_);
EXPECT_EQ(gfx::kGoogleGrey900, title->color_);
auto* answer =
static_cast<QuickAnswerText*>(quick_answer.first_answer_row[0].get());
EXPECT_EQ("ox\\xC3\\xADgeno", answer->text_);
EXPECT_EQ(gfx::kGoogleGrey700, answer->color_);
}
TEST_F(TranslationResultParserTest, MissingSourceText) {
......
......@@ -32,7 +32,7 @@ bool UnitConversionResultParser::Parse(const Value* result,
quick_answer->result_type = ResultType::kUnitConversionResult;
quick_answer->primary_answer = *dest;
quick_answer->first_answer_row.push_back(
std::make_unique<QuickAnswerText>(*dest));
std::make_unique<QuickAnswerResultText>(*dest));
return true;
}
......
......@@ -43,11 +43,13 @@ TEST_F(UnitConversionResultParserTest, Success) {
EXPECT_EQ(ResultType::kUnitConversionResult, quick_answer.result_type);
EXPECT_EQ("9.84252 inch", quick_answer.primary_answer);
EXPECT_TRUE(quick_answer.secondary_answer.empty());
EXPECT_EQ("9.84252 inch", static_cast<QuickAnswerText*>(
quick_answer.first_answer_row[0].get())
->text_);
EXPECT_TRUE(quick_answer.first_answer_row.size() == 1);
EXPECT_TRUE(quick_answer.title.size() == 0);
EXPECT_EQ(1u, quick_answer.first_answer_row.size());
EXPECT_EQ(0u, quick_answer.title.size());
auto* answer =
static_cast<QuickAnswerText*>(quick_answer.first_answer_row[0].get());
EXPECT_EQ("9.84252 inch", answer->text_);
EXPECT_EQ(gfx::kGoogleGrey700, answer->color_);
}
TEST_F(UnitConversionResultParserTest, EmptyValue) {
......
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