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