| // Copyright 2021 The Chromium Authors | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "base/sequence_checker.h" | 
 |  | 
 | #if DCHECK_IS_ON() | 
 | #include <memory> | 
 | #include <ostream> | 
 |  | 
 | #include "base/check.h" | 
 | #include "base/debug/stack_trace.h" | 
 | #endif | 
 |  | 
 | namespace base { | 
 |  | 
 | #if DCHECK_IS_ON() | 
 | ScopedValidateSequenceChecker::ScopedValidateSequenceChecker( | 
 |     const SequenceChecker& checker) { | 
 |   std::unique_ptr<debug::StackTrace> bound_at; | 
 |   DCHECK(checker.CalledOnValidSequence(&bound_at)) | 
 |       << (bound_at ? "\nWas attached to sequence at:\n" + bound_at->ToString() | 
 |                    : ""); | 
 | } | 
 |  | 
 | ScopedValidateSequenceChecker::~ScopedValidateSequenceChecker() = default; | 
 | #endif  // DCHECK_IS_ON() | 
 |  | 
 | }  // namespace base |