OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 #ifndef CHROME_BROWSER_CHROME_THREAD_H__ | 5 #ifndef CHROME_BROWSER_CHROME_THREAD_H__ |
6 #define CHROME_BROWSER_CHROME_THREAD_H__ | 6 #define CHROME_BROWSER_CHROME_THREAD_H__ |
7 | 7 |
8 #include "base/lock.h" | 8 #include "base/lock.h" |
9 #include "base/thread.h" | 9 #include "base/thread.h" |
10 | 10 |
(...skipping 20 matching lines...) Expand all Loading... |
31 enum ID { | 31 enum ID { |
32 // This is the thread that processes IPC and network messages. | 32 // This is the thread that processes IPC and network messages. |
33 IO, | 33 IO, |
34 | 34 |
35 // This is the thread that interacts with the file system. | 35 // This is the thread that interacts with the file system. |
36 FILE, | 36 FILE, |
37 | 37 |
38 // This is the thread that interacts with the database. | 38 // This is the thread that interacts with the database. |
39 DB, | 39 DB, |
40 | 40 |
| 41 // This is the "main" thread for WebKit within the browser process when |
| 42 // NOT in --single-process mode. |
| 43 WEBKIT, |
| 44 |
41 // This is the thread that interacts with the history database. | 45 // This is the thread that interacts with the history database. |
42 HISTORY, | 46 HISTORY, |
43 | 47 |
44 #if defined(OS_LINUX) | 48 #if defined(OS_LINUX) |
45 // This thread has a second connection to the X server and is used to | 49 // This thread has a second connection to the X server and is used to |
46 // process UI requests when routing the request to the UI thread would risk | 50 // process UI requests when routing the request to the UI thread would risk |
47 // deadlock. | 51 // deadlock. |
48 BACKGROUND_X11, | 52 BACKGROUND_X11, |
49 #endif | 53 #endif |
50 | 54 |
(...skipping 10 matching lines...) Expand all Loading... |
61 | 65 |
62 // Callable on any thread, this helper function returns a pointer to the | 66 // Callable on any thread, this helper function returns a pointer to the |
63 // thread's MessageLoop. | 67 // thread's MessageLoop. |
64 // | 68 // |
65 // WARNING: | 69 // WARNING: |
66 // Nothing in this class prevents the MessageLoop object returned from this | 70 // Nothing in this class prevents the MessageLoop object returned from this |
67 // function from being destroyed on another thread. Use with care. | 71 // function from being destroyed on another thread. Use with care. |
68 // | 72 // |
69 static MessageLoop* GetMessageLoop(ID identifier); | 73 static MessageLoop* GetMessageLoop(ID identifier); |
70 | 74 |
| 75 // Callable on any thread. Returns whether you're currently on a particular |
| 76 // thread. |
| 77 // |
| 78 // WARNING: |
| 79 // When running under unit-tests, this will return true if you're on the |
| 80 // main thread and the thread ID you pass in isn't running. This is |
| 81 // normally the correct behavior because you want to ignore these asserts |
| 82 // unless you've specifically spun up the threads, but be mindful of it. |
| 83 static bool CurrentlyOn(ID identifier); |
| 84 |
71 private: | 85 private: |
72 // The identifier of this thread. Only one thread can exist with a given | 86 // The identifier of this thread. Only one thread can exist with a given |
73 // identifier at a given time. | 87 // identifier at a given time. |
74 ID identifier_; | 88 ID identifier_; |
75 | 89 |
76 // This lock protects |chrome_threads_|. Do not read or modify that array | 90 // This lock protects |chrome_threads_|. Do not read or modify that array |
77 // without holding this lock. Do not block while holding this lock. | 91 // without holding this lock. Do not block while holding this lock. |
78 static Lock lock_; | 92 static Lock lock_; |
79 | 93 |
80 // An array of the ChromeThread objects. This array is protected by |lock_|. | 94 // An array of the ChromeThread objects. This array is protected by |lock_|. |
81 // The threads are not owned by this array. Typically, the threads are owned | 95 // The threads are not owned by this array. Typically, the threads are owned |
82 // on the UI thread by the g_browser_process object. ChromeThreads remove | 96 // on the UI thread by the g_browser_process object. ChromeThreads remove |
83 // themselves from this array upon destruction. | 97 // themselves from this array upon destruction. |
84 static ChromeThread* chrome_threads_[ID_COUNT]; | 98 static ChromeThread* chrome_threads_[ID_COUNT]; |
85 }; | 99 }; |
86 | 100 |
87 #endif // #ifndef CHROME_BROWSER_CHROME_THREAD_H__ | 101 #endif // #ifndef CHROME_BROWSER_CHROME_THREAD_H__ |
OLD | NEW |