1 : // Copyright (c) 2009 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 : #include "base/scoped_temp_dir.h"
6 :
7 : #include "base/file_util.h"
8 : #include "base/logging.h"
9 : #include "base/string_util.h"
10 :
11 0 : ScopedTempDir::ScopedTempDir() {
12 0 : }
13 :
14 0 : ScopedTempDir::~ScopedTempDir() {
15 0 : if (!path_.empty() && !file_util::Delete(path_, true))
16 0 : LOG(ERROR) << "ScopedTempDir unable to delete " << path_.value();
17 0 : }
18 :
19 0 : bool ScopedTempDir::CreateUniqueTempDir() {
20 : // This "scoped_dir" prefix is only used on Windows and serves as a template
21 : // for the unique name.
22 0 : if (!file_util::CreateNewTempDirectory(FILE_PATH_LITERAL("scoped_dir"),
23 0 : &path_))
24 0 : return false;
25 :
26 0 : return true;
27 : }
28 :
29 0 : bool ScopedTempDir::Set(const FilePath& path) {
30 0 : DCHECK(path_.empty());
31 0 : if (!file_util::DirectoryExists(path) &&
32 0 : !file_util::CreateDirectory(path)) {
33 0 : return false;
34 : }
35 0 : path_ = path;
36 0 : return true;
37 : }
38 :
39 0 : FilePath ScopedTempDir::Take() {
40 0 : FilePath ret = path_;
41 0 : path_ = FilePath();
42 : return ret;
43 : }
44 :
45 0 : bool ScopedTempDir::IsValid() const {
46 0 : return !path_.empty() && file_util::DirectoryExists(path_);
47 : }
|