summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-26 22:25:38 +0000
committerthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-26 22:25:38 +0000
commit7322c9f9887ba77228fffe8ac061ad820c1bf69b (patch)
treee6862b9e58b19464693a47ef54edf41ce4f51472
parent00d739981d9b7c7d8f48d204cdac0d05f16bd068 (diff)
downloadchromium_src-7322c9f9887ba77228fffe8ac061ad820c1bf69b.zip
chromium_src-7322c9f9887ba77228fffe8ac061ad820c1bf69b.tar.gz
chromium_src-7322c9f9887ba77228fffe8ac061ad820c1bf69b.tar.bz2
gtk: Add the experimental purge memory button. Also add a GRD entry for the button.
BUG=none TEST=The --purge-memory-button switch adds a purge memory button to the task manager. Review URL: http://codereview.chromium.org/661200 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40170 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/app/generated_resources.grd3
-rw-r--r--chrome/browser/gtk/task_manager_gtk.cc23
-rw-r--r--chrome/browser/views/task_manager_view.cc7
3 files changed, 28 insertions, 5 deletions
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index 081b78a..2a9b3be 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -2823,6 +2823,9 @@ each locale. -->
<message name="IDS_TASK_MANAGER_KILL" desc="The caption of the Task Manager kill button">
End process
</message>
+ <message name="IDS_TASK_MANAGER_PURGE_MEMORY" desc="The caption of the Task Manager purge memory button">
+ Purge memory
+ </message>
<message name="IDS_TASK_MANAGER_ABOUT_MEMORY_LINK" desc="The caption of the Task Manager link to about:memory">
Stats for nerds
</message>
diff --git a/chrome/browser/gtk/task_manager_gtk.cc b/chrome/browser/gtk/task_manager_gtk.cc
index af80035..18418f6 100644
--- a/chrome/browser/gtk/task_manager_gtk.cc
+++ b/chrome/browser/gtk/task_manager_gtk.cc
@@ -7,6 +7,8 @@
#include <gdk/gdkkeysyms.h>
#include <algorithm>
+#include <set>
+#include <utility>
#include <vector>
#include "app/gfx/gtk_util.h"
@@ -14,12 +16,15 @@
#include "app/menus/simple_menu_model.h"
#include "app/resource_bundle.h"
#include "base/auto_reset.h"
+#include "base/command_line.h"
#include "base/logging.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/gtk/gtk_chrome_link_button.h"
#include "chrome/browser/gtk/gtk_theme_provider.h"
#include "chrome/browser/gtk/menu_gtk.h"
+#include "chrome/browser/memory_purger.h"
#include "chrome/browser/pref_service.h"
+#include "chrome/common/chrome_switches.h"
#include "chrome/common/gtk_tree.h"
#include "chrome/common/gtk_util.h"
#include "chrome/common/pref_names.h"
@@ -39,6 +44,9 @@ const gint kTaskManagerResponseKill = 1;
// The resource id for the 'Stats for nerds' link button.
const gint kTaskManagerAboutMemoryLink = 2;
+// The resource id for the 'Purge Memory' button
+const gint kTaskManagerPurgeMemory = 3;
+
enum TaskManagerColumn {
kTaskManagerIcon,
kTaskManagerPage,
@@ -365,8 +373,6 @@ void TaskManagerGtk::Init() {
// Task Manager window is shared between all browsers.
NULL,
GTK_DIALOG_NO_SEPARATOR,
- l10n_util::GetStringUTF8(IDS_TASK_MANAGER_KILL).c_str(),
- kTaskManagerResponseKill,
NULL);
// Allow browser windows to go in front of the task manager dialog in
@@ -378,6 +384,17 @@ void TaskManagerGtk::Init() {
gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog_),
kTaskManagerResponseKill, FALSE);
+ if (CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kPurgeMemoryButton)) {
+ gtk_dialog_add_button(GTK_DIALOG(dialog_),
+ l10n_util::GetStringUTF8(IDS_TASK_MANAGER_PURGE_MEMORY).c_str(),
+ kTaskManagerPurgeMemory);
+ }
+
+ gtk_dialog_add_button(GTK_DIALOG(dialog_),
+ l10n_util::GetStringUTF8(IDS_TASK_MANAGER_KILL).c_str(),
+ kTaskManagerResponseKill);
+
GtkWidget* link = gtk_chrome_link_button_new(
l10n_util::GetStringUTF8(IDS_TASK_MANAGER_ABOUT_MEMORY_LINK).c_str());
gtk_dialog_add_action_widget(GTK_DIALOG(dialog_), link,
@@ -776,6 +793,8 @@ void TaskManagerGtk::OnResponse(GtkDialog* dialog, gint response_id,
task_manager->KillSelectedProcesses();
} else if (response_id == kTaskManagerAboutMemoryLink) {
task_manager->OnLinkActivated();
+ } else if (response_id == kTaskManagerPurgeMemory) {
+ MemoryPurger::PurgeAll();
}
}
diff --git a/chrome/browser/views/task_manager_view.cc b/chrome/browser/views/task_manager_view.cc
index cfc66f7..6dbbb87 100644
--- a/chrome/browser/views/task_manager_view.cc
+++ b/chrome/browser/views/task_manager_view.cc
@@ -365,8 +365,10 @@ void TaskManagerView::Init() {
SetContextMenuController(this);
// If we're running with --purge-memory-button, add a "Purge memory" button.
if (CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kPurgeMemoryButton))
- purge_memory_button_ = new views::NativeButton(this, L"Purge memory");
+ switches::kPurgeMemoryButton)) {
+ purge_memory_button_ = new views::NativeButton(this,
+ l10n_util::GetString(IDS_TASK_MANAGER_PURGE_MEMORY));
+ }
kill_button_ = new views::NativeButton(
this, l10n_util::GetString(IDS_TASK_MANAGER_KILL));
kill_button_->AddAccelerator(views::Accelerator(base::VKEY_E,
@@ -683,4 +685,3 @@ void ShowTaskManager() {
}
} // namespace browser
-