-// Copyright 2017 The Chromium Authors. All rights reserved.
+// 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 <stdlib.h>
-#include "base/base_paths_fuchsia.h"
#include "base/command_line.h"
#include "base/files/file_util.h"
+#include "base/fuchsia/file_utils.h"
+#include "base/notreached.h"
#include "base/path_service.h"
#include "base/process/process.h"
namespace base {
-base::FilePath GetPackageRoot() {
- return base::FilePath("/pkg");
-}
-
bool PathProviderFuchsia(int key, FilePath* result) {
switch (key) {
- case FILE_MODULE:
- NOTIMPLEMENTED();
- return false;
case FILE_EXE:
*result = CommandLine::ForCurrentProcess()->GetProgram();
return true;
- case DIR_APP_DATA:
- // TODO(https://crbug.com/840598): Switch to /data when minfs supports
- // mmap().
- DLOG(WARNING) << "Using /tmp as app data dir, changes will NOT be "
- "persisted! (crbug.com/840598)";
- *result = FilePath("/tmp");
- return true;
- case DIR_CACHE:
- *result = FilePath("/data");
- return true;
case DIR_ASSETS:
- case DIR_SOURCE_ROOT:
- *result = GetPackageRoot();
+ *result = base::FilePath(base::kPackageRootDirectoryPath);
return true;
+
+ // TODO(crbug.com/1459692): 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/1231928): Implement this case for DIR_USER_DESKTOP.
+ NOTIMPLEMENTED_LOG_ONCE();
+ return false;
+ case DIR_HOME:
+ // TODO(crbug.com/1231928) 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;
}