xref: /aosp_15_r20/external/pdfium/testing/utils/path_service.h (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2015 The PDFium Authors
2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file.
4*3ac0a46fSAndroid Build Coastguard Worker 
5*3ac0a46fSAndroid Build Coastguard Worker #ifndef TESTING_UTILS_PATH_SERVICE_H_
6*3ac0a46fSAndroid Build Coastguard Worker #define TESTING_UTILS_PATH_SERVICE_H_
7*3ac0a46fSAndroid Build Coastguard Worker 
8*3ac0a46fSAndroid Build Coastguard Worker #include <string>
9*3ac0a46fSAndroid Build Coastguard Worker 
10*3ac0a46fSAndroid Build Coastguard Worker #ifdef _WIN32
11*3ac0a46fSAndroid Build Coastguard Worker #define PATH_SEPARATOR '\\'
12*3ac0a46fSAndroid Build Coastguard Worker #else
13*3ac0a46fSAndroid Build Coastguard Worker #define PATH_SEPARATOR '/'
14*3ac0a46fSAndroid Build Coastguard Worker #endif
15*3ac0a46fSAndroid Build Coastguard Worker 
16*3ac0a46fSAndroid Build Coastguard Worker // Get the various file directory and path information.
17*3ac0a46fSAndroid Build Coastguard Worker class PathService {
18*3ac0a46fSAndroid Build Coastguard Worker  public:
19*3ac0a46fSAndroid Build Coastguard Worker   // Return true when the path is a directory that exists.
20*3ac0a46fSAndroid Build Coastguard Worker   static bool DirectoryExists(const std::string& path);
21*3ac0a46fSAndroid Build Coastguard Worker 
22*3ac0a46fSAndroid Build Coastguard Worker   // Return true when the path ends with a path separator.
23*3ac0a46fSAndroid Build Coastguard Worker   static bool EndsWithSeparator(const std::string& path);
24*3ac0a46fSAndroid Build Coastguard Worker 
25*3ac0a46fSAndroid Build Coastguard Worker   // Retrieve the directory where executables run from.
26*3ac0a46fSAndroid Build Coastguard Worker   static bool GetExecutableDir(std::string* path);
27*3ac0a46fSAndroid Build Coastguard Worker 
28*3ac0a46fSAndroid Build Coastguard Worker   // Retrieve the root directory of the source tree.
29*3ac0a46fSAndroid Build Coastguard Worker   // Assume executables always run from out/<build_dir_name>/, so the source
30*3ac0a46fSAndroid Build Coastguard Worker   // directory is two levels above the executable directory.
31*3ac0a46fSAndroid Build Coastguard Worker   static bool GetSourceDir(std::string* path);
32*3ac0a46fSAndroid Build Coastguard Worker 
33*3ac0a46fSAndroid Build Coastguard Worker   // Retrieve the test data directory where test files are stored.
34*3ac0a46fSAndroid Build Coastguard Worker   // Try <source_dir>/testing/resources/ first. If it does not exist, try
35*3ac0a46fSAndroid Build Coastguard Worker   // checking <source_dir>/third_party/pdfium/testing/resources/.
36*3ac0a46fSAndroid Build Coastguard Worker   static bool GetTestDataDir(std::string* path);
37*3ac0a46fSAndroid Build Coastguard Worker 
38*3ac0a46fSAndroid Build Coastguard Worker   // Get the full path for a test file under the test data directory.
39*3ac0a46fSAndroid Build Coastguard Worker   static bool GetTestFilePath(const std::string& file_name, std::string* path);
40*3ac0a46fSAndroid Build Coastguard Worker 
41*3ac0a46fSAndroid Build Coastguard Worker   // Get the full path for a file under the third-party directory.
42*3ac0a46fSAndroid Build Coastguard Worker   static bool GetThirdPartyFilePath(const std::string& file_name,
43*3ac0a46fSAndroid Build Coastguard Worker                                     std::string* path);
44*3ac0a46fSAndroid Build Coastguard Worker };
45*3ac0a46fSAndroid Build Coastguard Worker #endif  // TESTING_UTILS_PATH_SERVICE_H_
46