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

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

Issue 8392042: Split BrowserThread into public API and private implementation, step 1. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 9 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/content_tests.gypi ('k') | content/shell/shell_browser_context.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/public/browser/browser_thread.h
diff --git a/content/browser/browser_thread.h b/content/public/browser/browser_thread.h
similarity index 86%
rename from content/browser/browser_thread.h
rename to content/public/browser/browser_thread.h
index 2e798973bc8f6b532fda69eaf96aa4c659c94d62..7515939014b4dec2bf8d09933301a679f669efea 100644
--- a/content/browser/browser_thread.h
+++ b/content/public/browser/browser_thread.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CONTENT_BROWSER_BROWSER_THREAD_H_
-#define CONTENT_BROWSER_BROWSER_THREAD_H_
+#ifndef CONTENT_PUBLIC_BROWSER_BROWSER_THREAD_H_
+#define CONTENT_PUBLIC_BROWSER_BROWSER_THREAD_H_
#pragma once
#include "base/callback.h"
@@ -20,12 +20,20 @@ namespace base {
class MessageLoopProxy;
}
+namespace content {
+class BrowserThreadImpl;
+}
+
+class DeprecatedBrowserThread;
+
///////////////////////////////////////////////////////////////////////////////
// BrowserThread
//
-// This class represents a thread that is known by a browser-wide name. For
-// example, there is one IO thread for the entire browser process, and various
-// pieces of code find it useful to retrieve a pointer to the IO thread's
+// Utility functions for threads that are known by a browser-wide
+// name. For example, there is one IO thread for the entire browser
+// process, and various pieces of code find it useful to retrieve a
+// pointer to the IO thread's message loop.
+//
// Invoke a task by thread ID:
//
// BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, task);
@@ -81,16 +89,6 @@ class CONTENT_EXPORT BrowserThread : public base::Thread {
ID_COUNT
};
- // Construct a BrowserThread with the supplied identifier. It is an error
- // to construct a BrowserThread that already exists.
- explicit BrowserThread(ID identifier);
-
- // 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();
-
// These are the same methods in message_loop.h, but are guaranteed to either
// get posted to the MessageLoop if it's still alive, or be deleted otherwise.
// They return true iff the thread existed and the task was posted. Note that
@@ -216,36 +214,40 @@ class CONTENT_EXPORT BrowserThread : public base::Thread {
struct DeleteOnWebKitThread : public DeleteOnThread<WEBKIT> { };
private:
+ // Construct a BrowserThread with the supplied identifier. It is an error
+ // to construct a BrowserThread that already exists.
+ explicit BrowserThread(ID identifier);
+
+ // 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();
- // TODO(brettw) remove this variant when Task->Closure migration is complete.
- static bool PostTaskHelper(
- ID identifier,
- const tracked_objects::Location& from_here,
- Task* task,
- int64 delay_ms,
- bool nestable);
- static bool PostTaskHelper(
- ID identifier,
- const tracked_objects::Location& from_here,
- const base::Closure& task,
- int64 delay_ms,
- bool nestable);
+ // 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_;
+};
- // This lock protects |browser_threads_|. Do not read or modify that array
- // 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];
+// Temporary escape hatch for chrome/ to construct BrowserThread,
+// until we make content/ construct its own threads.
+class DeprecatedBrowserThread : public BrowserThread {
+ public:
+ explicit DeprecatedBrowserThread(BrowserThread::ID identifier);
+ DeprecatedBrowserThread(BrowserThread::ID identifier,
+ MessageLoop* message_loop);
+ virtual ~DeprecatedBrowserThread();
};
-#endif // CONTENT_BROWSER_BROWSER_THREAD_H_
+#endif // CONTENT_PUBLIC_BROWSER_BROWSER_THREAD_H_
« no previous file with comments | « content/content_tests.gypi ('k') | content/shell/shell_browser_context.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698