1 // Copyright (c) 2012 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.
5 #ifndef CHROME_BROWSER_POLICY_POLICY_PATH_PARSER_H_
6 #define CHROME_BROWSER_POLICY_POLICY_PATH_PARSER_H_
10 #include "base/files/file_path.h"
14 namespace path_parser
{
16 // This function is used to expand the variables in policy strings that
17 // represent paths. The set of supported variables differs between platforms
18 // but generally covers most standard locations that might be needed in the
19 // existing used cases.
21 // ${user_name} - The user that is running Chrome (respects suids).
22 // (example : "johndoe")
23 // ${machine_name} - The machine name possibly with domain (example :
24 // "johnny.cg1.cooldomain.org")
26 // ${documents} - The "Documents" folder for the current user.
27 // (example : "C:\Users\Administrator\Documents")
28 // ${local_app_data} - The Application Data folder for the current user.
29 // (example : "C:\Users\Administrator\AppData\Local")
30 // ${roaming_app_data}- The Roamed AppData folder for the current user.
31 // (example : "C:\Users\Administrator\AppData\Roaming")
32 // ${profile} - The home folder for the current user.
33 // (example : "C:\Users\Administrator")
34 // ${global_app_data} - The system-wide Application Data folder.
35 // (example : "C:\Users\All Users\AppData")
36 // ${program_files} - The "Program Files" folder for the current process.
37 // Depends on whether it is 32 or 64 bit process.
38 // (example : "C:\Program Files (x86)")
39 // ${windows} - The Windows folder
40 // (example : "C:\WINNT" or "C:\Windows")
41 // ${client_name} - The name of the client as reported by the WTS system.
42 // (example : "clientone")
43 // ${session_name} - The name of the session as reported by the WTS system.
44 // (example : "WinSta0", "RDP-Tcp#1")
46 // ${users} - The folder where users profiles are stored
47 // (example : "/Users")
48 // ${documents} - The "Documents" folder of the current user.
49 // (example : "/Users/johndoe/Documents")
50 // Any non recognized variable is not being translated at all. Variables are
51 // translated only once in every string because for most of these there is no
52 // sense in concatenating them more than once in a single path.
53 base::FilePath::StringType
ExpandPathVariables(
54 const base::FilePath::StringType
& untranslated_string
);
56 // A helper function used to read the UserDataDir path policy without relying on
57 // any policy infrastructure. This is required because this policy is needed
58 // much earlier before the PrefService is initialized.
59 // The function will fill |user_data_dir| if the policy "UserDataDir" is set and
60 // leave it intact if the policy is missing. If the policy is set it should
61 // override any manual changes to the profile path the user might have made so
62 // this function should be used to verify no policy is specified whenever the
63 // profile path is not read from the PathService which already takes this into
65 void CheckUserDataDirPolicy(base::FilePath
* user_data_dir
);
67 } // namespace path_parser
71 #endif // CHROME_BROWSER_POLICY_POLICY_PATH_PARSER_H_