Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(663)

Side by Side Diff: chrome/browser/task_manager/legacy_task_manager_tester.cc

Issue 2197483003: Move the Mac Task Manager to the new backend code. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: mark Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 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/task_management/task_manager_tester.h"
6
7 #include "base/memory/ptr_util.h"
8 #include "chrome/browser/sessions/session_tab_helper.h"
9 #include "chrome/browser/task_management/task_manager_interface.h"
10 #include "chrome/browser/task_manager/resource_provider.h"
11 #include "chrome/browser/task_manager/task_manager.h"
12 #include "chrome/browser/ui/browser_dialogs.h"
13 #include "chrome/grit/generated_resources.h"
14 #include "extensions/strings/grit/extensions_strings.h"
15
16 namespace {
17
18 class LegacyTaskManagerTester : public task_management::TaskManagerTester,
19 public TaskManagerModelObserver {
20 public:
21 explicit LegacyTaskManagerTester(const base::Closure& on_resource_change)
22 : on_resource_change_(on_resource_change),
23 model_(TaskManager::GetInstance()->model()) {
24 if (!on_resource_change_.is_null())
25 model_->AddObserver(this);
26 }
27 ~LegacyTaskManagerTester() override {
28 if (!on_resource_change_.is_null())
29 model_->RemoveObserver(this);
30 }
31
32 // TaskManagerTester:
33 int GetRowCount() override { return model_->ResourceCount(); }
34
35 base::string16 GetRowTitle(int row) override {
36 return model_->GetResourceTitle(row);
37 }
38
39 int64_t GetColumnValue(ColumnSpecifier column, int row) override {
40 size_t value = 0;
41 bool success = false;
42 switch (column) {
43 case ColumnSpecifier::COLUMN_NONE:
44 break;
45 case ColumnSpecifier::V8_MEMORY:
46 success = model_->GetV8Memory(row, &value);
47 break;
48 case ColumnSpecifier::V8_MEMORY_USED:
49 success = model_->GetV8MemoryUsed(row, &value);
50 break;
51 case ColumnSpecifier::SQLITE_MEMORY_USED:
52 success = model_->GetSqliteMemoryUsedBytes(row, &value);
53 break;
54 }
55 if (!success)
56 return 0;
57 return static_cast<int64_t>(value);
58 }
59
60 void ToggleColumnVisibility(ColumnSpecifier column) override {
61 // Doing nothing is okay here; the legacy TaskManager always collects all
62 // stats.
63 }
64
65 int32_t GetTabId(int row) override {
66 if (model_->GetResourceWebContents(row)) {
67 return SessionTabHelper::IdForTab(model_->GetResourceWebContents(row));
68 }
69 return -1;
70 }
71
72 void Kill(int row) override { TaskManager::GetInstance()->KillProcess(row); }
73
74 void GetRowsGroupRange(int row, int* out_start, int* out_length) override {
75 TaskManagerModel::GroupRange group_range =
76 model_->GetGroupRangeForResource(row);
77 *out_start = group_range.first;
78 *out_length = group_range.second;
79 }
80
81 // TaskManagerModelObserver:
82 void OnModelChanged() override { OnResourceChange(); }
83 void OnItemsChanged(int start, int length) override { OnResourceChange(); }
84 void OnItemsAdded(int start, int length) override { OnResourceChange(); }
85 void OnItemsRemoved(int start, int length) override { OnResourceChange(); }
86
87 private:
88 void OnResourceChange() {
89 if (!on_resource_change_.is_null())
90 on_resource_change_.Run();
91 }
92 base::Closure on_resource_change_;
93 TaskManagerModel* model_;
94 };
95
96 } // namespace
97
98 namespace task_management {
99
100 // static
101 std::unique_ptr<TaskManagerTester> TaskManagerTester::Create(
102 const base::Closure& callback) {
103 if (TaskManagerInterface::IsNewTaskManagerEnabled())
104 return TaskManagerTester::CreateDefault(callback);
105 return base::WrapUnique(new LegacyTaskManagerTester(callback));
106 }
107
108 void TaskManagerTester::MaybeRefreshLegacyInstance() {
109 // On Mac, the old task manager might still be used if we are not using mac
110 // views. Refresh() isn't ever needed on the new task manager.
111 if (!TaskManagerInterface::IsNewTaskManagerEnabled())
112 TaskManager::GetInstance()->model()->Refresh();
113 }
114
115 } // namespace task_management
OLDNEW
« no previous file with comments | « chrome/browser/task_manager/guest_information.cc ('k') | chrome/browser/task_manager/panel_information.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698