xref: /aosp_15_r20/external/cronet/base/test/scoped_block_tests_writing_to_special_dirs.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2023 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "base/test/scoped_block_tests_writing_to_special_dirs.h"
6 
7 #include <ostream>
8 #include <utility>
9 
10 #include "base/check.h"
11 
12 namespace base {
13 
ScopedBlockTestsWritingToSpecialDirs(std::vector<int> dirs_to_block,FileWriteBlockedForTestingFunctionPtr failure_callback)14 ScopedBlockTestsWritingToSpecialDirs::ScopedBlockTestsWritingToSpecialDirs(
15     std::vector<int> dirs_to_block,
16     FileWriteBlockedForTestingFunctionPtr failure_callback) {
17   CHECK(failure_callback) << "Can't use NULL failure callback";
18   auto& special_dir_write_blocker = BlockTestsWritingToSpecialDirs::Get();
19   CHECK(!special_dir_write_blocker.has_value())
20       << "ScopedBlockTestsWritingToSpecialDirs can't be nested.";
21 
22   special_dir_write_blocker.emplace(std::move(dirs_to_block), failure_callback);
23 }
24 
~ScopedBlockTestsWritingToSpecialDirs()25 ScopedBlockTestsWritingToSpecialDirs::~ScopedBlockTestsWritingToSpecialDirs() {
26   BlockTestsWritingToSpecialDirs::Get().reset();
27 }
28 
29 }  // namespace base
30