Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 474 TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:DataFetcher") | 474 TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:DataFetcher") |
| 475 DataFetcherImplAndroid::Init(base::android::AttachCurrentThread()); | 475 DataFetcherImplAndroid::Init(base::android::AttachCurrentThread()); |
| 476 } | 476 } |
| 477 #endif | 477 #endif |
| 478 | 478 |
| 479 if (parsed_command_line_.HasSwitch(switches::kMemoryMetrics)) { | 479 if (parsed_command_line_.HasSwitch(switches::kMemoryMetrics)) { |
| 480 TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:MemoryObserver") | 480 TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:MemoryObserver") |
| 481 memory_observer_.reset(new MemoryObserver()); | 481 memory_observer_.reset(new MemoryObserver()); |
| 482 base::MessageLoop::current()->AddTaskObserver(memory_observer_.get()); | 482 base::MessageLoop::current()->AddTaskObserver(memory_observer_.get()); |
| 483 } | 483 } |
| 484 | |
| 485 // TODO(jamescook): Support all tcmalloc platforms, including Windows. | |
|
nduca
2013/06/20 20:09:29
How about always creating it, but have the observe
James Cook
2013/06/29 00:02:42
Done. Also consolidated all the macro craziness in
| |
| 486 #if defined(USE_TCMALLOC) && (defined(OS_LINUX) || defined(OS_ANDROID)) | |
| 487 trace_memory_observer_.reset(new base::debug::TraceMemoryTraceLogObserver( | |
| 488 base::MessageLoop::current()->message_loop_proxy())); | |
| 489 #endif | |
|
dsinclair
2013/06/18 15:30:15
Does this also need to be done in places like the
James Cook
2013/06/29 00:02:42
Probably. I think I can shim this in around GpuMai
| |
| 484 } | 490 } |
| 485 | 491 |
| 486 void BrowserMainLoop::CreateThreads() { | 492 void BrowserMainLoop::CreateThreads() { |
| 487 TRACE_EVENT0("startup", "BrowserMainLoop::CreateThreads") | 493 TRACE_EVENT0("startup", "BrowserMainLoop::CreateThreads") |
| 488 | 494 |
| 489 if (parts_) { | 495 if (parts_) { |
| 490 TRACE_EVENT0("startup", | 496 TRACE_EVENT0("startup", |
| 491 "BrowserMainLoop::MainMessageLoopStart:PreCreateThreads"); | 497 "BrowserMainLoop::MainMessageLoopStart:PreCreateThreads"); |
| 492 result_code_ = parts_->PreCreateThreads(); | 498 result_code_ = parts_->PreCreateThreads(); |
| 493 } | 499 } |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 630 // need to be able to perform IO. | 636 // need to be able to perform IO. |
| 631 base::ThreadRestrictions::SetIOAllowed(true); | 637 base::ThreadRestrictions::SetIOAllowed(true); |
| 632 BrowserThread::PostTask( | 638 BrowserThread::PostTask( |
| 633 BrowserThread::IO, FROM_HERE, | 639 BrowserThread::IO, FROM_HERE, |
| 634 base::Bind(base::IgnoreResult(&base::ThreadRestrictions::SetIOAllowed), | 640 base::Bind(base::IgnoreResult(&base::ThreadRestrictions::SetIOAllowed), |
| 635 true)); | 641 true)); |
| 636 | 642 |
| 637 if (parts_) | 643 if (parts_) |
| 638 parts_->PostMainMessageLoopRun(); | 644 parts_->PostMainMessageLoopRun(); |
| 639 | 645 |
| 646 // TODO(jamescook): Support all tcmalloc platforms, including Windows. | |
| 647 #if defined(USE_TCMALLOC) && (defined(OS_LINUX) || defined(OS_ANDROID)) | |
| 648 trace_memory_observer_.reset(); | |
| 649 #endif | |
| 650 | |
| 640 #if !defined(OS_IOS) | 651 #if !defined(OS_IOS) |
| 641 // Destroying the GpuProcessHostUIShims on the UI thread posts a task to | 652 // Destroying the GpuProcessHostUIShims on the UI thread posts a task to |
| 642 // delete related objects on the GPU thread. This must be done before | 653 // delete related objects on the GPU thread. This must be done before |
| 643 // stopping the GPU thread. The GPU thread will close IPC channels to renderer | 654 // stopping the GPU thread. The GPU thread will close IPC channels to renderer |
| 644 // processes so this has to happen before stopping the IO thread. | 655 // processes so this has to happen before stopping the IO thread. |
| 645 GpuProcessHostUIShim::DestroyAll(); | 656 GpuProcessHostUIShim::DestroyAll(); |
| 646 | 657 |
| 647 // Cancel pending requests and prevent new requests. | 658 // Cancel pending requests and prevent new requests. |
| 648 if (resource_dispatcher_host_) | 659 if (resource_dispatcher_host_) |
| 649 resource_dispatcher_host_.get()->Shutdown(); | 660 resource_dispatcher_host_.get()->Shutdown(); |
| (...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 917 if (parameters_.ui_task) | 928 if (parameters_.ui_task) |
| 918 base::MessageLoopForUI::current()->PostTask(FROM_HERE, | 929 base::MessageLoopForUI::current()->PostTask(FROM_HERE, |
| 919 *parameters_.ui_task); | 930 *parameters_.ui_task); |
| 920 | 931 |
| 921 base::RunLoop run_loop; | 932 base::RunLoop run_loop; |
| 922 run_loop.Run(); | 933 run_loop.Run(); |
| 923 #endif | 934 #endif |
| 924 } | 935 } |
| 925 | 936 |
| 926 } // namespace content | 937 } // namespace content |
| OLD | NEW |