summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authoryoshiki@chromium.org <yoshiki@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-26 10:55:44 +0000
committeryoshiki@chromium.org <yoshiki@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-26 10:55:44 +0000
commitb06b95096627f9a4e34ff8cbe7916a3b6233caf0 (patch)
treeb17aed95b32d4be773b58ce989748fe33cadf9a9 /chrome/browser
parenta25fd45ec661621058ba8008391e201c861a34de (diff)
downloadchromium_src-b06b95096627f9a4e34ff8cbe7916a3b6233caf0.zip
chromium_src-b06b95096627f9a4e34ff8cbe7916a3b6233caf0.tar.gz
chromium_src-b06b95096627f9a4e34ff8cbe7916a3b6233caf0.tar.bz2
Disable end process button when Browser process is selected in Task Manager
BUG=chromium-os:20077 TEST=manual Review URL: http://codereview.chromium.org/8357017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@107330 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/resources/task_manager/main.js31
-rw-r--r--chrome/browser/task_manager/task_manager.h44
-rw-r--r--chrome/browser/ui/webui/task_manager_handler.cc5
3 files changed, 67 insertions, 13 deletions
diff --git a/chrome/browser/resources/task_manager/main.js b/chrome/browser/resources/task_manager/main.js
index 94c7a18..7c7a5cea 100644
--- a/chrome/browser/resources/task_manager/main.js
+++ b/chrome/browser/resources/task_manager/main.js
@@ -44,6 +44,34 @@ TaskManager.prototype = {
},
/**
+ * Handle selection change.
+ * This is also called when data of tasks are refleshed, even if selection
+ * has not been changed.
+ * @public
+ */
+ onSelectionChange: function () {
+ var sm = this.selectionModel_;
+ var dm = this.dataModel_;
+ var selectedIndexes = sm.selectedIndexes;
+
+ var is_end_process_enabled = true;
+ for (var i = 0; i < selectedIndexes.length; i++) {
+ var index = selectedIndexes[i];
+ var task = dm.item(index);
+ if (task['type'] == 'BROWSER')
+ is_end_process_enabled = false;
+ }
+ if (this.is_end_process_enabled_ != is_end_process_enabled) {
+ if (is_end_process_enabled)
+ $('kill-process').removeAttribute("disabled");
+ else
+ $('kill-process').setAttribute("disabled", "true");
+
+ this.is_end_process_enabled_ = is_end_process_enabled;
+ }
+ },
+
+ /**
* Closes taskmanager dialog.
* After this function is called, onClose() will be called.
* @public
@@ -128,6 +156,9 @@ TaskManager.prototype = {
this.selectionModel_ = new cr.ui.ListSelectionModel();
this.dataModel_ = new cr.ui.ArrayDataModel([]);
+ this.selectionModel_.addEventListener('change',
+ this.onSelectionChange.bind(this));
+
// Initializes compare functions for column sort.
var dm = this.dataModel_;
// Columns to sort by value instead of itself.
diff --git a/chrome/browser/task_manager/task_manager.h b/chrome/browser/task_manager/task_manager.h
index 117cc8a..a3d2cba 100644
--- a/chrome/browser/task_manager/task_manager.h
+++ b/chrome/browser/task_manager/task_manager.h
@@ -34,6 +34,23 @@ namespace net {
class URLRequest;
}
+#define TASKMANAGER_RESOURCE_TYPE_LIST(def) \
+ def(BROWSER) /* The main browser process. */ \
+ def(RENDERER) /* A normal TabContents renderer process. */ \
+ def(EXTENSION) /* An extension or app process. */ \
+ def(NOTIFICATION) /* A notification process. */ \
+ def(PLUGIN) /* A plugin process. */ \
+ def(WORKER) /* A web worker process. */ \
+ def(NACL) /* A NativeClient loader or broker process. */ \
+ def(UTILITY) /* A browser utility process. */ \
+ def(PROFILE_IMPORT) /* A profile import process. */ \
+ def(ZYGOTE) /* A Linux zygote process. */ \
+ def(SANDBOX_HELPER) /* A sandbox helper process. */ \
+ def(GPU) /* A graphics process. */
+
+#define TASKMANAGER_RESOURCE_TYPE_LIST_ENUM(a) a,
+#define TASKMANAGER_RESOURCE_TYPE_LIST_AS_STRING(a) case a: return #a;
+
// This class is a singleton.
class TaskManager {
public:
@@ -44,19 +61,8 @@ class TaskManager {
virtual ~Resource() {}
enum Type {
- UNKNOWN = 0, // An unknown process type.
- BROWSER, // The main browser process.
- RENDERER, // A normal TabContents renderer process.
- EXTENSION, // An extension or app process.
- NOTIFICATION, // A notification process.
- PLUGIN, // A plugin process.
- WORKER, // A web worker process.
- NACL, // A NativeClient loader or broker process.
- UTILITY, // A browser utility process.
- PROFILE_IMPORT, // A profile import process.
- ZYGOTE, // A Linux zygote process.
- SANDBOX_HELPER, // A sandbox helper process.
- GPU // A graphics process.
+ UNKNOWN = 0,
+ TASKMANAGER_RESOURCE_TYPE_LIST(TASKMANAGER_RESOURCE_TYPE_LIST_ENUM)
};
virtual string16 GetTitle() const = 0;
@@ -113,6 +119,13 @@ class TaskManager {
// Returns true if this resource is not visible to the user because it lives
// in the background (e.g. extension background page, background contents).
virtual bool IsBackground() const { return false; }
+
+ static const char* GetResourceTypeAsString(const Type type) {
+ switch (type) {
+ TASKMANAGER_RESOURCE_TYPE_LIST(TASKMANAGER_RESOURCE_TYPE_LIST_AS_STRING)
+ default: return "UNKNOWN";
+ }
+ };
};
// ResourceProviders are responsible for adding/removing resources to the task
@@ -204,6 +217,11 @@ class TaskManager {
DISALLOW_COPY_AND_ASSIGN(TaskManager);
};
+#undef TASKMANAGER_RESOURCE_TYPE_LIST
+#undef DEFINE_ENUM
+#undef DEFINE_CONVERT_TO_STRING
+
+
class TaskManagerModelObserver {
public:
virtual ~TaskManagerModelObserver() {}
diff --git a/chrome/browser/ui/webui/task_manager_handler.cc b/chrome/browser/ui/webui/task_manager_handler.cc
index 1ac7463..1834bdf 100644
--- a/chrome/browser/ui/webui/task_manager_handler.cc
+++ b/chrome/browser/ui/webui/task_manager_handler.cc
@@ -26,6 +26,10 @@ namespace {
static Value* CreateColumnValue(const TaskManagerModel* tm,
const std::string column_name,
const int i) {
+ if (column_name == "type")
+ return Value::CreateStringValue(
+ TaskManager::Resource::GetResourceTypeAsString(
+ tm->GetResourceType(i)));
if (column_name == "processId")
return Value::CreateStringValue(tm->GetResourceProcessId(i));
if (column_name == "processIdValue")
@@ -152,6 +156,7 @@ static DictionaryValue* CreateTaskGroupValue(const TaskManagerModel* tm,
tm->IsBackgroundResource(index));
// Columns which have one datum in each group.
+ CreateGroupColumnList(tm, "type", index, 1, val);
CreateGroupColumnList(tm, "processId", index, 1, val);
CreateGroupColumnList(tm, "processIdValue", index, 1, val);
CreateGroupColumnList(tm, "cpuUsage", index, 1, val);