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

Unified Diff: content/browser/browser_thread_impl.h

Issue 8477004: Have content/ create and destroy its own threads. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: More IWYU, missing link-time dependency for Chrome Frame. Created 9 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/browser_thread_impl.h
diff --git a/content/browser/browser_thread_impl.h b/content/browser/browser_thread_impl.h
index 45dce5fcc9bc24c69b6d238c74a17868c368011d..27f5122f1bc50e1753680b7c32c7a2f146d17e25 100644
--- a/content/browser/browser_thread_impl.h
+++ b/content/browser/browser_thread_impl.h
@@ -6,22 +6,29 @@
#define CONTENT_BROWSER_BROWSER_THREAD_IMPL_H_
#pragma once
+#include "base/synchronization/lock.h"
+#include "base/threading/thread.h"
#include "content/common/content_export.h"
#include "content/public/browser/browser_thread.h"
namespace content {
-class CONTENT_EXPORT BrowserThreadImpl : public BrowserThread {
+class CONTENT_EXPORT BrowserThreadImpl
+ : public BrowserThread, public base::Thread {
public:
+ // Construct a BrowserThreadImpl with the supplied identifier. It is an error
+ // to construct a BrowserThreadImpl that already exists.
explicit BrowserThreadImpl(BrowserThread::ID identifier);
+
+ // Special constructor for the main (UI) thread and unittests. We use a dummy
+ // thread here since the main thread already exists.
BrowserThreadImpl(BrowserThread::ID identifier, MessageLoop* message_loop);
virtual ~BrowserThreadImpl();
private:
- // We implement most functionality on the public set of
- // BrowserThread functions, but state is stored in the
- // BrowserThreadImpl to keep the public API cleaner. Therefore make
- // BrowserThread a friend class.
+ // We implement all the functionality of the public BrowserThread
+ // functions, but state is stored in the BrowserThreadImpl to keep
+ // the API cleaner. Therefore make BrowserThread a friend class.
friend class BrowserThread;
// TODO(brettw) remove this variant when Task->Closure migration is complete.
@@ -42,11 +49,19 @@ class CONTENT_EXPORT BrowserThreadImpl : public BrowserThread {
// without holding this lock. Do not block while holding this lock.
static base::Lock lock_;
- // An array of the BrowserThread objects. This array is protected by |lock_|.
- // The threads are not owned by this array. Typically, the threads are owned
- // on the UI thread by the g_browser_process object. BrowserThreads remove
- // themselves from this array upon destruction.
- static BrowserThread* browser_threads_[ID_COUNT];
+ // An array of the BrowserThreadImpl objects. This array is
+ // protected by |lock_|. The threads are not owned by this array.
+ // Typically, the threads are owned on the UI thread by the
+ // g_browser_process object. BrowserThreadImpls remove themselves
+ // from this array upon destruction.
+ static BrowserThreadImpl* browser_threads_[ID_COUNT];
+
+ // Common initialization code for the constructors.
+ void Initialize();
+
+ // The identifier of this thread. Only one thread can exist with a given
+ // identifier at a given time.
+ ID identifier_;
};
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698