diff options
author | gab@chromium.org <gab@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-20 16:24:52 +0000 |
---|---|---|
committer | gab@chromium.org <gab@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-20 16:24:52 +0000 |
commit | dea1d7d21976d078a41b2d321e8d626379c7a1fd (patch) | |
tree | 02587faedfbf8242cc8b557874d3c37a435739de /base/path_service_unittest.cc | |
parent | 6c2e391ce50adde6f5080245b1256838656063d3 (diff) | |
download | chromium_src-dea1d7d21976d078a41b2d321e8d626379c7a1fd.zip chromium_src-dea1d7d21976d078a41b2d321e8d626379c7a1fd.tar.gz chromium_src-dea1d7d21976d078a41b2d321e8d626379c7a1fd.tar.bz2 |
Add new PathService paths for Windows' All Users Desktop and Quick Launch folders.
Re-commit, reverted in http://crrev.com/157680 (original commit in http://crrev.com/157667).
This allows usage of PathService to cache the shortcut install paths and more importantly to mock them in shortcut tests!
Also move chrome::DIR_USER_DESKTOP to base::DIR_USER_DESKTOP; this is really where it belongs. In fact it is only in chrome_paths.h because it used to be called DIR_DEFAULT_DOWNLOAD and cpu@ renamed it to DIR_USER_DESKTOP in http://crrev.com/1753 (early days!) after that it started to be used all over the place as the Desktop path. Finally bringing it to base_paths.h, beside DIR_START_MENU and friends, is the right thing to do imo.
TBR=brettw@chromium.org
BUG=148539
TEST=Quick Launch shortcut installed in the right place on XP (both Default and current user)
Desktop shortcuts installed in the right place (both All Users and per-user installs).
installer_util_unittests.exe --gtest_filter=ShellUtilShortcutTest*
unit_tests.exe --gtest_filter=ProfileShortcutManagerTest*
base_unittests --gtest_filter=PathServiceTest*
Review URL: https://chromiumcodereview.appspot.com/10964007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@157779 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/path_service_unittest.cc')
-rw-r--r-- | base/path_service_unittest.cc | 53 |
1 files changed, 44 insertions, 9 deletions
diff --git a/base/path_service_unittest.cc b/base/path_service_unittest.cc index 81d1fef..158b745 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 } |