Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1080)

Side by Side Diff: content/browser/browser_main_loop.cc

Issue 11975048: Native memory histograms for the browser. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ios build fix Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/browser/browser_main_loop.h ('k') | content/browser/histogram_message_filter.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/browser_main_loop.h" 5 #include "content/browser/browser_main_loop.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/debug/trace_event.h" 9 #include "base/debug/trace_event.h"
10 #include "base/hi_res_timer_manager.h" 10 #include "base/hi_res_timer_manager.h"
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 91
92 #include "base/process_util.h" 92 #include "base/process_util.h"
93 #include "content/browser/renderer_host/render_sandbox_host_linux.h" 93 #include "content/browser/renderer_host/render_sandbox_host_linux.h"
94 #include "content/browser/zygote_host/zygote_host_impl_linux.h" 94 #include "content/browser/zygote_host/zygote_host_impl_linux.h"
95 #endif 95 #endif
96 96
97 #if defined(USE_X11) 97 #if defined(USE_X11)
98 #include <X11/Xlib.h> 98 #include <X11/Xlib.h>
99 #endif 99 #endif
100 100
101 #if !defined(OS_IOS)
102 #include "webkit/glue/webkit_glue.h"
103 #endif
104
101 // One of the linux specific headers defines this as a macro. 105 // One of the linux specific headers defines this as a macro.
102 #ifdef DestroyAll 106 #ifdef DestroyAll
103 #undef DestroyAll 107 #undef DestroyAll
104 #endif 108 #endif
105 109
106 namespace content { 110 namespace content {
107 namespace { 111 namespace {
108 112
109 #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) 113 #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
110 void SetupSandbox(const CommandLine& parsed_command_line) { 114 void SetupSandbox(const CommandLine& parsed_command_line) {
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 #else 223 #else
220 NOTIMPLEMENTED(); 224 NOTIMPLEMENTED();
221 #endif 225 #endif
222 } 226 }
223 }; 227 };
224 228
225 void ImmediateShutdownAndExitProcess() { 229 void ImmediateShutdownAndExitProcess() {
226 BrowserShutdownImpl::ImmediateShutdownAndExitProcess(); 230 BrowserShutdownImpl::ImmediateShutdownAndExitProcess();
227 } 231 }
228 232
233 // For measuring memory usage after each task. Behind a command line flag.
234 class BrowserMainLoop::MemoryObserver : public MessageLoop::TaskObserver {
235 public:
236 MemoryObserver() {}
237 virtual ~MemoryObserver() {}
238
239 virtual void WillProcessTask(base::TimeTicks time_posted) OVERRIDE {}
240
241 virtual void DidProcessTask(base::TimeTicks time_posted) OVERRIDE {
242 #if !defined(OS_IOS)
243 HISTOGRAM_MEMORY_KB("Memory.BrowserUsed", webkit_glue::MemoryUsageKB());
244 #endif
245 }
246 private:
247 DISALLOW_COPY_AND_ASSIGN(MemoryObserver);
248 };
249
250
229 // static 251 // static
230 media::AudioManager* BrowserMainLoop::GetAudioManager() { 252 media::AudioManager* BrowserMainLoop::GetAudioManager() {
231 return g_current_browser_main_loop->audio_manager_.get(); 253 return g_current_browser_main_loop->audio_manager_.get();
232 } 254 }
233 255
234 // static 256 // static
235 AudioMirroringManager* BrowserMainLoop::GetAudioMirroringManager() { 257 AudioMirroringManager* BrowserMainLoop::GetAudioMirroringManager() {
236 return g_current_browser_main_loop->audio_mirroring_manager_.get(); 258 return g_current_browser_main_loop->audio_mirroring_manager_.get();
237 } 259 }
238 260
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 389
368 if (parts_.get()) 390 if (parts_.get())
369 parts_->PostMainMessageLoopStart(); 391 parts_->PostMainMessageLoopStart();
370 392
371 #if defined(OS_ANDROID) 393 #if defined(OS_ANDROID)
372 SurfaceTexturePeer::InitInstance(new SurfaceTexturePeerBrowserImpl( 394 SurfaceTexturePeer::InitInstance(new SurfaceTexturePeerBrowserImpl(
373 parameters_.command_line.HasSwitch( 395 parameters_.command_line.HasSwitch(
374 switches::kMediaPlayerInRenderProcess))); 396 switches::kMediaPlayerInRenderProcess)));
375 DataFetcherImplAndroid::Init(base::android::AttachCurrentThread()); 397 DataFetcherImplAndroid::Init(base::android::AttachCurrentThread());
376 #endif 398 #endif
399
400 if (parsed_command_line_.HasSwitch(switches::kMemoryMetrics)) {
401 memory_observer_.reset(new MemoryObserver());
402 main_message_loop_->AddTaskObserver(memory_observer_.get());
403 }
377 } 404 }
378 405
379 void BrowserMainLoop::CreateThreads() { 406 void BrowserMainLoop::CreateThreads() {
380 if (parts_.get()) 407 if (parts_.get())
381 result_code_ = parts_->PreCreateThreads(); 408 result_code_ = parts_->PreCreateThreads();
382 409
383 #if !defined(OS_IOS) && (!defined(GOOGLE_CHROME_BUILD) || defined(OS_ANDROID)) 410 #if !defined(OS_IOS) && (!defined(GOOGLE_CHROME_BUILD) || defined(OS_ANDROID))
384 // Single-process is an unsupported and not fully tested mode, so 411 // Single-process is an unsupported and not fully tested mode, so
385 // don't enable it for official Chrome builds (except on Android). 412 // don't enable it for official Chrome builds (except on Android).
386 if (parsed_command_line_.HasSwitch(switches::kSingleProcess)) 413 if (parsed_command_line_.HasSwitch(switches::kSingleProcess))
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after
776 DCHECK_EQ(MessageLoop::TYPE_UI, MessageLoop::current()->type()); 803 DCHECK_EQ(MessageLoop::TYPE_UI, MessageLoop::current()->type());
777 if (parameters_.ui_task) 804 if (parameters_.ui_task)
778 MessageLoopForUI::current()->PostTask(FROM_HERE, *parameters_.ui_task); 805 MessageLoopForUI::current()->PostTask(FROM_HERE, *parameters_.ui_task);
779 806
780 base::RunLoop run_loop; 807 base::RunLoop run_loop;
781 run_loop.Run(); 808 run_loop.Run();
782 #endif 809 #endif
783 } 810 }
784 811
785 } // namespace content 812 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/browser_main_loop.h ('k') | content/browser/histogram_message_filter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698