Chromium Code Reviews| Index: content/browser/browser_main_loop.cc |
| diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc |
| index b58a2cb2267779a56d004a1b0aa6ba3c07f5f733..e6febaf48abead330b306f8b47f76c1740899770 100644 |
| --- a/content/browser/browser_main_loop.cc |
| +++ b/content/browser/browser_main_loop.cc |
| @@ -46,6 +46,7 @@ |
| #include "net/socket/client_socket_factory.h" |
| #include "net/socket/tcp_client_socket.h" |
| #include "ui/base/clipboard/clipboard.h" |
| +#include "webkit/glue/webkit_glue.h" |
| #if defined(USE_AURA) |
| #include "content/browser/renderer_host/image_transport_factory.h" |
| @@ -222,6 +223,22 @@ void ImmediateShutdownAndExitProcess() { |
| BrowserShutdownImpl::ImmediateShutdownAndExitProcess(); |
| } |
| +// For measuring memory usage after each task. Behind a command line flag. |
| +class BrowserMainLoop::MemoryObserver : public MessageLoop::TaskObserver { |
| + public: |
| + MemoryObserver() {} |
|
jochen (gone - plz use gerrit)
2013/01/18 14:03:11
should have a virtual destructor
marja
2013/01/18 15:00:08
Done.
|
| + |
| + virtual void WillProcessTask(base::TimeTicks time_posted) OVERRIDE {} |
| + |
| + virtual void DidProcessTask(base::TimeTicks time_posted) OVERRIDE { |
| + LOG(WARNING) << "Adding to browserused " << webkit_glue::MemoryUsageKB(); |
|
jochen (gone - plz use gerrit)
2013/01/18 14:03:11
remove?
marja
2013/01/18 15:00:08
Oops.
|
| + HISTOGRAM_MEMORY_KB("Memory.BrowserUsed", webkit_glue::MemoryUsageKB()); |
| + } |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(MemoryObserver); |
| +}; |
| + |
| + |
| // static |
| media::AudioManager* BrowserMainLoop::GetAudioManager() { |
| return g_current_browser_main_loop->audio_manager_.get(); |
| @@ -368,6 +385,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() { |