| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "mash/task_viewer/task_viewer.h" | 5 #include "mash/task_viewer/task_viewer.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 #include "ui/views/controls/table/table_view.h" | 27 #include "ui/views/controls/table/table_view.h" |
| 28 #include "ui/views/controls/table/table_view_observer.h" | 28 #include "ui/views/controls/table/table_view_observer.h" |
| 29 #include "ui/views/mus/aura_init.h" | 29 #include "ui/views/mus/aura_init.h" |
| 30 #include "ui/views/mus/window_manager_connection.h" | 30 #include "ui/views/mus/window_manager_connection.h" |
| 31 #include "ui/views/widget/widget_delegate.h" | 31 #include "ui/views/widget/widget_delegate.h" |
| 32 | 32 |
| 33 namespace mash { | 33 namespace mash { |
| 34 namespace task_viewer { | 34 namespace task_viewer { |
| 35 namespace { | 35 namespace { |
| 36 | 36 |
| 37 using mojo::shell::mojom::InstanceInfoPtr; | 37 using shell::mojom::InstanceInfoPtr; |
| 38 | 38 |
| 39 class TaskViewerContents : public views::WidgetDelegateView, | 39 class TaskViewerContents : public views::WidgetDelegateView, |
| 40 public ui::TableModel, | 40 public ui::TableModel, |
| 41 public views::ButtonListener, | 41 public views::ButtonListener, |
| 42 public mojo::shell::mojom::InstanceListener { | 42 public shell::mojom::InstanceListener { |
| 43 public: | 43 public: |
| 44 TaskViewerContents(mojo::shell::mojom::InstanceListenerRequest request, | 44 TaskViewerContents(shell::mojom::InstanceListenerRequest request, |
| 45 catalog::mojom::CatalogPtr catalog) | 45 catalog::mojom::CatalogPtr catalog) |
| 46 : binding_(this, std::move(request)), | 46 : binding_(this, std::move(request)), |
| 47 catalog_(std::move(catalog)), | 47 catalog_(std::move(catalog)), |
| 48 table_view_(nullptr), | 48 table_view_(nullptr), |
| 49 table_view_parent_(nullptr), | 49 table_view_parent_(nullptr), |
| 50 kill_button_( | 50 kill_button_( |
| 51 new views::LabelButton(this, base::ASCIIToUTF16("Kill Process"))), | 51 new views::LabelButton(this, base::ASCIIToUTF16("Kill Process"))), |
| 52 observer_(nullptr), | 52 observer_(nullptr), |
| 53 weak_ptr_factory_(this) { | 53 weak_ptr_factory_(this) { |
| 54 // We don't want to show an empty UI on startup, so just block until we | 54 // We don't want to show an empty UI on startup, so just block until we |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 // Overridden from views::ButtonListener: | 142 // Overridden from views::ButtonListener: |
| 143 void ButtonPressed(views::Button* sender, const ui::Event& event) override { | 143 void ButtonPressed(views::Button* sender, const ui::Event& event) override { |
| 144 DCHECK_EQ(sender, kill_button_); | 144 DCHECK_EQ(sender, kill_button_); |
| 145 DCHECK_EQ(table_view_->SelectedRowCount(), 1); | 145 DCHECK_EQ(table_view_->SelectedRowCount(), 1); |
| 146 int row = table_view_->FirstSelectedRow(); | 146 int row = table_view_->FirstSelectedRow(); |
| 147 DCHECK(row < static_cast<int>(instances_.size())); | 147 DCHECK(row < static_cast<int>(instances_.size())); |
| 148 base::Process process = base::Process::Open(instances_[row]->pid); | 148 base::Process process = base::Process::Open(instances_[row]->pid); |
| 149 process.Terminate(9, true); | 149 process.Terminate(9, true); |
| 150 } | 150 } |
| 151 | 151 |
| 152 // Overridden from mojo::shell::mojom::InstanceListener: | 152 // Overridden from shell::mojom::InstanceListener: |
| 153 void SetExistingInstances(mojo::Array<InstanceInfoPtr> instances) override { | 153 void SetExistingInstances(mojo::Array<InstanceInfoPtr> instances) override { |
| 154 // This callback should only be called with an empty model. | 154 // This callback should only be called with an empty model. |
| 155 DCHECK(instances_.empty()); | 155 DCHECK(instances_.empty()); |
| 156 mojo::Array<mojo::String> names; | 156 mojo::Array<mojo::String> names; |
| 157 for (size_t i = 0; i < instances.size(); ++i) { | 157 for (size_t i = 0; i < instances.size(); ++i) { |
| 158 InsertInstance(instances[i]->id, instances[i]->identity->name, | 158 InsertInstance(instances[i]->id, instances[i]->identity->name, |
| 159 instances[i]->pid); | 159 instances[i]->pid); |
| 160 names.push_back(instances[i]->identity->name); | 160 names.push_back(instances[i]->identity->name); |
| 161 } | 161 } |
| 162 catalog_->GetEntries(std::move(names), | 162 catalog_->GetEntries(std::move(names), |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 pid_column.id = 2; | 244 pid_column.id = 2; |
| 245 // TODO(beng): use resources. | 245 // TODO(beng): use resources. |
| 246 pid_column.title = base::ASCIIToUTF16("PID"); | 246 pid_column.title = base::ASCIIToUTF16("PID"); |
| 247 pid_column.width = 50; | 247 pid_column.width = 50; |
| 248 pid_column.sortable = true; | 248 pid_column.sortable = true; |
| 249 columns.push_back(pid_column); | 249 columns.push_back(pid_column); |
| 250 | 250 |
| 251 return columns; | 251 return columns; |
| 252 } | 252 } |
| 253 | 253 |
| 254 mojo::Binding<mojo::shell::mojom::InstanceListener> binding_; | 254 mojo::Binding<shell::mojom::InstanceListener> binding_; |
| 255 catalog::mojom::CatalogPtr catalog_; | 255 catalog::mojom::CatalogPtr catalog_; |
| 256 | 256 |
| 257 views::TableView* table_view_; | 257 views::TableView* table_view_; |
| 258 views::View* table_view_parent_; | 258 views::View* table_view_parent_; |
| 259 views::LabelButton* kill_button_; | 259 views::LabelButton* kill_button_; |
| 260 ui::TableModelObserver* observer_; | 260 ui::TableModelObserver* observer_; |
| 261 | 261 |
| 262 std::vector<std::unique_ptr<InstanceInfo>> instances_; | 262 std::vector<std::unique_ptr<InstanceInfo>> instances_; |
| 263 | 263 |
| 264 base::WeakPtrFactory<TaskViewerContents> weak_ptr_factory_; | 264 base::WeakPtrFactory<TaskViewerContents> weak_ptr_factory_; |
| 265 | 265 |
| 266 DISALLOW_COPY_AND_ASSIGN(TaskViewerContents); | 266 DISALLOW_COPY_AND_ASSIGN(TaskViewerContents); |
| 267 }; | 267 }; |
| 268 | 268 |
| 269 } // namespace | 269 } // namespace |
| 270 | 270 |
| 271 TaskViewer::TaskViewer() {} | 271 TaskViewer::TaskViewer() {} |
| 272 TaskViewer::~TaskViewer() {} | 272 TaskViewer::~TaskViewer() {} |
| 273 | 273 |
| 274 void TaskViewer::Initialize(mojo::Connector* connector, | 274 void TaskViewer::Initialize(shell::Connector* connector, |
| 275 const mojo::Identity& identity, | 275 const shell::Identity& identity, |
| 276 uint32_t id) { | 276 uint32_t id) { |
| 277 tracing_.Initialize(connector, identity.name()); | 277 tracing_.Initialize(connector, identity.name()); |
| 278 | 278 |
| 279 aura_init_.reset(new views::AuraInit(connector, "views_mus_resources.pak")); | 279 aura_init_.reset(new views::AuraInit(connector, "views_mus_resources.pak")); |
| 280 views::WindowManagerConnection::Create(connector); | 280 views::WindowManagerConnection::Create(connector); |
| 281 | 281 |
| 282 mojo::shell::mojom::ShellPtr shell; | 282 shell::mojom::ShellPtr shell; |
| 283 connector->ConnectToInterface("mojo:shell", &shell); | 283 connector->ConnectToInterface("mojo:shell", &shell); |
| 284 | 284 |
| 285 mojo::shell::mojom::InstanceListenerPtr listener; | 285 shell::mojom::InstanceListenerPtr listener; |
| 286 mojo::shell::mojom::InstanceListenerRequest request = GetProxy(&listener); | 286 shell::mojom::InstanceListenerRequest request = GetProxy(&listener); |
| 287 shell->AddInstanceListener(std::move(listener)); | 287 shell->AddInstanceListener(std::move(listener)); |
| 288 | 288 |
| 289 catalog::mojom::CatalogPtr catalog; | 289 catalog::mojom::CatalogPtr catalog; |
| 290 connector->ConnectToInterface("mojo:catalog", &catalog); | 290 connector->ConnectToInterface("mojo:catalog", &catalog); |
| 291 | 291 |
| 292 TaskViewerContents* task_viewer = new TaskViewerContents( | 292 TaskViewerContents* task_viewer = new TaskViewerContents( |
| 293 std::move(request), std::move(catalog)); | 293 std::move(request), std::move(catalog)); |
| 294 views::Widget* window = views::Widget::CreateWindowWithContextAndBounds( | 294 views::Widget* window = views::Widget::CreateWindowWithContextAndBounds( |
| 295 task_viewer, nullptr, gfx::Rect(10, 10, 500, 500)); | 295 task_viewer, nullptr, gfx::Rect(10, 10, 500, 500)); |
| 296 window->Show(); | 296 window->Show(); |
| 297 } | 297 } |
| 298 | 298 |
| 299 } // namespace task_viewer | 299 } // namespace task_viewer |
| 300 } // namespace main | 300 } // namespace main |
| OLD | NEW |