OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ui/app_list/views/search_result_page_view.h" | 5 #include "ui/app_list/views/search_result_page_view.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
| 9 #include "base/command_line.h" |
9 #include "ui/app_list/app_list_model.h" | 10 #include "ui/app_list/app_list_model.h" |
| 11 #include "ui/app_list/app_list_switches.h" |
10 #include "ui/app_list/test/app_list_test_view_delegate.h" | 12 #include "ui/app_list/test/app_list_test_view_delegate.h" |
11 #include "ui/app_list/test/test_search_result.h" | 13 #include "ui/app_list/test/test_search_result.h" |
12 #include "ui/app_list/views/search_result_list_view.h" | 14 #include "ui/app_list/views/search_result_list_view.h" |
13 #include "ui/app_list/views/search_result_list_view_delegate.h" | 15 #include "ui/app_list/views/search_result_list_view_delegate.h" |
14 #include "ui/app_list/views/search_result_tile_item_list_view.h" | 16 #include "ui/app_list/views/search_result_tile_item_list_view.h" |
15 #include "ui/app_list/views/search_result_view.h" | 17 #include "ui/app_list/views/search_result_view.h" |
16 #include "ui/views/controls/textfield/textfield.h" | 18 #include "ui/views/controls/textfield/textfield.h" |
17 #include "ui/views/test/views_test_base.h" | 19 #include "ui/views/test/views_test_base.h" |
18 | 20 |
19 namespace app_list { | 21 namespace app_list { |
20 namespace test { | 22 namespace test { |
21 | 23 |
22 class SearchResultPageViewTest : public views::ViewsTestBase, | 24 class SearchResultPageViewTest : public views::ViewsTestBase, |
23 public SearchResultListViewDelegate { | 25 public SearchResultListViewDelegate { |
24 public: | 26 public: |
25 SearchResultPageViewTest() {} | 27 SearchResultPageViewTest() { |
| 28 base::CommandLine::ForCurrentProcess()->AppendSwitch( |
| 29 switches::kEnableExperimentalAppList); |
| 30 } |
26 ~SearchResultPageViewTest() override {} | 31 ~SearchResultPageViewTest() override {} |
27 | 32 |
28 // Overridden from testing::Test: | 33 // Overridden from testing::Test: |
29 void SetUp() override { | 34 void SetUp() override { |
30 views::ViewsTestBase::SetUp(); | 35 views::ViewsTestBase::SetUp(); |
31 view_.reset(new SearchResultPageView()); | 36 view_.reset(new SearchResultPageView()); |
32 list_view_ = new SearchResultListView(this, &view_delegate_); | 37 list_view_ = new SearchResultListView(this, &view_delegate_); |
33 view_->AddSearchResultContainerView(GetResults(), list_view_); | 38 view_->AddSearchResultContainerView(GetResults(), list_view_); |
34 textfield_.reset(new views::Textfield()); | 39 textfield_.reset(new views::Textfield()); |
35 tile_list_view_ = new SearchResultTileItemListView(textfield_.get()); | 40 tile_list_view_ = new SearchResultTileItemListView(textfield_.get()); |
36 view_->AddSearchResultContainerView(GetResults(), tile_list_view_); | 41 view_->AddSearchResultContainerView(GetResults(), tile_list_view_); |
37 } | 42 } |
38 | 43 |
39 protected: | 44 protected: |
40 SearchResultPageView* view() { return view_.get(); } | 45 SearchResultPageView* view() { return view_.get(); } |
41 | 46 |
42 SearchResultListView* list_view() { return list_view_; } | 47 SearchResultListView* list_view() { return list_view_; } |
43 SearchResultTileItemListView* tile_list_view() { return tile_list_view_; } | 48 SearchResultTileItemListView* tile_list_view() { return tile_list_view_; } |
44 | 49 |
45 AppListModel::SearchResults* GetResults() { | 50 AppListModel::SearchResults* GetResults() { |
46 return view_delegate_.GetModel()->results(); | 51 return view_delegate_.GetModel()->results(); |
47 } | 52 } |
48 | 53 |
49 void SetUpSearchResults( | 54 void SetUpSearchResults( |
50 const std::map<SearchResult::DisplayType, int> result_types) { | 55 const std::map<SearchResult::DisplayType, int> result_types) { |
51 AppListModel::SearchResults* results = GetResults(); | 56 AppListModel::SearchResults* results = GetResults(); |
52 for (const auto& data : result_types) { | 57 for (const auto& data : result_types) { |
53 for (int i = 0; i < data.second; ++i) { | 58 for (int i = 0; i < data.second; ++i) { |
54 TestSearchResult* result = new TestSearchResult(); | 59 TestSearchResult* result = new TestSearchResult(); |
55 result->SetDisplayType(data.first); | 60 result->set_display_type(data.first); |
56 results->Add(result); | 61 results->Add(result); |
57 } | 62 } |
58 } | 63 } |
59 | 64 |
60 // Adding results will schedule Update(). | 65 // Adding results will schedule Update(). |
61 RunPendingMessages(); | 66 RunPendingMessages(); |
62 } | 67 } |
63 | 68 |
64 int GetSelectedIndex() { return view_->selected_index(); } | 69 int GetSelectedIndex() { return view_->selected_index(); } |
65 | 70 |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 EXPECT_EQ(-1, tile_list_view()->selected_index()); | 122 EXPECT_EQ(-1, tile_list_view()->selected_index()); |
118 | 123 |
119 // Navigate off top of list. | 124 // Navigate off top of list. |
120 EXPECT_TRUE(KeyPress(ui::VKEY_UP)); | 125 EXPECT_TRUE(KeyPress(ui::VKEY_UP)); |
121 EXPECT_EQ(0, list_view()->selected_index()); | 126 EXPECT_EQ(0, list_view()->selected_index()); |
122 EXPECT_FALSE(KeyPress(ui::VKEY_UP)); | 127 EXPECT_FALSE(KeyPress(ui::VKEY_UP)); |
123 EXPECT_EQ(0, list_view()->selected_index()); | 128 EXPECT_EQ(0, list_view()->selected_index()); |
124 EXPECT_EQ(0, GetSelectedIndex()); | 129 EXPECT_EQ(0, GetSelectedIndex()); |
125 } | 130 } |
126 | 131 |
| 132 TEST_F(SearchResultPageViewTest, ResultsSorted) { |
| 133 AppListModel::SearchResults* results = GetResults(); |
| 134 |
| 135 // Add 3 results and expect the tile list view to be the first result |
| 136 // container view. |
| 137 TestSearchResult* tile_result = new TestSearchResult(); |
| 138 tile_result->set_display_type(SearchResult::DISPLAY_TILE); |
| 139 tile_result->set_relevance(1.0); |
| 140 results->Add(tile_result); |
| 141 { |
| 142 TestSearchResult* list_result = new TestSearchResult(); |
| 143 list_result->set_display_type(SearchResult::DISPLAY_LIST); |
| 144 list_result->set_relevance(0.5); |
| 145 results->Add(list_result); |
| 146 } |
| 147 { |
| 148 TestSearchResult* list_result = new TestSearchResult(); |
| 149 list_result->set_display_type(SearchResult::DISPLAY_LIST); |
| 150 list_result->set_relevance(0.3); |
| 151 results->Add(list_result); |
| 152 } |
| 153 |
| 154 // Adding results will schedule Update(). |
| 155 RunPendingMessages(); |
| 156 |
| 157 EXPECT_EQ(tile_list_view(), view()->result_container_views()[0]); |
| 158 EXPECT_EQ(list_view(), view()->result_container_views()[1]); |
| 159 |
| 160 // Change the relevance of the tile result and expect the list results to be |
| 161 // displayed first. |
| 162 tile_result->set_relevance(0.4); |
| 163 |
| 164 results->NotifyItemsChanged(0, 1); |
| 165 RunPendingMessages(); |
| 166 |
| 167 EXPECT_EQ(list_view(), view()->result_container_views()[0]); |
| 168 EXPECT_EQ(tile_list_view(), view()->result_container_views()[1]); |
| 169 } |
| 170 |
127 } // namespace test | 171 } // namespace test |
128 } // namespace app_list | 172 } // namespace app_list |
OLD | NEW |