#ifndef CHROME_BROWSER_UI_TASK_MANAGER_TASK_MANAGER_COLUMNS_H_
#define CHROME_BROWSER_UI_TASK_MANAGER_TASK_MANAGER_COLUMNS_H_
#include <stddef.h>
#include <array>
#include <string_view>
#include "build/build_config.h"
#include "chrome/grit/generated_resources.h"
#include "ui/base/models/table_model.h"
namespace task_manager {
struct TableColumnData {
int id;
ui::TableColumn::Alignment align;
int width;
float percent;
int min_width;
int max_width;
bool sortable;
bool initial_sort_is_ascending;
bool default_visibility;
};
inline constexpr int kCharWidth = 6;
inline constexpr std::array kColumns = {
TableColumnData{.id = IDS_TASK_MANAGER_TASK_COLUMN,
.align = ui::TableColumn::LEFT,
.width = -1,
.percent = 1,
.min_width = 120,
.max_width = 600,
.sortable = true,
.initial_sort_is_ascending = true,
.default_visibility = true},
TableColumnData{.id = IDS_TASK_MANAGER_PROFILE_NAME_COLUMN,
.align = ui::TableColumn::LEFT,
.width = -1,
.percent = 0,
.min_width = 60,
.max_width = 200,
.sortable = true,
.initial_sort_is_ascending = true,
.default_visibility = false},
TableColumnData{
.id = IDS_TASK_MANAGER_MEM_FOOTPRINT_COLUMN,
.align = ui::TableColumn::RIGHT,
.width = -1,
.percent = 0,
.min_width = std::size("800 MiB") * kCharWidth,
.max_width = std::size("Memory Footprint") * kCharWidth * 3 / 2,
.sortable = true,
.initial_sort_is_ascending = false,
.default_visibility = true},
#if BUILDFLAG(IS_CHROMEOS)
TableColumnData{.id = IDS_TASK_MANAGER_SWAPPED_MEM_COLUMN,
.align = ui::TableColumn::RIGHT,
.width = -1,
.percent = 0,
.min_width = std::size("800 MiB") * kCharWidth,
.max_width = -1,
.sortable = true,
.initial_sort_is_ascending = false,
.default_visibility = false},
#endif
#if BUILDFLAG(IS_MAC)
TableColumnData{.id = IDS_TASK_MANAGER_CPU_COLUMN,
.align = ui::TableColumn::RIGHT,
.width = -1,
.percent = 0,
.min_width = std::size("0099.9") * kCharWidth,
.max_width = -1,
.sortable = true,
.initial_sort_is_ascending = false,
.default_visibility = true},
#else
TableColumnData{.id = IDS_TASK_MANAGER_CPU_COLUMN,
.align = ui::TableColumn::RIGHT,
.width = -1,
.percent = 0,
.min_width = std::size("99.9") * kCharWidth,
.max_width = -1,
.sortable = true,
.initial_sort_is_ascending = false,
.default_visibility = true},
#endif
#if BUILDFLAG(IS_WIN)
TableColumnData{.id = IDS_TASK_MANAGER_CPU_TIME_COLUMN,
.align = ui::TableColumn::RIGHT,
.width = -1,
.percent = 0,
.min_width = std::size("1234h 42m 30s") * kCharWidth,
.max_width = -1,
.sortable = true,
.initial_sort_is_ascending = false,
.default_visibility = false},
TableColumnData{.id = IDS_TASK_MANAGER_START_TIME_COLUMN,
.align = ui::TableColumn::RIGHT,
.width = -1,
.percent = 0,
.min_width = std::size("12/13/14 11:44:30 PM") * kCharWidth,
.max_width = -1,
.sortable = true,
.initial_sort_is_ascending = true,
.default_visibility = false},
#endif
TableColumnData{.id = IDS_TASK_MANAGER_NET_COLUMN,
.align = ui::TableColumn::RIGHT,
.width = -1,
.percent = 0,
.min_width = std::size("150 kiB/s") * kCharWidth,
.max_width = -1,
.sortable = true,
.initial_sort_is_ascending = false,
.default_visibility = true},
TableColumnData{.id = IDS_TASK_MANAGER_PROCESS_ID_COLUMN,
.align = ui::TableColumn::RIGHT,
.width = -1,
.percent = 0,
.min_width = std::size("73099 ") * kCharWidth,
.max_width = -1,
.sortable = true,
.initial_sort_is_ascending = true,
.default_visibility = true},
#if BUILDFLAG(IS_WIN)
TableColumnData{.id = IDS_TASK_MANAGER_GDI_HANDLES_COLUMN,
.align = ui::TableColumn::RIGHT,
.width = -1,
.percent = 0,
.min_width = 0,
.max_width = 0,
.sortable = true,
.initial_sort_is_ascending = false,
.default_visibility = false},
TableColumnData{.id = IDS_TASK_MANAGER_USER_HANDLES_COLUMN,
.align = ui::TableColumn::RIGHT,
.width = -1,
.percent = 0,
.min_width = 0,
.max_width = 0,
.sortable = true,
.initial_sort_is_ascending = false,
.default_visibility = false},
#endif
TableColumnData{
.id = IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN,
.align = ui::TableColumn::RIGHT,
.width = -1,
.percent = 0,
.min_width = std::size("2000.0K (2000.0 live)") * kCharWidth,
.max_width = -1,
.sortable = true,
.initial_sort_is_ascending = false,
.default_visibility = false},
TableColumnData{
.id = IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN,
.align = ui::TableColumn::RIGHT,
.width = -1,
.percent = 0,
.min_width = std::size("2000.0K (2000.0 live)") * kCharWidth,
.max_width = -1,
.sortable = true,
.initial_sort_is_ascending = false,
.default_visibility = false},
TableColumnData{
.id = IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN,
.align = ui::TableColumn::RIGHT,
.width = -1,
.percent = 0,
.min_width = std::size("2000.0K (2000.0 live)") * kCharWidth,
.max_width = -1,
.sortable = true,
.initial_sort_is_ascending = false,
.default_visibility = false},
TableColumnData{.id = IDS_TASK_MANAGER_VIDEO_MEMORY_COLUMN,
.align = ui::TableColumn::RIGHT,
.width = -1,
.percent = 0,
.min_width = std::size("2000.0K") * kCharWidth,
.max_width = -1,
.sortable = true,
.initial_sort_is_ascending = false,
.default_visibility = false},
TableColumnData{.id = IDS_TASK_MANAGER_SQLITE_MEMORY_USED_COLUMN,
.align = ui::TableColumn::RIGHT,
.width = -1,
.percent = 0,
.min_width = std::size("800 kB") * kCharWidth,
.max_width = -1,
.sortable = true,
.initial_sort_is_ascending = false,
.default_visibility = false},
TableColumnData{
.id = IDS_TASK_MANAGER_JAVASCRIPT_MEMORY_ALLOCATED_COLUMN,
.align = ui::TableColumn::RIGHT,
.width = -1,
.percent = 0,
.min_width = std::size("2000.0K (2000.0 live)") * kCharWidth,
.max_width = -1,
.sortable = true,
.initial_sort_is_ascending = false,
.default_visibility = false},
TableColumnData{.id = IDS_TASK_MANAGER_IDLE_WAKEUPS_COLUMN,
.align = ui::TableColumn::RIGHT,
.width = -1,
.percent = 0,
.min_width = std::size("idlewakeups") * kCharWidth,
.max_width = -1,
.sortable = true,
.initial_sort_is_ascending = false,
.default_visibility = false},
#if BUILDFLAG(IS_WIN)
TableColumnData{.id = IDS_TASK_MANAGER_HARD_FAULTS_COLUMN,
.align = ui::TableColumn::RIGHT,
.width = -1,
.percent = 0,
.min_width = std::size("100000") * kCharWidth,
.max_width = -1,
.sortable = true,
.initial_sort_is_ascending = false,
.default_visibility = false},
#endif
#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
TableColumnData{.id = IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN,
.align = ui::TableColumn::RIGHT,
.width = -1,
.percent = 0,
.min_width = std::size("999") * kCharWidth,
.max_width = -1,
.sortable = true,
.initial_sort_is_ascending = false,
.default_visibility = false},
#endif
TableColumnData{.id = IDS_TASK_MANAGER_PROCESS_PRIORITY_COLUMN,
.align = ui::TableColumn::LEFT,
.width = -1,
.percent = 0,
.min_width = std::size("background") * kCharWidth,
.max_width = -1,
.sortable = true,
.initial_sort_is_ascending = true,
.default_visibility = false},
TableColumnData{.id = IDS_TASK_MANAGER_KEEPALIVE_COUNT_COLUMN,
.align = ui::TableColumn::RIGHT,
.width = -1,
.percent = 0,
.min_width = std::size("999") * kCharWidth,
.max_width = -1,
.sortable = true,
.initial_sort_is_ascending = false,
.default_visibility = false},
};
inline constexpr size_t kColumnsSize = std::size(kColumns);
inline constexpr char kSortColumnIdKey[] = "sort_column_id";
inline constexpr char kSortIsAscendingKey[] = "sort_is_ascending";
std::string_view GetColumnIdAsString(int column_id);
}
#endif