| Index: base/path_service_unittest.cc
|
| diff --git a/base/path_service_unittest.cc b/base/path_service_unittest.cc
|
| index 81d1fef0b96c61379712f4c9ee2a87e720b2a37a..158b7457003d011a72e6a74088ef3fb2bf8a63ac 100644
|
| --- a/base/path_service_unittest.cc
|
| +++ b/base/path_service_unittest.cc
|
| @@ -8,13 +8,19 @@
|
| #include "base/file_util.h"
|
| #include "base/file_path.h"
|
| #include "base/scoped_temp_dir.h"
|
| -#if defined(OS_WIN)
|
| -#include "base/win/windows_version.h"
|
| -#endif
|
| +#include "base/string_util.h"
|
| +#include "build/build_config.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "testing/gtest/include/gtest/gtest-spi.h"
|
| #include "testing/platform_test.h"
|
|
|
| +#if defined(OS_WIN)
|
| +#include <userenv.h>
|
| +#include "base/win/windows_version.h"
|
| +// userenv.dll is required for GetDefaultUserProfileDirectory().
|
| +#pragma comment(lib, "userenv.lib")
|
| +#endif
|
| +
|
| namespace {
|
|
|
| // Returns true if PathService::Get returns true and sets the path parameter
|
| @@ -26,9 +32,28 @@ bool ReturnsValidPath(int dir_type) {
|
| // If chromium has never been started on this account, the cache path may not
|
| // exist.
|
| if (dir_type == base::DIR_CACHE)
|
| - return result && !path.value().empty();
|
| + return result && !path.empty();
|
| +#endif
|
| +#if defined(OS_LINUX)
|
| + // On the linux try-bots: a path is returned (e.g. /home/chrome-bot/Desktop),
|
| + // but it doesn't exist.
|
| + if (dir_type == base::DIR_USER_DESKTOP)
|
| + return result && !path.empty();
|
| #endif
|
| - return result && !path.value().empty() && file_util::PathExists(path);
|
| +#if defined(OS_WIN)
|
| + // On Windows XP, the Quick Launch folder for the "Default User" doesn't exist
|
| + // by default. At least confirm that the path returned begins with the
|
| + // Default User's profile path.
|
| + if (dir_type == base::DIR_DEFAULT_USER_QUICK_LAUNCH &&
|
| + base::win::GetVersion() < base::win::VERSION_VISTA) {
|
| + wchar_t default_profile_path[MAX_PATH];
|
| + DWORD size = arraysize(default_profile_path);
|
| + return (result &&
|
| + ::GetDefaultUserProfileDirectory(default_profile_path, &size) &&
|
| + StartsWith(path.value(), default_profile_path, false));
|
| + }
|
| +#endif
|
| + return result && !path.empty() && file_util::PathExists(path);
|
| }
|
|
|
| #if defined(OS_WIN)
|
| @@ -53,10 +78,10 @@ typedef PlatformTest PathServiceTest;
|
| // later changes to Get broke the semantics of the function and yielded the
|
| // correct value while returning false.)
|
| TEST_F(PathServiceTest, Get) {
|
| - for (int key = base::DIR_CURRENT; key < base::PATH_END; ++key) {
|
| + for (int key = base::PATH_START + 1; key < base::PATH_END; ++key) {
|
| #if defined(OS_ANDROID)
|
| - if (key == base::FILE_MODULE)
|
| - continue; // Android doesn't implement FILE_MODULE;
|
| + if (key == base::FILE_MODULE || key == base::DIR_USER_DESKTOP)
|
| + continue; // Android doesn't implement FILE_MODULE and DIR_USER_DESKTOP;
|
| #endif
|
| EXPECT_PRED1(ReturnsValidPath, key);
|
| }
|
| @@ -83,7 +108,17 @@ TEST_F(PathServiceTest, Get) {
|
| }
|
| #elif defined(OS_MACOSX)
|
| for (int key = base::PATH_MAC_START + 1; key < base::PATH_MAC_END; ++key) {
|
| - EXPECT_PRED1(ReturnsValidPath, key);
|
| + EXPECT_PRED1(ReturnsValidPath, key);
|
| + }
|
| +#elif defined(OS_ANDROID)
|
| + for (int key = base::PATH_ANDROID_START + 1; key < base::PATH_ANDROID_END;
|
| + ++key) {
|
| + EXPECT_PRED1(ReturnsValidPath, key);
|
| + }
|
| +#elif defined(OS_POSIX)
|
| + for (int key = base::PATH_POSIX_START + 1; key < base::PATH_POSIX_END;
|
| + ++key) {
|
| + EXPECT_PRED1(ReturnsValidPath, key);
|
| }
|
| #endif
|
| }
|
|
|