Home | History | Annotate | Download | only in chromeos
      1 // Copyright (c) 2013 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 "chromeos/chromeos_paths.h"
      6 
      7 #include "base/file_util.h"
      8 #include "base/files/file_path.h"
      9 #include "base/path_service.h"
     10 #include "base/sys_info.h"
     11 
     12 namespace chromeos {
     13 
     14 namespace {
     15 
     16 const base::FilePath::CharType kDefaultAppOrderFileName[] =
     17 #if defined(GOOGLE_CHROME_BUILD)
     18     FILE_PATH_LITERAL("/usr/share/google-chrome/default_app_order.json");
     19 #else
     20     FILE_PATH_LITERAL("/usr/share/chromium/default_app_order.json");
     21 #endif  // defined(GOOGLE_CHROME_BUILD)
     22 
     23 const base::FilePath::CharType kDefaultUserPolicyKeysDir[] =
     24     FILE_PATH_LITERAL("/var/run/user_policy");
     25 
     26 const base::FilePath::CharType kOwnerKeyFileName[] =
     27     FILE_PATH_LITERAL("/var/lib/whitelist/owner.key");
     28 
     29 const base::FilePath::CharType kInstallAttributesFileName[] =
     30     FILE_PATH_LITERAL("/var/run/lockbox/install_attributes.pb");
     31 
     32 const base::FilePath::CharType kUptimeFileName[] =
     33     FILE_PATH_LITERAL("/proc/uptime");
     34 
     35 const base::FilePath::CharType kUpdateRebootNeededUptimeFile[] =
     36     FILE_PATH_LITERAL("/var/run/chrome/update_reboot_needed_uptime");
     37 
     38 const base::FilePath::CharType kDeviceLocalAccountExtensionDir[] =
     39     FILE_PATH_LITERAL("/var/cache/device_local_account_extensions");
     40 
     41 const base::FilePath::CharType kDeviceLocalAccountExternalDataDir[] =
     42     FILE_PATH_LITERAL("/var/cache/device_local_account_external_policy_data");
     43 
     44 const base::FilePath::CharType kDeviceLocalAccountComponentPolicy[] =
     45     FILE_PATH_LITERAL("/var/cache/device_local_account_component_policy");
     46 
     47 bool PathProvider(int key, base::FilePath* result) {
     48   switch (key) {
     49     case FILE_DEFAULT_APP_ORDER:
     50       *result = base::FilePath(kDefaultAppOrderFileName);
     51       break;
     52     case DIR_USER_POLICY_KEYS:
     53       *result = base::FilePath(kDefaultUserPolicyKeysDir);
     54       break;
     55     case FILE_OWNER_KEY:
     56       *result = base::FilePath(kOwnerKeyFileName);
     57       break;
     58     case FILE_INSTALL_ATTRIBUTES:
     59       *result = base::FilePath(kInstallAttributesFileName);
     60       break;
     61     case FILE_UPTIME:
     62       *result = base::FilePath(kUptimeFileName);
     63       break;
     64     case FILE_UPDATE_REBOOT_NEEDED_UPTIME:
     65       *result = base::FilePath(kUpdateRebootNeededUptimeFile);
     66       break;
     67     case DIR_DEVICE_LOCAL_ACCOUNT_EXTENSIONS:
     68       *result = base::FilePath(kDeviceLocalAccountExtensionDir);
     69       break;
     70     case DIR_DEVICE_LOCAL_ACCOUNT_EXTERNAL_DATA:
     71       *result = base::FilePath(kDeviceLocalAccountExternalDataDir);
     72       break;
     73     case DIR_DEVICE_LOCAL_ACCOUNT_COMPONENT_POLICY:
     74       *result = base::FilePath(kDeviceLocalAccountComponentPolicy);
     75       break;
     76     default:
     77       return false;
     78   }
     79   return true;
     80 }
     81 
     82 }  // namespace
     83 
     84 void RegisterPathProvider() {
     85   PathService::RegisterProvider(PathProvider, PATH_START, PATH_END);
     86 }
     87 
     88 void RegisterStubPathOverrides(const base::FilePath& stubs_dir) {
     89   CHECK(!base::SysInfo::IsRunningOnChromeOS());
     90   // Override these paths on the desktop, so that enrollment and cloud
     91   // policy work and can be tested.
     92   base::FilePath parent = base::MakeAbsoluteFilePath(stubs_dir);
     93   PathService::Override(
     94       DIR_USER_POLICY_KEYS,
     95       parent.AppendASCII("stub_user_policy"));
     96   const bool is_absolute = true;
     97   const bool create = false;
     98   PathService::OverrideAndCreateIfNeeded(
     99       FILE_OWNER_KEY,
    100       parent.AppendASCII("stub_owner.key"),
    101       is_absolute,
    102       create);
    103   PathService::OverrideAndCreateIfNeeded(
    104       FILE_INSTALL_ATTRIBUTES,
    105       parent.AppendASCII("stub_install_attributes.pb"),
    106       is_absolute,
    107       create);
    108   PathService::Override(
    109       DIR_DEVICE_LOCAL_ACCOUNT_EXTENSIONS,
    110       parent.AppendASCII("stub_device_local_account_extensions"));
    111   PathService::Override(
    112       DIR_DEVICE_LOCAL_ACCOUNT_EXTERNAL_DATA,
    113       parent.AppendASCII("stub_device_local_account_external_data"));
    114   PathService::Override(
    115       DIR_DEVICE_LOCAL_ACCOUNT_COMPONENT_POLICY,
    116       parent.AppendASCII("stub_device_local_account_component_policy"));
    117 }
    118 
    119 }  // namespace chromeos
    120