paths.cc revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "sql/test/paths.h"
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/files/file_path.h"
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/files/file_util.h"
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/path_service.h"
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace sql {
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace test {
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace {
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbool PathProvider(int key, base::FilePath* result) {
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  base::FilePath cur;
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  switch (key) {
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    // The following are only valid in the development environment, and
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    // will fail if executed from an installed executable (because the
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    // generated path won't exist).
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    case DIR_TEST_DATA:
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      if (!PathService::Get(base::DIR_SOURCE_ROOT, &cur))
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        return false;
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      cur = cur.Append(FILE_PATH_LITERAL("sql"));
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      cur = cur.Append(FILE_PATH_LITERAL("test"));
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      cur = cur.Append(FILE_PATH_LITERAL("data"));
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      if (!base::PathExists(cur))  // we don't want to create this
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        return false;
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      break;
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    default:
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      return false;
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  }
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  *result = cur;
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return true;
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// This cannot be done as a static initializer sadly since Visual Studio will
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// eliminate this object file if there is no direct entry point into it.
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid RegisterPathProvider() {
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  PathService::RegisterProvider(PathProvider, PATH_START, PATH_END);
45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace test
48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace sql
49