Add per-user preferences support.
[chromium-blink-merge.git] / base / test / scoped_path_override.h
blobc6cffe2660f84ccfe0ec6240c6cdd7d181da2e23
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
3 // found in the LICENSE file.
5 #ifndef BASE_TEST_SCOPED_PATH_OVERRIDE_H_
6 #define BASE_TEST_SCOPED_PATH_OVERRIDE_H_
8 #include "base/basictypes.h"
9 #include "base/files/scoped_temp_dir.h"
11 namespace base {
13 class FilePath;
15 // Sets a path override on construction, and removes it when the object goes out
16 // of scope. This class is intended to be used by tests that need to override
17 // paths to ensure their overrides are properly handled and reverted when the
18 // scope of the test is left.
19 class ScopedPathOverride {
20 public:
21 // Contructor that initializes the override to a scoped temp directory.
22 explicit ScopedPathOverride(int key);
24 // Constructor that would use a path provided by the user.
25 ScopedPathOverride(int key, const FilePath& dir);
27 // See PathService::OverrideAndCreateIfNeeded.
28 ScopedPathOverride(int key,
29 const FilePath& path,
30 bool is_absolute,
31 bool create);
32 ~ScopedPathOverride();
34 private:
35 int key_;
36 ScopedTempDir temp_dir_;
38 DISALLOW_COPY_AND_ASSIGN(ScopedPathOverride);
41 } // namespace base
43 #endif // BASE_TEST_SCOPED_PATH_OVERRIDE_H_