blob: 643fc3fb970f476f01871bd899080b3ce8057c1d [file] [log] [blame]
// 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 "chrome/browser/ui/task_manager/task_manager_columns.h"
#include "base/logging.h"
#include "base/stl_util.h"
#include "build/build_config.h"
#include "chrome/grit/generated_resources.h"
#include "components/nacl/common/buildflags.h"
namespace task_manager {
namespace {
// On Mac: Width of "a" and most other letters/digits in "small" table views.
const int kCharWidth = 6;
} // namespace
// IMPORTANT: Do NOT change the below list without changing the COLUMN_LIST
// macro below.
const TableColumnData kColumns[] = {
{IDS_TASK_MANAGER_TASK_COLUMN, ui::TableColumn::LEFT, -1, 1, 120, 600, true,
true, true},
{IDS_TASK_MANAGER_PROFILE_NAME_COLUMN, ui::TableColumn::LEFT, -1, 0, 60,
200, true, true, false},
{IDS_TASK_MANAGER_MEM_FOOTPRINT_COLUMN, ui::TableColumn::RIGHT, -1, 0,
base::size("800 MiB") * kCharWidth,
base::size("Memory Footprint") * 1.5 * kCharWidth, true, false, true},
#if defined(OS_CHROMEOS)
{IDS_TASK_MANAGER_SWAPPED_MEM_COLUMN, ui::TableColumn::RIGHT, -1, 0,
base::size("800 MiB") * kCharWidth, -1, true, false, false},
#endif
// Make the CPU column min width a bit wider on macOS. When you click a column
// to make it the primary sort column a caret appears to the right of the
// column's label. Without a little extra space, the tableview squeezes the
// caret in by tail-truncating the label, which looks terrible.
#if defined(OS_MACOSX)
{IDS_TASK_MANAGER_CPU_COLUMN, ui::TableColumn::RIGHT, -1, 0,
base::size("0099.9") * kCharWidth, -1, true, false, true},
#else
{IDS_TASK_MANAGER_CPU_COLUMN, ui::TableColumn::RIGHT, -1, 0,
base::size("99.9") * kCharWidth, -1, true, false, true},
#endif // defined(OS_MACOSX)
#if defined(OS_WIN)
{IDS_TASK_MANAGER_CPU_TIME_COLUMN, ui::TableColumn::RIGHT, -1, 0,
base::size("1234h 42m 30s") * kCharWidth, -1, true, false, false},
{IDS_TASK_MANAGER_START_TIME_COLUMN, ui::TableColumn::RIGHT, -1, 0,
base::size("12/13/14 11:44:30 PM") * kCharWidth, -1, true, true, false},
#endif
{IDS_TASK_MANAGER_NET_COLUMN, ui::TableColumn::RIGHT, -1, 0,
base::size("150 kiB/s") * kCharWidth, -1, true, false, true},
{IDS_TASK_MANAGER_PROCESS_ID_COLUMN, ui::TableColumn::RIGHT, -1, 0,
base::size("73099 ") * kCharWidth, -1, true, true, true},
#if defined(OS_WIN)
{IDS_TASK_MANAGER_GDI_HANDLES_COLUMN, ui::TableColumn::RIGHT, -1, 0, 0, 0,
true, false, false},
{IDS_TASK_MANAGER_USER_HANDLES_COLUMN, ui::TableColumn::RIGHT, -1, 0, 0, 0,
true, false, false},
#endif
{IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN, ui::TableColumn::RIGHT, -1, 0,
base::size("2000.0K (2000.0 live)") * kCharWidth, -1, true, false, false},
{IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN, ui::TableColumn::RIGHT, -1,
0, base::size("2000.0K (2000.0 live)") * kCharWidth, -1, true, false,
false},
{IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN, ui::TableColumn::RIGHT, -1, 0,
base::size("2000.0K (2000.0 live)") * kCharWidth, -1, true, false, false},
{IDS_TASK_MANAGER_VIDEO_MEMORY_COLUMN, ui::TableColumn::RIGHT, -1, 0,
base::size("2000.0K") * kCharWidth, -1, true, false, false},
{IDS_TASK_MANAGER_SQLITE_MEMORY_USED_COLUMN, ui::TableColumn::RIGHT, -1, 0,
base::size("800 kB") * kCharWidth, -1, true, false, false},
#if BUILDFLAG(ENABLE_NACL)
{IDS_TASK_MANAGER_NACL_DEBUG_STUB_PORT_COLUMN, ui::TableColumn::RIGHT, -1,
0, base::size("32767") * kCharWidth, -1, true, true, false},
#endif // BUILDFLAG(ENABLE_NACL)
{IDS_TASK_MANAGER_JAVASCRIPT_MEMORY_ALLOCATED_COLUMN,
ui::TableColumn::RIGHT, -1, 0,
base::size("2000.0K (2000.0 live)") * kCharWidth, -1, true, false, false},
{IDS_TASK_MANAGER_IDLE_WAKEUPS_COLUMN, ui::TableColumn::RIGHT, -1, 0,
base::size("idlewakeups") * kCharWidth, -1, true, false, false},
#if defined(OS_WIN)
{IDS_TASK_MANAGER_HARD_FAULTS_COLUMN, ui::TableColumn::RIGHT, -1, 0,
base::size("100000") * kCharWidth, -1, true, false, false},
#endif
#if defined(OS_LINUX)
{IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN, ui::TableColumn::RIGHT, -1, 0,
base::size("999") * kCharWidth, -1, true, false, false},
#endif // defined(OS_LINUX)
{IDS_TASK_MANAGER_PROCESS_PRIORITY_COLUMN, ui::TableColumn::LEFT, -1, 0,
base::size("background") * kCharWidth, -1, true, true, false},
{IDS_TASK_MANAGER_KEEPALIVE_COUNT_COLUMN, ui::TableColumn::RIGHT, -1, 0,
base::size("999") * kCharWidth, -1, false, false, false},
};
const size_t kColumnsSize = base::size(kColumns);
const char kSortColumnIdKey[] = "sort_column_id";
const char kSortIsAscendingKey[] = "sort_is_ascending";
// We can't derive session restore keys from the integer IDs of the columns
// since the IDs are generated, and so may change from one build to another.
// Instead we stringify the column ID symbol (i.e. for the ID
// IDS_TASK_MANAGER_TASK_COLUMN, we use the literal string
// "IDS_TASK_MANAGER_TASK_COLUMN").
#define COLUMN_CASE(column_id) \
case column_id: \
return std::string(#column_id);
std::string GetColumnIdAsString(int column_id) {
switch (column_id) {
COLUMN_CASE(IDS_TASK_MANAGER_TASK_COLUMN);
COLUMN_CASE(IDS_TASK_MANAGER_PROFILE_NAME_COLUMN);
COLUMN_CASE(IDS_TASK_MANAGER_MEM_FOOTPRINT_COLUMN);
COLUMN_CASE(IDS_TASK_MANAGER_SWAPPED_MEM_COLUMN);
COLUMN_CASE(IDS_TASK_MANAGER_CPU_COLUMN);
COLUMN_CASE(IDS_TASK_MANAGER_START_TIME_COLUMN);
COLUMN_CASE(IDS_TASK_MANAGER_CPU_TIME_COLUMN);
COLUMN_CASE(IDS_TASK_MANAGER_NET_COLUMN);
COLUMN_CASE(IDS_TASK_MANAGER_PROCESS_ID_COLUMN);
COLUMN_CASE(IDS_TASK_MANAGER_GDI_HANDLES_COLUMN);
COLUMN_CASE(IDS_TASK_MANAGER_USER_HANDLES_COLUMN);
COLUMN_CASE(IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN);
COLUMN_CASE(IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN);
COLUMN_CASE(IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN);
COLUMN_CASE(IDS_TASK_MANAGER_VIDEO_MEMORY_COLUMN);
COLUMN_CASE(IDS_TASK_MANAGER_SQLITE_MEMORY_USED_COLUMN);
COLUMN_CASE(IDS_TASK_MANAGER_NACL_DEBUG_STUB_PORT_COLUMN);
COLUMN_CASE(IDS_TASK_MANAGER_JAVASCRIPT_MEMORY_ALLOCATED_COLUMN);
COLUMN_CASE(IDS_TASK_MANAGER_IDLE_WAKEUPS_COLUMN);
COLUMN_CASE(IDS_TASK_MANAGER_HARD_FAULTS_COLUMN);
COLUMN_CASE(IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN);
COLUMN_CASE(IDS_TASK_MANAGER_PROCESS_PRIORITY_COLUMN);
COLUMN_CASE(IDS_TASK_MANAGER_KEEPALIVE_COUNT_COLUMN);
default:
NOTREACHED();
return std::string();
}
}
} // namespace task_manager