// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chromecast/base/cast_paths.h" #include "base/base_paths.h" #include "base/files/file_path.h" #include "base/files/file_util.h" #include "base/logging.h" #include "base/path_service.h" #include "build/build_config.h" namespace chromecast { bool PathProvider(int key, base::FilePath* result) { switch (key) { case DIR_CAST_HOME: { base::FilePath home = base::GetHomeDir(); #if defined(ARCH_CPU_ARMEL) // When running on the actual device, $HOME is set to the user's // directory under the data partition. *result = home; #else // When running a development instance as a regular user, use // a data directory under $HOME (similar to Chrome). *result = home.Append(".config/cast_shell"); #endif return true; } #if defined(OS_ANDROID) case FILE_CAST_ANDROID_LOG: { base::FilePath base_dir; CHECK(PathService::Get(base::DIR_ANDROID_APP_DATA, &base_dir)); *result = base_dir.AppendASCII("cast_shell.log"); return true; } #endif // defined(OS_ANDROID) case FILE_CAST_CONFIG: { base::FilePath data_dir; #if defined(OS_ANDROID) CHECK(PathService::Get(base::DIR_ANDROID_APP_DATA, &data_dir)); *result = data_dir.Append("cast_shell.conf"); #else CHECK(PathService::Get(DIR_CAST_HOME, &data_dir)); *result = data_dir.Append(".eureka.conf"); #endif // defined(OS_ANDROID) return true; } case FILE_CAST_PAK: { base::FilePath base_dir; #if defined(OS_ANDROID) CHECK(PathService::Get(base::DIR_ANDROID_APP_DATA, &base_dir)); *result = base_dir.Append("paks/cast_shell.pak"); #else CHECK(PathService::Get(base::DIR_MODULE, &base_dir)); *result = base_dir.Append("assets/cast_shell.pak"); #endif // defined(OS_ANDROID) return true; } } return false; } void RegisterPathProvider() { PathService::RegisterProvider(PathProvider, PATH_START, PATH_END); } } // namespace chromecast