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

Side by Side Diff: base/threading/thread_restrictions.h

Issue 2163023002: Unify usage of logging/assert macros in base/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix base/android/build_info.cc compile Created 4 years, 4 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 unified diff | Download patch
« no previous file with comments | « base/threading/thread_checker_unittest.cc ('k') | base/threading/thread_restrictions.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 BASE_THREADING_THREAD_RESTRICTIONS_H_ 5 #ifndef BASE_THREADING_THREAD_RESTRICTIONS_H_
6 #define BASE_THREADING_THREAD_RESTRICTIONS_H_ 6 #define BASE_THREADING_THREAD_RESTRICTIONS_H_
7 7
8 #include "base/base_export.h" 8 #include "base/base_export.h"
9 #include "base/logging.h"
9 #include "base/macros.h" 10 #include "base/macros.h"
10 11
11 // See comment at top of thread_checker.h
12 #if (!defined(NDEBUG) || defined(DCHECK_ALWAYS_ON))
13 #define ENABLE_THREAD_RESTRICTIONS 1
14 #else
15 #define ENABLE_THREAD_RESTRICTIONS 0
16 #endif
17
18 class BrowserProcessImpl; 12 class BrowserProcessImpl;
19 class HistogramSynchronizer; 13 class HistogramSynchronizer;
20 class NativeBackendKWallet; 14 class NativeBackendKWallet;
21 class ScopedAllowWaitForLegacyWebViewApi; 15 class ScopedAllowWaitForLegacyWebViewApi;
22 16
23 namespace cc { 17 namespace cc {
24 class CompletionEvent; 18 class CompletionEvent;
25 class SingleThreadTaskGraphRunner; 19 class SingleThreadTaskGraphRunner;
26 } 20 }
27 namespace chromeos { 21 namespace chromeos {
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 ScopedAllowSingleton() { previous_value_ = SetSingletonAllowed(true); } 138 ScopedAllowSingleton() { previous_value_ = SetSingletonAllowed(true); }
145 ~ScopedAllowSingleton() { SetSingletonAllowed(previous_value_); } 139 ~ScopedAllowSingleton() { SetSingletonAllowed(previous_value_); }
146 private: 140 private:
147 // Whether singleton use is allowed when the ScopedAllowSingleton was 141 // Whether singleton use is allowed when the ScopedAllowSingleton was
148 // constructed. 142 // constructed.
149 bool previous_value_; 143 bool previous_value_;
150 144
151 DISALLOW_COPY_AND_ASSIGN(ScopedAllowSingleton); 145 DISALLOW_COPY_AND_ASSIGN(ScopedAllowSingleton);
152 }; 146 };
153 147
154 #if ENABLE_THREAD_RESTRICTIONS 148 #if DCHECK_IS_ON()
155 // Set whether the current thread to make IO calls. 149 // Set whether the current thread to make IO calls.
156 // Threads start out in the *allowed* state. 150 // Threads start out in the *allowed* state.
157 // Returns the previous value. 151 // Returns the previous value.
158 static bool SetIOAllowed(bool allowed); 152 static bool SetIOAllowed(bool allowed);
159 153
160 // Check whether the current thread is allowed to make IO calls, 154 // Check whether the current thread is allowed to make IO calls,
161 // and DCHECK if not. See the block comment above the class for 155 // and DCHECK if not. See the block comment above the class for
162 // a discussion of where to add these checks. 156 // a discussion of where to add these checks.
163 static void AssertIOAllowed(); 157 static void AssertIOAllowed();
164 158
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 friend class net::internal::AddressTrackerLinux; // http://crbug.com/125097 227 friend class net::internal::AddressTrackerLinux; // http://crbug.com/125097
234 friend class net::NetworkChangeNotifierMac; // http://crbug.com/125097 228 friend class net::NetworkChangeNotifierMac; // http://crbug.com/125097
235 friend class ::BrowserProcessImpl; // http://crbug.com/125207 229 friend class ::BrowserProcessImpl; // http://crbug.com/125207
236 friend class ::NativeBackendKWallet; // http://crbug.com/125331 230 friend class ::NativeBackendKWallet; // http://crbug.com/125331
237 #if !defined(OFFICIAL_BUILD) 231 #if !defined(OFFICIAL_BUILD)
238 friend class content::SoftwareOutputDeviceMus; // Interim non-production code 232 friend class content::SoftwareOutputDeviceMus; // Interim non-production code
239 #endif 233 #endif
240 friend class views::ScreenMus; 234 friend class views::ScreenMus;
241 // END USAGE THAT NEEDS TO BE FIXED. 235 // END USAGE THAT NEEDS TO BE FIXED.
242 236
243 #if ENABLE_THREAD_RESTRICTIONS 237 #if DCHECK_IS_ON()
244 static bool SetWaitAllowed(bool allowed); 238 static bool SetWaitAllowed(bool allowed);
245 #else 239 #else
246 static bool SetWaitAllowed(bool allowed) { return true; } 240 static bool SetWaitAllowed(bool allowed) { return true; }
247 #endif 241 #endif
248 242
249 // Constructing a ScopedAllowWait temporarily allows waiting on the current 243 // Constructing a ScopedAllowWait temporarily allows waiting on the current
250 // thread. Doing this is almost always incorrect, which is why we limit who 244 // thread. Doing this is almost always incorrect, which is why we limit who
251 // can use this through friend. If you find yourself needing to use this, find 245 // can use this through friend. If you find yourself needing to use this, find
252 // another way. Talk to jam or brettw. 246 // another way. Talk to jam or brettw.
253 class BASE_EXPORT ScopedAllowWait { 247 class BASE_EXPORT ScopedAllowWait {
254 public: 248 public:
255 ScopedAllowWait() { previous_value_ = SetWaitAllowed(true); } 249 ScopedAllowWait() { previous_value_ = SetWaitAllowed(true); }
256 ~ScopedAllowWait() { SetWaitAllowed(previous_value_); } 250 ~ScopedAllowWait() { SetWaitAllowed(previous_value_); }
257 private: 251 private:
258 // Whether singleton use is allowed when the ScopedAllowWait was 252 // Whether singleton use is allowed when the ScopedAllowWait was
259 // constructed. 253 // constructed.
260 bool previous_value_; 254 bool previous_value_;
261 255
262 DISALLOW_COPY_AND_ASSIGN(ScopedAllowWait); 256 DISALLOW_COPY_AND_ASSIGN(ScopedAllowWait);
263 }; 257 };
264 258
265 DISALLOW_IMPLICIT_CONSTRUCTORS(ThreadRestrictions); 259 DISALLOW_IMPLICIT_CONSTRUCTORS(ThreadRestrictions);
266 }; 260 };
267 261
268 } // namespace base 262 } // namespace base
269 263
270 #endif // BASE_THREADING_THREAD_RESTRICTIONS_H_ 264 #endif // BASE_THREADING_THREAD_RESTRICTIONS_H_
OLDNEW
« no previous file with comments | « base/threading/thread_checker_unittest.cc ('k') | base/threading/thread_restrictions.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698