15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/test/scoped_path_override.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/path_service.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ScopedPathOverride::ScopedPathOverride(int key) : key_(key) {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool result = temp_dir_.CreateUniqueTempDir();
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CHECK(result);
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  result = PathService::Override(key, temp_dir_.path());
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CHECK(result);
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)ScopedPathOverride::ScopedPathOverride(int key, const base::FilePath& dir)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : key_(key) {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool result = PathService::Override(key, dir);
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CHECK(result);
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ScopedPathOverride::~ScopedPathOverride() {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   bool result = PathService::RemoveOverride(key_);
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   CHECK(result) << "The override seems to have been removed already!";
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace base
31