diff options
author | beng@google.com <beng@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-15 19:48:53 +0000 |
---|---|---|
committer | beng@google.com <beng@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-15 19:48:53 +0000 |
commit | 6814b5351f5d60f5e88f0f24c7920169d8d0512d (patch) | |
tree | 4c77cdb5615c3486a93311dfc312251cff2822aa /app | |
parent | ea93fec3e697bedb13f1e60823eeb1edd295a1fd (diff) | |
download | chromium_src-6814b5351f5d60f5e88f0f24c7920169d8d0512d.zip chromium_src-6814b5351f5d60f5e88f0f24c7920169d8d0512d.tar.gz chromium_src-6814b5351f5d60f5e88f0f24c7920169d8d0512d.tar.bz2 |
forgot these two files with my last commit... fix bustage
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@16174 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'app')
-rw-r--r-- | app/app_paths.cc | 70 | ||||
-rw-r--r-- | app/app_paths.h | 30 |
2 files changed, 100 insertions, 0 deletions
diff --git a/app/app_paths.cc b/app/app_paths.cc new file mode 100644 index 0000000..ab4751c --- /dev/null +++ b/app/app_paths.cc @@ -0,0 +1,70 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. Use of this +// source code is governed by a BSD-style license that can be found in the +// LICENSE file. + +#include "app/app_paths.h" + +#include "base/command_line.h" +#include "base/file_path.h" +#include "base/file_util.h" +#include "base/path_service.h" + +namespace app { + +bool PathProvider(int key, FilePath* result) { + // Assume that we will not need to create the directory if it does not exist. + // This flag can be set to true for the cases where we want to create it. + bool create_dir = false; + + FilePath cur; + switch (key) { + case app::DIR_THEMES: + if (!PathService::Get(base::DIR_MODULE, &cur)) + return false; + cur = cur.Append(FILE_PATH_LITERAL("themes")); + create_dir = true; + break; + case app::DIR_LOCALES: + if (!PathService::Get(base::DIR_MODULE, &cur)) + return false; +#if defined(OS_MACOSX) + // On Mac, locale files are in Contents/Resources, a sibling of the + // App dir. + cur = cur.DirName(); + cur = cur.Append(FILE_PATH_LITERAL("Resources")); +#else + cur = cur.Append(FILE_PATH_LITERAL("locales")); +#endif + create_dir = true; + break; + // The following are only valid in the development environment, and + // will fail if executed from an installed executable (because the + // generated path won't exist). + case app::DIR_TEST_DATA: + if (!PathService::Get(base::DIR_SOURCE_ROOT, &cur)) + return false; + cur = cur.Append(FILE_PATH_LITERAL("app")); + cur = cur.Append(FILE_PATH_LITERAL("test")); + cur = cur.Append(FILE_PATH_LITERAL("data")); + if (!file_util::PathExists(cur)) // we don't want to create this + return false; + break; + default: + return false; + } + + if (create_dir && !file_util::PathExists(cur) && + !file_util::CreateDirectory(cur)) + return false; + + *result = cur; + return true; +} + +// This cannot be done as a static initializer sadly since Visual Studio will +// eliminate this object file if there is no direct entry point into it. +void RegisterPathProvider() { + PathService::RegisterProvider(PathProvider, PATH_START, PATH_END); +} + +} // namespace app diff --git a/app/app_paths.h b/app/app_paths.h new file mode 100644 index 0000000..9515619 --- /dev/null +++ b/app/app_paths.h @@ -0,0 +1,30 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. Use of this +// source code is governed by a BSD-style license that can be found in the +// LICENSE file. + +#ifndef APP_APP_PATHS_ +#define APP_APP_PATHS_ + +// This file declares path keys for the app module. These can be used with +// the PathService to access various special directories and files. + +namespace app { + +enum { + PATH_START = 2000, + + DIR_THEMES, // Directory where theme dll files are stored. + DIR_LOCALES, // Directory where locale resources are stored. + + // Valid only in development environment; TODO(darin): move these + DIR_TEST_DATA, // Directory where unit test data resides. + + PATH_END +}; + +// Call once to register the provider for the path keys defined above. +void RegisterPathProvider(); + +} // namespace app + +#endif // #ifndef APP_APP_PATHS_ |