summaryrefslogtreecommitdiffstats
path: root/base/path_service_unittest.cc
diff options
context:
space:
mode:
authorgab@chromium.org <gab@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-20 16:24:52 +0000
committergab@chromium.org <gab@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-20 16:24:52 +0000
commitdea1d7d21976d078a41b2d321e8d626379c7a1fd (patch)
tree02587faedfbf8242cc8b557874d3c37a435739de /base/path_service_unittest.cc
parent6c2e391ce50adde6f5080245b1256838656063d3 (diff)
downloadchromium_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.cc53
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
}