| Index: content/browser/browser_main_loop.cc
|
| diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc
|
| index 2f1e99493cb25c867cd897622833f682d288b6e8..16be82b8a143b3e9c66436b7bfb7950064e282e4 100644
|
| --- a/content/browser/browser_main_loop.cc
|
| +++ b/content/browser/browser_main_loop.cc
|
| @@ -98,6 +98,10 @@
|
| #include <X11/Xlib.h>
|
| #endif
|
|
|
| +#if !defined(OS_IOS)
|
| +#include "webkit/glue/webkit_glue.h"
|
| +#endif
|
| +
|
| // One of the linux specific headers defines this as a macro.
|
| #ifdef DestroyAll
|
| #undef DestroyAll
|
| @@ -226,6 +230,24 @@ void ImmediateShutdownAndExitProcess() {
|
| BrowserShutdownImpl::ImmediateShutdownAndExitProcess();
|
| }
|
|
|
| +// For measuring memory usage after each task. Behind a command line flag.
|
| +class BrowserMainLoop::MemoryObserver : public MessageLoop::TaskObserver {
|
| + public:
|
| + MemoryObserver() {}
|
| + virtual ~MemoryObserver() {}
|
| +
|
| + virtual void WillProcessTask(base::TimeTicks time_posted) OVERRIDE {}
|
| +
|
| + virtual void DidProcessTask(base::TimeTicks time_posted) OVERRIDE {
|
| +#if !defined(OS_IOS)
|
| + HISTOGRAM_MEMORY_KB("Memory.BrowserUsed", webkit_glue::MemoryUsageKB());
|
| +#endif
|
| + }
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(MemoryObserver);
|
| +};
|
| +
|
| +
|
| // static
|
| media::AudioManager* BrowserMainLoop::GetAudioManager() {
|
| return g_current_browser_main_loop->audio_manager_.get();
|
| @@ -374,6 +396,11 @@ void BrowserMainLoop::MainMessageLoopStart() {
|
| switches::kMediaPlayerInRenderProcess)));
|
| DataFetcherImplAndroid::Init(base::android::AttachCurrentThread());
|
| #endif
|
| +
|
| + if (parsed_command_line_.HasSwitch(switches::kMemoryMetrics)) {
|
| + memory_observer_.reset(new MemoryObserver());
|
| + main_message_loop_->AddTaskObserver(memory_observer_.get());
|
| + }
|
| }
|
|
|
| void BrowserMainLoop::CreateThreads() {
|
|
|