// Copyright 2017 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/base_paths.h" #include #include "base/command_line.h" #include "base/files/file_util.h" #include "base/fuchsia/file_utils.h" #include "base/notimplemented.h" #include "base/path_service.h" #include "base/process/process.h" namespace base { bool PathProviderFuchsia(int key, FilePath* result) { switch (key) { case FILE_EXE: *result = CommandLine::ForCurrentProcess()->GetProgram(); return true; case DIR_ASSETS: *result = base::FilePath(base::kPackageRootDirectoryPath); return true; // TODO(crbug.com/40274404): Align with other platforms and remove this // specialization. case DIR_GEN_TEST_DATA_ROOT: [[fallthrough]]; case DIR_SRC_TEST_DATA_ROOT: case DIR_OUT_TEST_DATA_ROOT: // These are only used by tests. // Test binaries are added to the package root via GN deps. *result = base::FilePath(base::kPackageRootDirectoryPath); return true; case DIR_USER_DESKTOP: // TODO(crbug.com/42050322): Implement this case for DIR_USER_DESKTOP. NOTIMPLEMENTED_LOG_ONCE(); return false; case DIR_HOME: // TODO(crbug.com/42050322) Provide a proper base::GetHomeDir() // implementation for Fuchsia and remove this case statement. See also // crbug.com/1261284. For now, log, return false, and let the base // implementation handle it. This will end up returning a temporary // directory. // This is for DIR_HOME. Will use temporary dir. NOTIMPLEMENTED_LOG_ONCE(); return false; } return false; } } // namespace base