OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 "chrome/browser/task_manager.h" | 5 #include "chrome/browser/task_manager.h" |
6 | 6 |
7 #include "base/process_util.h" | 7 #include "base/process_util.h" |
8 #include "base/stats_table.h" | 8 #include "base/stats_table.h" |
9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
10 #include "base/thread.h" | 10 #include "base/thread.h" |
(...skipping 762 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
773 UpdateStatsCounters(); | 773 UpdateStatsCounters(); |
774 views::TableColumn col(kGoatsTeleportedColumn, L"Goats Teleported", | 774 views::TableColumn col(kGoatsTeleportedColumn, L"Goats Teleported", |
775 views::TableColumn::RIGHT, -1, 0); | 775 views::TableColumn::RIGHT, -1, 0); |
776 col.sortable = true; | 776 col.sortable = true; |
777 columns_.push_back(col); | 777 columns_.push_back(col); |
778 tab_table_->AddColumn(col); | 778 tab_table_->AddColumn(col); |
779 tab_table_->SetObserver(this); | 779 tab_table_->SetObserver(this); |
780 SetContextMenuController(this); | 780 SetContextMenuController(this); |
781 kill_button_.reset(new views::NativeButton( | 781 kill_button_.reset(new views::NativeButton( |
782 this, l10n_util::GetString(IDS_TASK_MANAGER_KILL))); | 782 this, l10n_util::GetString(IDS_TASK_MANAGER_KILL))); |
| 783 // TODO(hamaji): Use accelerator once the bug in FocusManager fixed. |
| 784 // http://crbug.com/11073 |
| 785 // kill_button_->AddAccelerator(views::Accelerator('E', false, false, false)); |
| 786 kill_button_->SetAccessibleKeyboardShortcut(L"E"); |
783 about_memory_link_.reset(new views::Link( | 787 about_memory_link_.reset(new views::Link( |
784 l10n_util::GetString(IDS_TASK_MANAGER_ABOUT_MEMORY_LINK))); | 788 l10n_util::GetString(IDS_TASK_MANAGER_ABOUT_MEMORY_LINK))); |
785 about_memory_link_->SetController(this); | 789 about_memory_link_->SetController(this); |
786 | 790 |
787 AddChildView(tab_table_); | 791 AddChildView(tab_table_); |
788 | 792 |
789 // Makes sure our state is consistent. | 793 // Makes sure our state is consistent. |
790 OnSelectionChanged(); | 794 OnSelectionChanged(); |
791 } | 795 } |
792 | 796 |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
905 tab_table_->SelectedRowCount() > 0); | 909 tab_table_->SelectedRowCount() > 0); |
906 } | 910 } |
907 | 911 |
908 void TaskManagerContents::OnDoubleClick() { | 912 void TaskManagerContents::OnDoubleClick() { |
909 task_manager_->ActivateFocusedTab(); | 913 task_manager_->ActivateFocusedTab(); |
910 } | 914 } |
911 | 915 |
912 void TaskManagerContents::OnKeyDown(unsigned short virtual_keycode) { | 916 void TaskManagerContents::OnKeyDown(unsigned short virtual_keycode) { |
913 if (virtual_keycode == VK_RETURN) | 917 if (virtual_keycode == VK_RETURN) |
914 task_manager_->ActivateFocusedTab(); | 918 task_manager_->ActivateFocusedTab(); |
| 919 else if (virtual_keycode == 'E') |
| 920 task_manager_->KillSelectedProcesses(); |
915 } | 921 } |
916 | 922 |
917 // views::LinkController implementation | 923 // views::LinkController implementation |
918 void TaskManagerContents::LinkActivated(views::Link* source, | 924 void TaskManagerContents::LinkActivated(views::Link* source, |
919 int event_flags) { | 925 int event_flags) { |
920 DCHECK(source == about_memory_link_); | 926 DCHECK(source == about_memory_link_); |
921 Browser* browser = BrowserList::GetLastActive(); | 927 Browser* browser = BrowserList::GetLastActive(); |
922 DCHECK(browser); | 928 DCHECK(browser); |
923 browser->OpenURL(GURL("about:memory"), GURL(), NEW_FOREGROUND_TAB, | 929 browser->OpenURL(GURL("about:memory"), GURL(), NEW_FOREGROUND_TAB, |
924 PageTransition::LINK); | 930 PageTransition::LINK); |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
998 return false; | 1004 return false; |
999 } | 1005 } |
1000 | 1006 |
1001 void TaskManager::KillSelectedProcesses() { | 1007 void TaskManager::KillSelectedProcesses() { |
1002 std::vector<int> selection; | 1008 std::vector<int> selection; |
1003 contents_->GetSelection(&selection); | 1009 contents_->GetSelection(&selection); |
1004 for (std::vector<int>::const_iterator iter = selection.begin(); | 1010 for (std::vector<int>::const_iterator iter = selection.begin(); |
1005 iter != selection.end(); ++iter) { | 1011 iter != selection.end(); ++iter) { |
1006 HANDLE process = table_model_->GetProcessAt(*iter); | 1012 HANDLE process = table_model_->GetProcessAt(*iter); |
1007 DCHECK(process); | 1013 DCHECK(process); |
| 1014 if (process == GetCurrentProcess()) |
| 1015 continue; |
1008 TerminateProcess(process, 0); | 1016 TerminateProcess(process, 0); |
1009 } | 1017 } |
1010 } | 1018 } |
1011 | 1019 |
1012 void TaskManager::ActivateFocusedTab() { | 1020 void TaskManager::ActivateFocusedTab() { |
1013 std::vector<int> focused; | 1021 std::vector<int> focused; |
1014 contents_->GetFocused(&focused); | 1022 contents_->GetFocused(&focused); |
1015 int focused_size = static_cast<int>(focused.size()); | 1023 int focused_size = static_cast<int>(focused.size()); |
1016 | 1024 |
1017 DCHECK(focused_size == 1); | 1025 DCHECK(focused_size == 1); |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1095 } | 1103 } |
1096 | 1104 |
1097 views::View* TaskManager::GetContentsView() { | 1105 views::View* TaskManager::GetContentsView() { |
1098 return contents_.get(); | 1106 return contents_.get(); |
1099 } | 1107 } |
1100 | 1108 |
1101 // static | 1109 // static |
1102 TaskManager* TaskManager::GetInstance() { | 1110 TaskManager* TaskManager::GetInstance() { |
1103 return Singleton<TaskManager>::get(); | 1111 return Singleton<TaskManager>::get(); |
1104 } | 1112 } |
OLD | NEW |