| // Copyright 2017 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef BASE_WIN_COM_INIT_UTIL_H_ | 
 | #define BASE_WIN_COM_INIT_UTIL_H_ | 
 |  | 
 | #include "base/base_export.h" | 
 | #include "base/logging.h" | 
 |  | 
 | namespace base { | 
 | namespace win { | 
 |  | 
 | enum class ComApartmentType { | 
 |   // Uninitialized or has an unrecognized apartment type. | 
 |   NONE, | 
 |   // Single-threaded Apartment. | 
 |   STA, | 
 |   // Multi-threaded Apartment. | 
 |   MTA, | 
 | }; | 
 |  | 
 | #if DCHECK_IS_ON() | 
 |  | 
 | // DCHECKs if COM is not initialized on this thread as an STA or MTA. | 
 | // |message| is optional and is used for the DCHECK if specified. | 
 | BASE_EXPORT void AssertComInitialized(const char* message = nullptr); | 
 |  | 
 | // DCHECKs if |apartment_type| is not the same as the current thread's apartment | 
 | // type. | 
 | BASE_EXPORT void AssertComApartmentType(ComApartmentType apartment_type); | 
 |  | 
 | #else   // DCHECK_IS_ON() | 
 | inline void AssertComInitialized() {} | 
 | inline void AssertComApartmentType(ComApartmentType apartment_type) {} | 
 | #endif  // DCHECK_IS_ON() | 
 |  | 
 | }  // namespace win | 
 | }  // namespace base | 
 |  | 
 | #endif  // BASE_WIN_COM_INIT_UTIL_H_ |