Index: chrome/browser/ui/task_manager/task_manager_table_model.cc |
diff --git a/chrome/browser/ui/task_manager/task_manager_table_model.cc b/chrome/browser/ui/task_manager/task_manager_table_model.cc |
index 75bf306bc78a4b294667f23dd19e53bb1f52a327..3e33451ce51f1ce6e854ca711043f0794d02c523 100644 |
--- a/chrome/browser/ui/task_manager/task_manager_table_model.cc |
+++ b/chrome/browser/ui/task_manager/task_manager_table_model.cc |
@@ -33,6 +33,11 @@ namespace task_management { |
namespace { |
+// Captures the first instance of TaskManagerTableModel, for use in |
+// browsertests. Nothing prevents other TaskManagerTableModel instances, but in |
+// practice this will be model driving the visible task manager dialog. |
afakhry
2016/05/02 18:58:17
... will be 'the' model driving ...
ncarter (slow)
2016/05/02 23:09:57
Done.
|
+TaskManagerTableModel* g_instance_for_testing = nullptr; |
+ |
#if defined(OS_MACOSX) |
// Match Activity Monitor's default refresh rate. |
const int64_t kRefreshTimeMS = 2000; |
@@ -270,11 +275,18 @@ TaskManagerTableModel::TaskManagerTableModel(int64_t refresh_flags, |
#else |
is_nacl_debugging_flag_enabled_(false) { |
#endif // !defined(DISABLE_NACL) |
+ |
+ if (!g_instance_for_testing) |
+ g_instance_for_testing = this; |
+ |
DCHECK(delegate); |
StartUpdating(); |
} |
TaskManagerTableModel::~TaskManagerTableModel() { |
+ if (g_instance_for_testing == this) |
+ g_instance_for_testing = nullptr; |
+ |
StopUpdating(); |
} |
@@ -804,6 +816,11 @@ void TaskManagerTableModel::ToggleColumnVisibility(int column_id) { |
UpdateRefreshTypes(column_id, new_visibility); |
} |
+// static |
+TaskManagerTableModel* TaskManagerTableModel::GetInstanceForTesting() { |
+ return g_instance_for_testing; |
+} |
+ |
void TaskManagerTableModel::StartUpdating() { |
TaskManagerInterface::GetTaskManager()->AddObserver(this); |
tasks_ = observed_task_manager()->GetTaskIdsList(); |