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.
4
5#ifndef BASE_TEST_SCOPED_PATH_OVERRIDE_H_
6#define BASE_TEST_SCOPED_PATH_OVERRIDE_H_
7
8#include "base/basictypes.h"
9#include "base/files/scoped_temp_dir.h"
10
11namespace base {
12
13class FilePath;
14
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.
19class ScopedPathOverride {
20 public:
21  // Contructor that initializes the override to a scoped temp directory.
22  explicit ScopedPathOverride(int key);
23  // Constructor that would use a path provided by the user.
24  ScopedPathOverride(int key, const FilePath& dir);
25  ~ScopedPathOverride();
26
27 private:
28  int key_;
29  ScopedTempDir temp_dir_;
30
31  DISALLOW_COPY_AND_ASSIGN(ScopedPathOverride);
32};
33
34}  // namespace base
35
36#endif  // BASE_TEST_SCOPED_PATH_OVERRIDE_H_
37