1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file. 4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#include "components/nacl/common/nacl_paths.h" 6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/files/file_util.h" 8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/path_service.h" 9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace { 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#if defined(OS_POSIX) && !defined(OS_MACOSX) 13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// File name of the nacl_helper and nacl_helper_bootstrap, Linux only. 14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochconst base::FilePath::CharType kInternalNaClHelperFileName[] = 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch FILE_PATH_LITERAL("nacl_helper"); 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochconst base::FilePath::CharType kInternalNaClHelperBootstrapFileName[] = 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch FILE_PATH_LITERAL("nacl_helper_bootstrap"); 18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif 19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace nacl { 23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbool PathProvider(int key, base::FilePath* result) { 25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::FilePath cur; 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch switch (key) { 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#if defined(OS_LINUX) 28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch case FILE_NACL_HELPER: 29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch if (!PathService::Get(base::DIR_MODULE, &cur)) 30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return false; 31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch cur = cur.Append(kInternalNaClHelperFileName); 32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch break; 33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch case FILE_NACL_HELPER_BOOTSTRAP: 34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch if (!PathService::Get(base::DIR_MODULE, &cur)) 35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return false; 36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch cur = cur.Append(kInternalNaClHelperBootstrapFileName); 37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch break; 38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif 39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch default: 40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return false; 41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch *result = cur; 44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return true; 45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 46eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// This cannot be done as a static initializer sadly since Visual Studio will 48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// eliminate this object file if there is no direct entry point into it. 49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid RegisterPathProvider() { 50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PathService::RegisterProvider(PathProvider, PATH_START, PATH_END); 51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace nacl 54