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