summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorjamescook@chromium.org <jamescook@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-03 16:10:41 +0000
committerjamescook@chromium.org <jamescook@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-03 16:10:41 +0000
commit80eb4260603f58b71ed0a02bdacaa9a2e96fd67b (patch)
tree2f1142154d81cff50da6cb8d3d37faf1874e8ac5 /chrome
parent295b5af6b58ab3a934467324908112ab6005cf29 (diff)
downloadchromium_src-80eb4260603f58b71ed0a02bdacaa9a2e96fd67b.zip
chromium_src-80eb4260603f58b71ed0a02bdacaa9a2e96fd67b.tar.gz
chromium_src-80eb4260603f58b71ed0a02bdacaa9a2e96fd67b.tar.bz2
CrOS - Add free memory status widget to about:flags
We're working on memory consumption on ARM and it's useful to have realtime feedback on system-wide memory consumption. Also added pkasting's memory purger as a menu command, fixed some comments, and fixed an include that was confusing eclipse. BUG=chromium-os:18564 TEST=Open about:flags and turn it on and off Review URL: http://codereview.chromium.org/7548030 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@95246 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/app/generated_resources.grd6
-rw-r--r--chrome/browser/about_flags.cc13
-rw-r--r--chrome/browser/browser_about_handler.h1
-rw-r--r--chrome/browser/chromeos/status/memory_menu_button.cc23
-rw-r--r--chrome/browser/chromeos/status/memory_menu_button.h2
-rw-r--r--chrome/browser/memory_purger.h4
6 files changed, 45 insertions, 4 deletions
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index 3416b43..26ec54f 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -4213,6 +4213,12 @@ Keep your key file in a safe place. You will need it to create new versions of y
<message name="IDS_FLAGS_ENABLE_SHORTCUTS_PROVIDER_DESCRIPTION" desc=" Description of the 'Enable better ranking of previously selected shortcuts in omnibox' lab.">
Remembers commonly selected autocomplete results based on the omnibox search term and offers those URLs the next time that same search term is typed.
</message>
+ <message name="IDS_FLAGS_MEMORY_WIDGET_NAME" desc="Name of the 'Show memory status' lab.">
+ Show memory status
+ </message>
+ <message name="IDS_FLAGS_MEMORY_WIDGET_DESCRIPTION" desc="Description of the 'Show memory status' lab.">
+ Shows the amount of free memory in the status area. Click on the menu for more information about system memory.
+ </message>
<message name="IDS_FLAGS_XSS_AUDITOR_NAME" desc="Description of the 'XSS Auditor' lab.">
XSS Auditor
</message>
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index f7e9dc8..7cbdf71 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -344,7 +344,18 @@ const Experiment kExperiments[] = {
kOsAll,
SINGLE_VALUE_TYPE(switches::kEnableShortcutsProvider)
},
-};
+ {
+ "memory-widget",
+ IDS_FLAGS_MEMORY_WIDGET_NAME,
+ IDS_FLAGS_MEMORY_WIDGET_DESCRIPTION,
+ kOsCrOS,
+#if defined(OS_CHROMEOS)
+ // This switch exists only on Chrome OS.
+ SINGLE_VALUE_TYPE(switches::kMemoryWidget)
+#else
+ SINGLE_VALUE_TYPE("")
+#endif
+ },};
const Experiment* experiments = kExperiments;
size_t num_experiments = arraysize(kExperiments);
diff --git a/chrome/browser/browser_about_handler.h b/chrome/browser/browser_about_handler.h
index c496beb..2779cc3 100644
--- a/chrome/browser/browser_about_handler.h
+++ b/chrome/browser/browser_about_handler.h
@@ -14,6 +14,7 @@
#include "base/process.h"
#include "base/stringprintf.h"
+#include "build/build_config.h" // USE_TCMALLOC
template <typename T> struct DefaultSingletonTraits;
class GURL;
diff --git a/chrome/browser/chromeos/status/memory_menu_button.cc b/chrome/browser/chromeos/status/memory_menu_button.cc
index 4bdf9a1..606ebc1 100644
--- a/chrome/browser/chromeos/status/memory_menu_button.cc
+++ b/chrome/browser/chromeos/status/memory_menu_button.cc
@@ -7,6 +7,7 @@
#include "base/process_util.h" // GetSystemMemoryInfo
#include "base/stringprintf.h"
#include "chrome/browser/chromeos/status/status_area_host.h"
+#include "chrome/browser/memory_purger.h"
#include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
#include "views/widget/widget.h"
@@ -20,6 +21,7 @@ enum {
MEM_BUFFERS_ITEM,
MEM_CACHE_ITEM,
SHMEM_ITEM,
+ PURGE_MEMORY_ITEM,
};
} // namespace
@@ -78,16 +80,31 @@ std::wstring MemoryMenuButton::GetLabel(int id) const {
return StringPrintf(L"%d MB cache", mem_cache_ / 1024);
case SHMEM_ITEM:
return StringPrintf(L"%d MB shmem", shmem_ / 1024);
+ case PURGE_MEMORY_ITEM:
+ return L"Purge memory";
default:
return std::wstring();
}
}
bool MemoryMenuButton::IsCommandEnabled(int id) const {
- return false;
+ switch (id) {
+ case PURGE_MEMORY_ITEM:
+ return true;
+ default:
+ return false;
+ }
}
void MemoryMenuButton::ExecuteCommand(int id) {
+ switch (id) {
+ case PURGE_MEMORY_ITEM:
+ MemoryPurger::PurgeAll();
+ break;
+ default:
+ NOTREACHED();
+ break;
+ }
}
int MemoryMenuButton::horizontal_padding() {
@@ -124,7 +141,9 @@ void MemoryMenuButton::EnsureMenu() {
menu_->AppendDelegateMenuItem(MEM_BUFFERS_ITEM);
menu_->AppendDelegateMenuItem(MEM_CACHE_ITEM);
menu_->AppendDelegateMenuItem(SHMEM_ITEM);
- // TODO(jamescook): Add items to run memory_purger, dump heap profiles.
+ // TODO(jamescook): Dump heap profiles?
+ menu_->AppendSeparator();
+ menu_->AppendDelegateMenuItem(PURGE_MEMORY_ITEM);
}
} // namespace chromeos
diff --git a/chrome/browser/chromeos/status/memory_menu_button.h b/chrome/browser/chromeos/status/memory_menu_button.h
index c399df7..feddcac 100644
--- a/chrome/browser/chromeos/status/memory_menu_button.h
+++ b/chrome/browser/chromeos/status/memory_menu_button.h
@@ -37,7 +37,7 @@ class MemoryMenuButton : public StatusAreaButton,
void UpdateText();
protected:
- virtual int horizontal_padding();
+ virtual int horizontal_padding() OVERRIDE;
private:
// views::ViewMenuDelegate implementation.
diff --git a/chrome/browser/memory_purger.h b/chrome/browser/memory_purger.h
index b86172d..667b530 100644
--- a/chrome/browser/memory_purger.h
+++ b/chrome/browser/memory_purger.h
@@ -5,6 +5,10 @@
// MemoryPurger provides static APIs to purge as much memory as possible from
// all processes. These can be hooked to various signals to try and balance
// memory consumption, speed, page swapping, etc.
+//
+// This was implemented in an attempt to speed up suspend-to-disk by throwing
+// away any cached data that can be recomputed. Memory use will rapidly
+// re-expand after this purge is run.
#ifndef CHROME_BROWSER_MEMORY_PURGER_H_
#define CHROME_BROWSER_MEMORY_PURGER_H_