Home | History | Annotate | Download | only in base
      1 // Copyright (c) 2006-2008 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/base_paths.h"
      6 
      7 #include "base/file_util.h"
      8 #include "base/files/file_path.h"
      9 #include "base/path_service.h"
     10 
     11 namespace base {
     12 
     13 bool PathProvider(int key, FilePath* result) {
     14   // NOTE: DIR_CURRENT is a special case in PathService::Get
     15 
     16   FilePath cur;
     17   switch (key) {
     18     case DIR_EXE:
     19       PathService::Get(FILE_EXE, &cur);
     20       cur = cur.DirName();
     21       break;
     22     case DIR_MODULE:
     23       PathService::Get(FILE_MODULE, &cur);
     24       cur = cur.DirName();
     25       break;
     26     case DIR_TEMP:
     27       if (!base::GetTempDir(&cur))
     28         return false;
     29       break;
     30     case DIR_TEST_DATA:
     31       if (!PathService::Get(DIR_SOURCE_ROOT, &cur))
     32         return false;
     33       cur = cur.Append(FILE_PATH_LITERAL("base"));
     34       cur = cur.Append(FILE_PATH_LITERAL("test"));
     35       cur = cur.Append(FILE_PATH_LITERAL("data"));
     36       if (!base::PathExists(cur))  // We don't want to create this.
     37         return false;
     38       break;
     39     default:
     40       return false;
     41   }
     42 
     43   *result = cur;
     44   return true;
     45 }
     46 
     47 }  // namespace base
     48