| // Copyright (c) 2012 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_TEST_SCOPED_PATH_OVERRIDE_H_ | 
 | #define BASE_TEST_SCOPED_PATH_OVERRIDE_H_ | 
 |  | 
 | #include "base/files/scoped_temp_dir.h" | 
 | #include "base/macros.h" | 
 |  | 
 | namespace base { | 
 |  | 
 | class FilePath; | 
 |  | 
 | // Sets a path override on construction, and removes it when the object goes out | 
 | // of scope. This class is intended to be used by tests that need to override | 
 | // paths to ensure their overrides are properly handled and reverted when the | 
 | // scope of the test is left. | 
 | class ScopedPathOverride { | 
 |  public: | 
 |   // Contructor that initializes the override to a scoped temp directory. | 
 |   explicit ScopedPathOverride(int key); | 
 |  | 
 |   // Constructor that would use a path provided by the user. | 
 |   ScopedPathOverride(int key, const FilePath& dir); | 
 |  | 
 |   // See PathService::OverrideAndCreateIfNeeded. | 
 |   ScopedPathOverride(int key, | 
 |                      const FilePath& path, | 
 |                      bool is_absolute, | 
 |                      bool create); | 
 |   ~ScopedPathOverride(); | 
 |  | 
 |  private: | 
 |   int key_; | 
 |   ScopedTempDir temp_dir_; | 
 |  | 
 |   DISALLOW_COPY_AND_ASSIGN(ScopedPathOverride); | 
 | }; | 
 |  | 
 | }  // namespace base | 
 |  | 
 | #endif  // BASE_TEST_SCOPED_PATH_OVERRIDE_H_ |