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

Unified Diff: content/public/browser/browser_thread.h

Issue 8718012: Revert 111695 - Have content/ create and destroy its own threads. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: 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
« no previous file with comments | « content/public/browser/browser_shutdown.h ('k') | content/public/browser/browser_thread_delegate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/public/browser/browser_thread.h
===================================================================
--- content/public/browser/browser_thread.h (revision 111697)
+++ content/public/browser/browser_thread.h (working copy)
@@ -6,34 +6,24 @@
#define CONTENT_PUBLIC_BROWSER_BROWSER_THREAD_H_
#pragma once
-#include "base/basictypes.h"
#include "base/callback.h"
+#include "base/synchronization/lock.h"
#include "base/task.h"
-#include "base/tracked_objects.h"
+#include "base/threading/thread.h"
#include "content/common/content_export.h"
-#include "content/public/browser/browser_thread_delegate.h"
-// TODO(joi): Remove these in a follow-up change and IWYU in files
-// that were getting them directly or indirectly from here.
-#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/message_loop.h"
-#include "base/message_loop_proxy.h"
-#include "base/synchronization/lock.h"
-#include "base/threading/thread.h"
-
#if defined(UNIT_TEST)
#include "base/logging.h"
#endif // UNIT_TEST
namespace base {
class MessageLoopProxy;
-class Thread;
}
namespace content {
class BrowserThreadImpl;
+class DeprecatedBrowserThread;
///////////////////////////////////////////////////////////////////////////////
// BrowserThread
@@ -57,7 +47,7 @@
// task is posted to is guaranteed to outlive the current thread, then no locks
// are used. You should never need to cache pointers to MessageLoops, since
// they're not thread safe.
-class CONTENT_EXPORT BrowserThread {
+class CONTENT_EXPORT BrowserThread : public base::Thread {
public:
// An enumeration of the well-known threads.
// NOTE: threads must be listed in the order of their life-time, with each
@@ -180,33 +170,6 @@
static scoped_refptr<base::MessageLoopProxy> GetMessageLoopProxyForThread(
ID identifier);
- // Gets the Thread object for the specified thread, or NULL if the
- // thread has not been created (or has been destroyed during
- // shutdown).
- //
- // Before calling this, you must have called content::ContentMain
- // with a command-line that would specify a browser process (e.g. an
- // empty command line).
- //
- // This is unsafe as your pointer may become invalid close to
- // shutdown.
- //
- // TODO(joi): Remove this once clients such as BrowserProcessImpl
- // (and classes that call things like
- // g_browser_process->file_thread()) are switched to using
- // MessageLoopProxy.
- static base::Thread* UnsafeGetBrowserThread(ID identifier);
-
- // Sets the delegate for the specified BrowserThread.
- //
- // Only one delegate may be registered at a time. Delegates may be
- // unregistered by providing a NULL pointer.
- //
- // If the caller unregisters a delegate before CleanUp has been
- // called, it must perform its own locking to ensure the delegate is
- // not deleted while unregistering.
- static void SetDelegate(ID identifier, BrowserThreadDelegate* delegate);
-
// Use these templates in conjuction with RefCountedThreadSafe when you want
// to ensure that an object is deleted on a specific thread. This is needed
// when an object can hop between threads (i.e. IO -> FILE -> IO), and thread
@@ -250,12 +213,42 @@
struct DeleteOnWebKitThread : public DeleteOnThread<WEBKIT> { };
private:
- friend class BrowserThreadImpl;
+ // Construct a BrowserThread with the supplied identifier. It is an error
+ // to construct a BrowserThread that already exists.
+ explicit BrowserThread(ID identifier);
- BrowserThread() {}
- DISALLOW_COPY_AND_ASSIGN(BrowserThread);
+ // Special constructor for the main (UI) thread and unittests. We use a dummy
+ // thread here since the main thread already exists.
+ BrowserThread(ID identifier, MessageLoop* message_loop);
+
+ virtual ~BrowserThread();
+
+ // Common initialization code for the constructors.
+ void Initialize();
+
+ // Constructors are only available through this subclass.
+ friend class content::BrowserThreadImpl;
+
+ // TODO(joi): Remove.
+ friend class DeprecatedBrowserThread;
+
+ // The identifier of this thread. Only one thread can exist with a given
+ // identifier at a given time.
+ // TODO(joi): Move to BrowserThreadImpl, and make constructors here
+ // do-nothing.
+ ID identifier_;
};
+// Temporary escape hatch for chrome/ to construct BrowserThread,
+// until we make content/ construct its own threads.
+class CONTENT_EXPORT DeprecatedBrowserThread : public BrowserThread {
+ public:
+ explicit DeprecatedBrowserThread(BrowserThread::ID identifier);
+ DeprecatedBrowserThread(BrowserThread::ID identifier,
+ MessageLoop* message_loop);
+ virtual ~DeprecatedBrowserThread();
+};
+
} // namespace content
#endif // CONTENT_PUBLIC_BROWSER_BROWSER_THREAD_H_
« no previous file with comments | « content/public/browser/browser_shutdown.h ('k') | content/public/browser/browser_thread_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698