Chromium Code Reviews| Index: chrome/browser/ui/views/new_task_manager_view_browsertest.cc |
| diff --git a/chrome/browser/ui/views/new_task_manager_view_browsertest.cc b/chrome/browser/ui/views/new_task_manager_view_browsertest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..3860f9763888a5742a06235e1bcc87c566b6c214 |
| --- /dev/null |
| +++ b/chrome/browser/ui/views/new_task_manager_view_browsertest.cc |
| @@ -0,0 +1,133 @@ |
| +// Copyright 2015 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "base/prefs/pref_service.h" |
| +#include "base/prefs/scoped_user_pref_update.h" |
| +#include "chrome/browser/browser_process.h" |
| +#include "chrome/browser/ui/browser_dialogs.h" |
| +#include "chrome/browser/ui/views/new_task_manager_view.h" |
| +#include "chrome/common/pref_names.h" |
| +#include "chrome/test/base/in_process_browser_test.h" |
| +#include "ui/views/controls/table/table_view.h" |
| + |
| +namespace task_management { |
| + |
| +class NewTaskManagerViewTest : public InProcessBrowserTest { |
| + public: |
| + NewTaskManagerViewTest() {} |
| + ~NewTaskManagerViewTest() override {} |
| + |
| + NewTaskManagerView* GetView() const { |
| + return NewTaskManagerView::GetInstanceForTests(); |
| + } |
| + |
| + views::TableView* GetTable() const { |
| + return GetView() ? GetView()->tab_table_ : nullptr; |
| + } |
| + |
| + void ClearStoredColumnSettings() const { |
| + PrefService* local_state = g_browser_process->local_state(); |
| + if (!local_state) |
| + FAIL(); |
| + |
| + DictionaryPrefUpdate dict_update(local_state, |
| + prefs::kTaskManagerColumnVisibility); |
| + dict_update->Clear(); |
| + } |
| + |
| + void ToggleColumnVisibility(NewTaskManagerView* view, int col_id) { |
| + DCHECK(view); |
| + view->ToggleColumnVisibility(col_id); |
| + } |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(NewTaskManagerViewTest); |
| +}; |
| + |
| +// Tests that all defined columns have a corresponding string IDs for keying |
| +// into the user preferences dictionary. |
| +IN_PROC_BROWSER_TEST_F(NewTaskManagerViewTest, AllColumnsHaveStringIds) { |
| + for (size_t i = 0; i < kColumnsSize; ++i) |
| + EXPECT_NE("", GetColumnIdAsString(kColumns[i].id)); |
| +} |
| + |
| +// In the case of no settings stored in the user preferences local store, test |
| +// that the task manager table starts with the default columns visibility as |
| +// stored in |kColumns|. |
| +IN_PROC_BROWSER_TEST_F(NewTaskManagerViewTest, TableStartsWithDefaultColumns) { |
| + ASSERT_NO_FATAL_FAILURE(ClearStoredColumnSettings()); |
| + |
| + chrome::ShowTaskManager(browser()); |
| + views::TableView* table = GetTable(); |
| + ASSERT_NE(nullptr, table); |
|
Lei Zhang
2015/08/31 21:06:57
I think you can also be written as ASSERT_TRUE(tab
afakhry
2015/08/31 21:12:44
Done for this and all similar asserts.
|
| + |
| + EXPECT_FALSE(table->is_sorted()); |
| + for (size_t i = 0; i < kColumnsSize; ++i) { |
| + EXPECT_EQ(kColumns[i].default_visibility, |
| + table->IsColumnVisible(kColumns[i].id)); |
| + } |
| +} |
| + |
| +// Tests that changing columns visibility and sort order will be stored upon |
| +// closing the task manager view and restored when re-opened. |
| +IN_PROC_BROWSER_TEST_F(NewTaskManagerViewTest, ColumnsSettingsAreRestored) { |
| + ASSERT_NO_FATAL_FAILURE(ClearStoredColumnSettings()); |
| + |
| + chrome::ShowTaskManager(browser()); |
| + NewTaskManagerView* view = GetView(); |
| + ASSERT_NE(nullptr, view); |
| + views::TableView* table = GetTable(); |
| + ASSERT_NE(nullptr, table); |
| + |
| + // Toggle the visibility of all columns. |
| + EXPECT_FALSE(table->is_sorted()); |
| + for (size_t i = 0; i < kColumnsSize; ++i) { |
| + EXPECT_EQ(kColumns[i].default_visibility, |
| + table->IsColumnVisible(kColumns[i].id)); |
| + ToggleColumnVisibility(view, kColumns[i].id); |
| + } |
| + |
| + // Sort by the first visible and initially ascending sortable column. |
| + bool is_sorted = false; |
| + int sorted_col_id = -1; |
| + for (size_t i = 0; i < table->visible_columns().size(); ++i) { |
| + const ui::TableColumn& column = table->visible_columns()[i].column; |
| + if (column.sortable && column.initial_sort_is_ascending) { |
| + // Toggle the sort twice for a descending sort. |
| + table->ToggleSortOrder(static_cast<int>(i)); |
| + table->ToggleSortOrder(static_cast<int>(i)); |
| + is_sorted = true; |
| + return; |
| + } |
| + } |
| + |
| + if (is_sorted) { |
| + EXPECT_TRUE(table->is_sorted()); |
| + EXPECT_FALSE(table->sort_descriptors().front().ascending); |
| + EXPECT_EQ(table->sort_descriptors().front().column_id, sorted_col_id); |
| + } |
| + |
| + // Close the task manager view and re-open. Expect the inverse of the default |
| + // visibility, and the last sort order. |
| + chrome::HideTaskManager(); |
| + ASSERT_EQ(nullptr, GetView()); |
| + chrome::ShowTaskManager(browser()); |
| + view = GetView(); |
| + ASSERT_NE(nullptr, view); |
| + table = GetTable(); |
| + ASSERT_NE(nullptr, table); |
| + |
| + if (is_sorted) { |
| + EXPECT_TRUE(table->is_sorted()); |
| + EXPECT_FALSE(table->sort_descriptors().front().ascending); |
| + EXPECT_EQ(table->sort_descriptors().front().column_id, sorted_col_id); |
| + } |
| + for (size_t i = 0; i < kColumnsSize; ++i) { |
| + EXPECT_EQ(!kColumns[i].default_visibility, |
| + table->IsColumnVisible(kColumns[i].id)); |
| + } |
| +} |
| + |
| +} // namespace task_management |
| + |