diff options
author | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-02 00:11:35 +0000 |
---|---|---|
committer | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-02 00:11:35 +0000 |
commit | 5315ff7cbd860ed56ebc768f19792e0e41dfb05a (patch) | |
tree | 1c569203de4a11ae5d29f45bacbdda38625d10de /chrome/browser/browser_process_impl.cc | |
parent | f6b8ce31c12a8fd5c969608bfdec0e2e8f1e99c3 (diff) | |
download | chromium_src-5315ff7cbd860ed56ebc768f19792e0e41dfb05a.zip chromium_src-5315ff7cbd860ed56ebc768f19792e0e41dfb05a.tar.gz chromium_src-5315ff7cbd860ed56ebc768f19792e0e41dfb05a.tar.bz2 |
Added back thread watcher changes.
BUG=71378,73915,73844,73975
TEST=performance tests
Review URL: http://codereview.chromium.org/6588039
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76468 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/browser_process_impl.cc')
-rw-r--r-- | chrome/browser/browser_process_impl.cc | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc index 3a76341..b173c72 100644 --- a/chrome/browser/browser_process_impl.cc +++ b/chrome/browser/browser_process_impl.cc @@ -31,6 +31,7 @@ #include "chrome/browser/intranet_redirect_detector.h" #include "chrome/browser/io_thread.h" #include "chrome/browser/metrics/metrics_service.h" +#include "chrome/browser/metrics/thread_watcher.h" #include "chrome/browser/net/chrome_net_log.h" #include "chrome/browser/net/predictor_api.h" #include "chrome/browser/net/sdch_dictionary_fetcher.h" @@ -98,6 +99,7 @@ BrowserProcessImpl::BrowserProcessImpl(const CommandLine& command_line) created_db_thread_(false), created_process_launcher_thread_(false), created_cache_thread_(false), + created_watchdog_thread_(false), created_profile_manager_(false), created_local_state_(false), created_icon_manager_(false), @@ -248,6 +250,9 @@ BrowserProcessImpl::~BrowserProcessImpl() { // on the db thread too. db_thread_.reset(); + // Stop the watchdog thread after stopping other threads. + watchdog_thread_.reset(); + // At this point, no render process exist and the file, io, db, and // webkit threads in this process have all terminated, so it's safe // to access local state data such as cookies, database, or local storage. @@ -393,6 +398,14 @@ base::Thread* BrowserProcessImpl::background_x11_thread() { } #endif +WatchDogThread* BrowserProcessImpl::watchdog_thread() { + DCHECK(CalledOnValidThread()); + if (!created_watchdog_thread_) + CreateWatchdogThread(); + DCHECK(watchdog_thread_.get() != NULL); + return watchdog_thread_.get(); +} + ProfileManager* BrowserProcessImpl::profile_manager() { DCHECK(CalledOnValidThread()); if (!created_profile_manager_) @@ -734,6 +747,16 @@ void BrowserProcessImpl::CreateCacheThread() { cache_thread_.swap(thread); } +void BrowserProcessImpl::CreateWatchdogThread() { + DCHECK(!created_watchdog_thread_ && watchdog_thread_.get() == NULL); + created_watchdog_thread_ = true; + + scoped_ptr<WatchDogThread> thread(new WatchDogThread()); + if (!thread->Start()) + return; + watchdog_thread_.swap(thread); +} + void BrowserProcessImpl::CreateProfileManager() { DCHECK(!created_profile_manager_ && profile_manager_.get() == NULL); created_profile_manager_ = true; |