Home | History | Annotate | Download | only in policy
      1 // Copyright (c) 2011 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 #ifndef CHROME_BROWSER_POLICY_POLICY_PATH_PARSER_H_
      6 #define CHROME_BROWSER_POLICY_POLICY_PATH_PARSER_H_
      7 
      8 #include <string>
      9 
     10 #include "base/file_path.h"
     11 
     12 namespace policy {
     13 
     14 namespace path_parser {
     15 
     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.
     20 // All platforms:
     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")
     25 // Windows only:
     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 // MacOS only:
     42 //   ${users}           - The folder where users profiles are stored
     43 //                        (example : "/Users")
     44 //   ${documents}       - The "Documents" folder of the current user.
     45 //                        (example : "/Users/johndoe/Documents")
     46 // Any non recognized variable is not being translated at all. Variables are
     47 // translated only once in every string because for most of these there is no
     48 // sense in concatenating them more than once in a single path.
     49 FilePath::StringType ExpandPathVariables(
     50     const FilePath::StringType& untranslated_string);
     51 
     52 }  // namespace path_parser
     53 
     54 }  // namespace policy
     55 
     56 #endif  // CHROME_BROWSER_POLICY_POLICY_PATH_PARSER_H_
     57