Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9351)

Unified Diff: chrome/installer/util/shell_util_unittest.cc

Issue 10836247: Refactor ShellUtil shortcut code -- single multi-purpose methods as opposed to many slighlty diffe… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix shell_util_unittests.cc Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« chrome/installer/util/shell_util.cc ('K') | « chrome/installer/util/shell_util.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/installer/util/shell_util_unittest.cc
diff --git a/chrome/installer/util/shell_util_unittest.cc b/chrome/installer/util/shell_util_unittest.cc
index a73452a643bf413f4d3e5864f677d5492431ad2c..3c665ba9ede92700c456c59f7ba50b2b859a24ac 100644
--- a/chrome/installer/util/shell_util_unittest.cc
+++ b/chrome/installer/util/shell_util_unittest.cc
@@ -2,310 +2,91 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include <shlobj.h>
-
-#include <fstream>
#include <vector>
+#include "base/file_path.h"
#include "base/file_util.h"
-#include "base/path_service.h"
#include "base/md5.h"
#include "base/scoped_temp_dir.h"
#include "base/string16.h"
#include "base/string_util.h"
-#include "base/win/windows_version.h"
#include "chrome/installer/util/browser_distribution.h"
-#include "chrome/installer/util/master_preferences.h"
#include "chrome/installer/util/shell_util.h"
-#include "chrome/installer/util/util_constants.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
-class ShellUtilTestWithDirAndDist : public testing::Test {
+class ShellUtilShortcutTest : public testing::Test {
protected:
virtual void SetUp() {
ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
- dist_ = BrowserDistribution::GetDistribution();
- ASSERT_TRUE(dist_ != NULL);
+ user_level_shortcut =
+ FilePath(temp_dir_.path().Append(L"user shortcut.lnk"));
+ system_level_shortcut =
+ FilePath(temp_dir_.path().Append(L"system shortcut.lnk"));
}
- BrowserDistribution* dist_;
-
ScopedTempDir temp_dir_;
+ FilePath user_level_shortcut;
+ FilePath system_level_shortcut;
};
-}
-
-// Test that we can open archives successfully.
-TEST_F(ShellUtilTestWithDirAndDist, UpdateChromeShortcutTest) {
- // Create an executable in test path by copying ourself to it.
- wchar_t exe_full_path_str[MAX_PATH];
- EXPECT_FALSE(::GetModuleFileName(NULL, exe_full_path_str, MAX_PATH) == 0);
- FilePath exe_full_path(exe_full_path_str);
-
- FilePath exe_path = temp_dir_.path().AppendASCII("setup.exe");
- EXPECT_TRUE(file_util::CopyFile(exe_full_path, exe_path));
-
- FilePath shortcut_path = temp_dir_.path().AppendASCII("shortcut.lnk");
- const string16 description(L"dummy description");
- EXPECT_TRUE(ShellUtil::UpdateChromeShortcut(
- dist_,
- exe_path.value(),
- shortcut_path.value(),
- L"",
- description,
- exe_path.value(),
- dist_->GetIconIndex(),
- ShellUtil::SHORTCUT_CREATE_ALWAYS));
- EXPECT_EQ(ShellUtil::VERIFY_SHORTCUT_SUCCESS,
- ShellUtil::VerifyChromeShortcut(
- exe_path.value(), shortcut_path.value(), description, 0));
+} // namespace
- // Now specify an icon index in master prefs and make sure it works.
- FilePath prefs_path = temp_dir_.path().AppendASCII(
- installer::kDefaultMasterPrefs);
- std::ofstream file;
- file.open(prefs_path.value().c_str());
- ASSERT_TRUE(file.is_open());
- file <<
-"{"
-" \"distribution\":{"
-" \"chrome_shortcut_icon_index\" : 1"
-" }"
-"}";
- file.close();
- ASSERT_TRUE(file_util::Delete(shortcut_path, false));
- EXPECT_TRUE(ShellUtil::UpdateChromeShortcut(
- dist_,
- exe_path.value(),
- shortcut_path.value(),
- L"",
- description,
- exe_path.value(),
- dist_->GetIconIndex(),
- ShellUtil::SHORTCUT_CREATE_ALWAYS));
- EXPECT_EQ(ShellUtil::VERIFY_SHORTCUT_SUCCESS,
- ShellUtil::VerifyChromeShortcut(
- exe_path.value(), shortcut_path.value(), description, 1));
-
- // Now change only description to update shortcut and make sure icon index
- // doesn't change.
- const string16 description2(L"dummy description 2");
- EXPECT_TRUE(ShellUtil::UpdateChromeShortcut(dist_,
- exe_path.value(),
- shortcut_path.value(),
- L"",
- description2,
- exe_path.value(),
- dist_->GetIconIndex(),
- ShellUtil::SHORTCUT_NO_OPTIONS));
- EXPECT_EQ(ShellUtil::VERIFY_SHORTCUT_SUCCESS,
- ShellUtil::VerifyChromeShortcut(
- exe_path.value(), shortcut_path.value(), description2, 1));
+TEST_F(ShellUtilShortcutTest,
+ DetermineShortcutPathToCreateFromOptionsUserLevel) {
+ EXPECT_EQ(user_level_shortcut,
+ ShellUtil::DetermineShortcutPathToCreateFromOptions(
+ user_level_shortcut, system_level_shortcut,
+ ShellUtil::SHORTCUT_NO_OPTIONS));
}
-TEST_F(ShellUtilTestWithDirAndDist, CreateChromeDesktopShortcutTest) {
- // Run this test on Vista+ only if we are running elevated.
- if (base::win::GetVersion() > base::win::VERSION_XP && !IsUserAnAdmin()) {
- LOG(ERROR) << "Must be admin to run this test on Vista+";
- return;
- }
-
- // Create an executable in test path by copying ourself to it.
- wchar_t exe_full_path_str[MAX_PATH];
- EXPECT_FALSE(::GetModuleFileName(NULL, exe_full_path_str, MAX_PATH) == 0);
- FilePath exe_full_path(exe_full_path_str);
-
- FilePath exe_path = temp_dir_.path().AppendASCII("setup.exe");
- EXPECT_TRUE(file_util::CopyFile(exe_full_path, exe_path));
-
- const string16 description(L"dummy description");
-
- FilePath user_desktop_path;
- EXPECT_TRUE(ShellUtil::GetDesktopPath(false, &user_desktop_path));
- FilePath system_desktop_path;
- EXPECT_TRUE(ShellUtil::GetDesktopPath(true, &system_desktop_path));
-
- string16 shortcut_name;
- EXPECT_TRUE(ShellUtil::GetChromeShortcutName(dist_, false, L"",
- &shortcut_name));
-
- string16 default_profile_shortcut_name;
- const string16 default_profile_user_name = L"Minsk";
- EXPECT_TRUE(ShellUtil::GetChromeShortcutName(dist_, false,
- default_profile_user_name,
- &default_profile_shortcut_name));
-
- string16 second_profile_shortcut_name;
- const string16 second_profile_user_name = L"Pinsk";
- EXPECT_TRUE(ShellUtil::GetChromeShortcutName(dist_, false,
- second_profile_user_name,
- &second_profile_shortcut_name));
-
- FilePath user_shortcut_path = user_desktop_path.Append(shortcut_name);
- FilePath system_shortcut_path = system_desktop_path.Append(shortcut_name);
- FilePath default_profile_shortcut_path = user_desktop_path.Append(
- default_profile_shortcut_name);
- FilePath second_profile_shortcut_path = user_desktop_path.Append(
- second_profile_shortcut_name);
-
- // Test simple creation of a user-level shortcut.
- EXPECT_TRUE(ShellUtil::CreateChromeDesktopShortcut(
- dist_,
- exe_path.value(),
- description,
- L"",
- L"",
- exe_path.value(),
- dist_->GetIconIndex(),
- ShellUtil::CURRENT_USER,
- ShellUtil::SHORTCUT_CREATE_ALWAYS));
- EXPECT_EQ(ShellUtil::VERIFY_SHORTCUT_SUCCESS,
- ShellUtil::VerifyChromeShortcut(
- exe_path.value(), user_shortcut_path.value(), description, 0));
- EXPECT_TRUE(ShellUtil::RemoveChromeDesktopShortcut(
- dist_,
- ShellUtil::CURRENT_USER,
- ShellUtil::SHORTCUT_NO_OPTIONS));
-
- // Test simple creation of a system-level shortcut.
- EXPECT_TRUE(ShellUtil::CreateChromeDesktopShortcut(
- dist_,
- exe_path.value(),
- description,
- L"",
- L"",
- exe_path.value(),
- dist_->GetIconIndex(),
- ShellUtil::SYSTEM_LEVEL,
- ShellUtil::SHORTCUT_CREATE_ALWAYS));
- EXPECT_EQ(ShellUtil::VERIFY_SHORTCUT_SUCCESS,
- ShellUtil::VerifyChromeShortcut(
- exe_path.value(), system_shortcut_path.value(), description,
- 0));
- EXPECT_TRUE(ShellUtil::RemoveChromeDesktopShortcut(
- dist_,
- ShellUtil::SYSTEM_LEVEL,
- ShellUtil::SHORTCUT_NO_OPTIONS));
+TEST_F(ShellUtilShortcutTest,
+ DetermineShortcutPathToCreateFromOptionsUserLevelSystemLevelEmpty) {
+ EXPECT_EQ(user_level_shortcut,
+ ShellUtil::DetermineShortcutPathToCreateFromOptions(
+ user_level_shortcut, FilePath(),
+ ShellUtil::SHORTCUT_NO_OPTIONS));
+}
- // Test creation of a user-level shortcut when a system-level shortcut
- // is already present (should fail).
- EXPECT_TRUE(ShellUtil::CreateChromeDesktopShortcut(
- dist_,
- exe_path.value(),
- description,
- L"",
- L"",
- exe_path.value(),
- dist_->GetIconIndex(),
- ShellUtil::SYSTEM_LEVEL,
- ShellUtil::SHORTCUT_CREATE_ALWAYS));
- EXPECT_FALSE(ShellUtil::CreateChromeDesktopShortcut(
- dist_,
- exe_path.value(),
- description,
- L"",
- L"",
- exe_path.value(),
- dist_->GetIconIndex(),
- ShellUtil::CURRENT_USER,
- ShellUtil::SHORTCUT_CREATE_ALWAYS));
- EXPECT_EQ(ShellUtil::VERIFY_SHORTCUT_SUCCESS,
- ShellUtil::VerifyChromeShortcut(
- exe_path.value(), system_shortcut_path.value(), description,
- 0));
- EXPECT_FALSE(file_util::PathExists(user_shortcut_path));
- EXPECT_TRUE(ShellUtil::RemoveChromeDesktopShortcut(
- dist_,
- ShellUtil::SYSTEM_LEVEL,
- ShellUtil::SHORTCUT_NO_OPTIONS));
+TEST_F(ShellUtilShortcutTest,
+ DetermineShortcutPathToCreateFromOptionsUserLevelSystemLevelPresent) {
+ file_util::WriteFile(system_level_shortcut, "", 0);
+ EXPECT_EQ(FilePath(),
+ ShellUtil::DetermineShortcutPathToCreateFromOptions(
+ user_level_shortcut, system_level_shortcut,
+ ShellUtil::SHORTCUT_NO_OPTIONS));
+}
- // Test creation of a system-level shortcut when a user-level shortcut
- // is already present (should succeed).
- EXPECT_TRUE(ShellUtil::CreateChromeDesktopShortcut(
- dist_,
- exe_path.value(),
- description,
- L"",
- L"",
- exe_path.value(),
- dist_->GetIconIndex(),
- ShellUtil::CURRENT_USER,
- ShellUtil::SHORTCUT_CREATE_ALWAYS));
- EXPECT_TRUE(ShellUtil::CreateChromeDesktopShortcut(
- dist_,
- exe_path.value(),
- description,
- L"",
- L"",
- exe_path.value(),
- dist_->GetIconIndex(),
- ShellUtil::SYSTEM_LEVEL,
- ShellUtil::SHORTCUT_CREATE_ALWAYS));
- EXPECT_EQ(ShellUtil::VERIFY_SHORTCUT_SUCCESS,
- ShellUtil::VerifyChromeShortcut(
- exe_path.value(), user_shortcut_path.value(), description, 0));
- EXPECT_EQ(ShellUtil::VERIFY_SHORTCUT_SUCCESS,
- ShellUtil::VerifyChromeShortcut(
- exe_path.value(), system_shortcut_path.value(), description,
- 0));
- EXPECT_TRUE(ShellUtil::RemoveChromeDesktopShortcut(
- dist_,
- ShellUtil::CURRENT_USER,
- ShellUtil::SHORTCUT_NO_OPTIONS));
- EXPECT_TRUE(ShellUtil::RemoveChromeDesktopShortcut(
- dist_,
- ShellUtil::SYSTEM_LEVEL,
- ShellUtil::SHORTCUT_NO_OPTIONS));
+TEST_F(ShellUtilShortcutTest,
+ DetermineShortcutPathToCreateFromOptionsSystemLevel) {
+ EXPECT_EQ(system_level_shortcut,
+ ShellUtil::DetermineShortcutPathToCreateFromOptions(
+ user_level_shortcut, system_level_shortcut,
+ ShellUtil::SHORTCUT_SYSTEM_LEVEL));
+}
- // Test creation of two profile-specific shortcuts (these are always
- // user-level).
- EXPECT_TRUE(ShellUtil::CreateChromeDesktopShortcut(
- dist_,
- exe_path.value(),
- description,
- default_profile_user_name,
- L"--profile-directory=\"Default\"",
- exe_path.value(),
- dist_->GetIconIndex(),
- ShellUtil::CURRENT_USER,
- ShellUtil::SHORTCUT_CREATE_ALWAYS));
- EXPECT_EQ(ShellUtil::VERIFY_SHORTCUT_SUCCESS,
- ShellUtil::VerifyChromeShortcut(
- exe_path.value(), default_profile_shortcut_path.value(),
- description, 0));
- EXPECT_TRUE(ShellUtil::CreateChromeDesktopShortcut(
- dist_,
- exe_path.value(),
- description,
- second_profile_user_name,
- L"--profile-directory=\"Profile 1\"",
- exe_path.value(),
- dist_->GetIconIndex(),
- ShellUtil::CURRENT_USER,
- ShellUtil::SHORTCUT_CREATE_ALWAYS));
- EXPECT_EQ(ShellUtil::VERIFY_SHORTCUT_SUCCESS,
- ShellUtil::VerifyChromeShortcut(
- exe_path.value(), second_profile_shortcut_path.value(),
- description, 0));
- std::vector<string16> profile_names;
- profile_names.push_back(default_profile_shortcut_name);
- profile_names.push_back(second_profile_shortcut_name);
- EXPECT_TRUE(ShellUtil::RemoveChromeDesktopShortcutsWithAppendedNames(
- profile_names));
+TEST_F(ShellUtilShortcutTest,
+ DetermineShortcutPathToCreateFromOptionsSystemLevelUserLevelPresent) {
+ file_util::WriteFile(user_level_shortcut, "", 0);
+ EXPECT_EQ(system_level_shortcut,
+ ShellUtil::DetermineShortcutPathToCreateFromOptions(
+ user_level_shortcut, system_level_shortcut,
+ ShellUtil::SHORTCUT_SYSTEM_LEVEL));
}
-TEST_F(ShellUtilTestWithDirAndDist, BuildAppModelIdBasic) {
+TEST(ShellUtilTest, BuildAppModelIdBasic) {
+ BrowserDistribution* dist = BrowserDistribution::GetDistribution();
std::vector<string16> components;
- const string16 base_app_id(dist_->GetBaseAppId());
+ const string16 base_app_id(dist->GetBaseAppId());
components.push_back(base_app_id);
ASSERT_EQ(base_app_id, ShellUtil::BuildAppModelId(components));
}
-TEST_F(ShellUtilTestWithDirAndDist, BuildAppModelIdManySmall) {
+TEST(ShellUtilTest, BuildAppModelIdManySmall) {
+ BrowserDistribution* dist = BrowserDistribution::GetDistribution();
std::vector<string16> components;
- const string16 suffixed_app_id(dist_->GetBaseAppId().append(L".gab"));
+ const string16 suffixed_app_id(dist->GetBaseAppId().append(L".gab"));
components.push_back(suffixed_app_id);
components.push_back(L"Default");
components.push_back(L"Test");
@@ -313,7 +94,7 @@ TEST_F(ShellUtilTestWithDirAndDist, BuildAppModelIdManySmall) {
ShellUtil::BuildAppModelId(components));
}
-TEST_F(ShellUtilTestWithDirAndDist, BuildAppModelIdLongUsernameNormalProfile) {
+TEST(ShellUtilTest, BuildAppModelIdLongUsernameNormalProfile) {
std::vector<string16> components;
const string16 long_appname(
L"Chrome.a_user_who_has_a_crazy_long_name_with_some_weird@symbols_in_it_"
@@ -324,7 +105,7 @@ TEST_F(ShellUtilTestWithDirAndDist, BuildAppModelIdLongUsernameNormalProfile) {
ShellUtil::BuildAppModelId(components));
}
-TEST_F(ShellUtilTestWithDirAndDist, BuildAppModelIdLongEverything) {
+TEST(ShellUtilTest, BuildAppModelIdLongEverything) {
std::vector<string16> components;
const string16 long_appname(
L"Chrome.a_user_who_has_a_crazy_long_name_with_some_weird@symbols_in_it_"
« chrome/installer/util/shell_util.cc ('K') | « chrome/installer/util/shell_util.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698