xref: /aosp_15_r20/external/cronet/components/nacl/common/nacl_paths.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2013 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #include "components/nacl/common/nacl_paths.h"
6*6777b538SAndroid Build Coastguard Worker 
7*6777b538SAndroid Build Coastguard Worker #include "base/command_line.h"
8*6777b538SAndroid Build Coastguard Worker #include "base/files/file_util.h"
9*6777b538SAndroid Build Coastguard Worker #include "base/path_service.h"
10*6777b538SAndroid Build Coastguard Worker #include "build/build_config.h"
11*6777b538SAndroid Build Coastguard Worker #include "components/nacl/common/nacl_switches.h"
12*6777b538SAndroid Build Coastguard Worker 
13*6777b538SAndroid Build Coastguard Worker namespace {
14*6777b538SAndroid Build Coastguard Worker 
15*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
16*6777b538SAndroid Build Coastguard Worker // File name of the nacl_helper and nacl_helper_bootstrap, Linux only.
17*6777b538SAndroid Build Coastguard Worker const base::FilePath::CharType kInternalNaClHelperFileName[] =
18*6777b538SAndroid Build Coastguard Worker     FILE_PATH_LITERAL("nacl_helper");
19*6777b538SAndroid Build Coastguard Worker const base::FilePath::CharType kInternalNaClHelperBootstrapFileName[] =
20*6777b538SAndroid Build Coastguard Worker     FILE_PATH_LITERAL("nacl_helper_bootstrap");
21*6777b538SAndroid Build Coastguard Worker 
GetNaClHelperPath(const base::FilePath::CharType * filename,base::FilePath * output)22*6777b538SAndroid Build Coastguard Worker bool GetNaClHelperPath(const base::FilePath::CharType* filename,
23*6777b538SAndroid Build Coastguard Worker                        base::FilePath* output) {
24*6777b538SAndroid Build Coastguard Worker   if (!base::PathService::Get(base::DIR_MODULE, output))
25*6777b538SAndroid Build Coastguard Worker     return false;
26*6777b538SAndroid Build Coastguard Worker   *output = output->Append(filename);
27*6777b538SAndroid Build Coastguard Worker   return true;
28*6777b538SAndroid Build Coastguard Worker }
29*6777b538SAndroid Build Coastguard Worker 
30*6777b538SAndroid Build Coastguard Worker #endif
31*6777b538SAndroid Build Coastguard Worker 
32*6777b538SAndroid Build Coastguard Worker }  // namespace
33*6777b538SAndroid Build Coastguard Worker 
34*6777b538SAndroid Build Coastguard Worker namespace nacl {
35*6777b538SAndroid Build Coastguard Worker 
PathProvider(int key,base::FilePath * result)36*6777b538SAndroid Build Coastguard Worker bool PathProvider(int key, base::FilePath* result) {
37*6777b538SAndroid Build Coastguard Worker   switch (key) {
38*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
39*6777b538SAndroid Build Coastguard Worker     case FILE_NACL_HELPER:
40*6777b538SAndroid Build Coastguard Worker       return GetNaClHelperPath(kInternalNaClHelperFileName, result);
41*6777b538SAndroid Build Coastguard Worker     case FILE_NACL_HELPER_BOOTSTRAP:
42*6777b538SAndroid Build Coastguard Worker       return GetNaClHelperPath(kInternalNaClHelperBootstrapFileName, result);
43*6777b538SAndroid Build Coastguard Worker #endif
44*6777b538SAndroid Build Coastguard Worker     default:
45*6777b538SAndroid Build Coastguard Worker       return false;
46*6777b538SAndroid Build Coastguard Worker   }
47*6777b538SAndroid Build Coastguard Worker }
48*6777b538SAndroid Build Coastguard Worker 
49*6777b538SAndroid Build Coastguard Worker // This cannot be done as a static initializer sadly since Visual Studio will
50*6777b538SAndroid Build Coastguard Worker // eliminate this object file if there is no direct entry point into it.
RegisterPathProvider()51*6777b538SAndroid Build Coastguard Worker void RegisterPathProvider() {
52*6777b538SAndroid Build Coastguard Worker   base::PathService::RegisterProvider(PathProvider, PATH_START, PATH_END);
53*6777b538SAndroid Build Coastguard Worker }
54*6777b538SAndroid Build Coastguard Worker 
55*6777b538SAndroid Build Coastguard Worker }  // namespace nacl
56