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