1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/app_list/search/omnibox_result.h"
6
7 #include <memory>
8
9 #include "ash/public/cpp/app_list/app_list_features.h"
10 #include "base/macros.h"
11 #include "base/strings/utf_string_conversions.h"
12 #include "chrome/browser/ui/app_list/app_list_test_util.h"
13 #include "chrome/browser/ui/app_list/test/test_app_list_controller_delegate.h"
14 #include "chrome/test/base/testing_profile.h"
15 #include "components/omnibox/browser/autocomplete_match.h"
16 #include "components/omnibox/browser/autocomplete_match_type.h"
17 #include "components/search_engines/template_url.h"
18
19 namespace app_list {
20 namespace test {
21
22 namespace {
23
24 const char kFullQuery[] = "Hello World";
25 const char kExampleDescription[] = "A website";
26 const char kExampleUrl[] = "http://example.com/hello";
27 const int kRelevance = 750;
28 const double kAppListRelevance = 0.5;
29
30 const char kExampleKeyword[] = "example.com";
31
32 } // namespace
33
34 class OmniboxResultTest : public AppListTestBase {
35 public:
OmniboxResultTest()36 OmniboxResultTest() {}
~OmniboxResultTest()37 ~OmniboxResultTest() override {}
38
39 // AppListTestBase overrides:
SetUp()40 void SetUp() override {
41 AppListTestBase::SetUp();
42
43 app_list_controller_delegate_ =
44 std::make_unique<::test::TestAppListControllerDelegate>();
45 }
46
CreateOmniboxResult(const std::string & original_query,int relevance,const std::string & destination_url,const std::string & contents,const std::string & description,AutocompleteMatchType::Type type,const std::string & keyword)47 std::unique_ptr<OmniboxResult> CreateOmniboxResult(
48 const std::string& original_query,
49 int relevance,
50 const std::string& destination_url,
51 const std::string& contents,
52 const std::string& description,
53 AutocompleteMatchType::Type type,
54 const std::string& keyword) {
55 AutocompleteMatch match;
56 match.search_terms_args = std::make_unique<TemplateURLRef::SearchTermsArgs>(
57 base::UTF8ToUTF16(original_query));
58 match.search_terms_args->original_query = base::UTF8ToUTF16(original_query);
59 match.relevance = relevance;
60 match.destination_url = GURL(destination_url);
61 match.contents = base::UTF8ToUTF16(contents);
62 match.description = base::UTF8ToUTF16(description);
63 match.type = type;
64 match.keyword = base::UTF8ToUTF16(keyword);
65
66 return std::make_unique<OmniboxResult>(profile_.get(),
67 app_list_controller_delegate_.get(),
68 nullptr, match, false);
69 }
70
GetLastOpenedUrl() const71 const GURL& GetLastOpenedUrl() const {
72 return app_list_controller_delegate_->last_opened_url();
73 }
74
75 private:
76 std::unique_ptr<::test::TestAppListControllerDelegate>
77 app_list_controller_delegate_;
78
79 DISALLOW_COPY_AND_ASSIGN(OmniboxResultTest);
80 };
81
TEST_F(OmniboxResultTest,Basic)82 TEST_F(OmniboxResultTest, Basic) {
83 std::unique_ptr<OmniboxResult> result = CreateOmniboxResult(
84 kFullQuery, kRelevance, kExampleUrl, kFullQuery, kExampleDescription,
85 AutocompleteMatchType::HISTORY_URL, kExampleKeyword);
86
87 EXPECT_EQ(base::ASCIIToUTF16(kExampleDescription), result->title());
88 EXPECT_EQ(base::ASCIIToUTF16(kFullQuery), result->details());
89 EXPECT_EQ(kAppListRelevance, result->relevance());
90
91 result->Open(0);
92 EXPECT_EQ(kExampleUrl, GetLastOpenedUrl().spec());
93 }
94
95 } // namespace test
96 } // namespace app_list
97