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 2ad39acbc6a96f6fe79da45c1b6e231f0e18e570..516155d07f1e62408233f4bd995e328f156760f3 100644 |
--- a/chrome/installer/util/shell_util_unittest.cc |
+++ b/chrome/installer/util/shell_util_unittest.cc |
@@ -7,15 +7,18 @@ |
#include <shlobj.h> |
#include <fstream> |
+#include <vector> |
#include "base/file_util.h" |
#include "base/path_service.h" |
#include "base/scoped_temp_dir.h" |
+#include "base/string16.h" |
#include "base/win/scoped_comptr.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 { |
@@ -89,16 +92,18 @@ class ShellUtilTest : public testing::Test { |
protected: |
virtual void SetUp() { |
ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
+ dist_ = BrowserDistribution::GetDistribution(); |
+ ASSERT_TRUE(dist_ != NULL); |
} |
+ BrowserDistribution* dist_; |
+ |
ScopedTempDir temp_dir_; |
}; |
}; |
// Test that we can open archives successfully. |
TEST_F(ShellUtilTest, UpdateChromeShortcutTest) { |
- BrowserDistribution* dist = BrowserDistribution::GetDistribution(); |
- ASSERT_TRUE(dist != NULL); |
// 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); |
@@ -110,13 +115,13 @@ TEST_F(ShellUtilTest, UpdateChromeShortcutTest) { |
FilePath shortcut_path = temp_dir_.path().AppendASCII("shortcut.lnk"); |
const std::wstring description(L"dummy description"); |
EXPECT_TRUE(ShellUtil::UpdateChromeShortcut( |
- dist, |
+ dist_, |
exe_path.value(), |
shortcut_path.value(), |
L"", |
description, |
exe_path.value(), |
- dist->GetIconIndex(), |
+ dist_->GetIconIndex(), |
ShellUtil::SHORTCUT_CREATE_ALWAYS)); |
EXPECT_TRUE(VerifyChromeShortcut(exe_path.value(), |
shortcut_path.value(), |
@@ -137,13 +142,13 @@ TEST_F(ShellUtilTest, UpdateChromeShortcutTest) { |
file.close(); |
ASSERT_TRUE(file_util::Delete(shortcut_path, false)); |
EXPECT_TRUE(ShellUtil::UpdateChromeShortcut( |
- dist, |
+ dist_, |
exe_path.value(), |
shortcut_path.value(), |
L"", |
description, |
exe_path.value(), |
- dist->GetIconIndex(), |
+ dist_->GetIconIndex(), |
ShellUtil::SHORTCUT_CREATE_ALWAYS)); |
EXPECT_TRUE(VerifyChromeShortcut(exe_path.value(), |
shortcut_path.value(), |
@@ -152,13 +157,13 @@ TEST_F(ShellUtilTest, UpdateChromeShortcutTest) { |
// Now change only description to update shortcut and make sure icon index |
// doesn't change. |
const std::wstring description2(L"dummy description 2"); |
- EXPECT_TRUE(ShellUtil::UpdateChromeShortcut(dist, |
+ EXPECT_TRUE(ShellUtil::UpdateChromeShortcut(dist_, |
exe_path.value(), |
shortcut_path.value(), |
L"", |
description2, |
exe_path.value(), |
- dist->GetIconIndex(), |
+ dist_->GetIconIndex(), |
ShellUtil::SHORTCUT_NO_OPTIONS)); |
EXPECT_TRUE(VerifyChromeShortcut(exe_path.value(), |
shortcut_path.value(), |
@@ -172,8 +177,6 @@ TEST_F(ShellUtilTest, CreateChromeDesktopShortcutTest) { |
return; |
} |
- BrowserDistribution* dist = BrowserDistribution::GetDistribution(); |
- ASSERT_TRUE(dist != NULL); |
// 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); |
@@ -190,18 +193,18 @@ TEST_F(ShellUtilTest, CreateChromeDesktopShortcutTest) { |
EXPECT_TRUE(ShellUtil::GetDesktopPath(true, &system_desktop_path)); |
std::wstring shortcut_name; |
- EXPECT_TRUE(ShellUtil::GetChromeShortcutName(dist, false, L"", |
+ EXPECT_TRUE(ShellUtil::GetChromeShortcutName(dist_, false, L"", |
&shortcut_name)); |
std::wstring default_profile_shortcut_name; |
const std::wstring default_profile_user_name = L"Minsk"; |
- EXPECT_TRUE(ShellUtil::GetChromeShortcutName(dist, false, |
+ EXPECT_TRUE(ShellUtil::GetChromeShortcutName(dist_, false, |
default_profile_user_name, |
&default_profile_shortcut_name)); |
std::wstring second_profile_shortcut_name; |
const std::wstring second_profile_user_name = L"Pinsk"; |
- EXPECT_TRUE(ShellUtil::GetChromeShortcutName(dist, false, |
+ EXPECT_TRUE(ShellUtil::GetChromeShortcutName(dist_, false, |
second_profile_user_name, |
&second_profile_shortcut_name)); |
@@ -214,13 +217,13 @@ TEST_F(ShellUtilTest, CreateChromeDesktopShortcutTest) { |
// Test simple creation of a user-level shortcut. |
EXPECT_TRUE(ShellUtil::CreateChromeDesktopShortcut( |
- dist, |
+ dist_, |
exe_path.value(), |
description, |
L"", |
L"", |
exe_path.value(), |
- dist->GetIconIndex(), |
+ dist_->GetIconIndex(), |
ShellUtil::CURRENT_USER, |
ShellUtil::SHORTCUT_CREATE_ALWAYS)); |
EXPECT_TRUE(VerifyChromeShortcut(exe_path.value(), |
@@ -228,19 +231,19 @@ TEST_F(ShellUtilTest, CreateChromeDesktopShortcutTest) { |
description, |
0)); |
EXPECT_TRUE(ShellUtil::RemoveChromeDesktopShortcut( |
- dist, |
+ dist_, |
ShellUtil::CURRENT_USER, |
ShellUtil::SHORTCUT_NO_OPTIONS)); |
// Test simple creation of a system-level shortcut. |
EXPECT_TRUE(ShellUtil::CreateChromeDesktopShortcut( |
- dist, |
+ dist_, |
exe_path.value(), |
description, |
L"", |
L"", |
exe_path.value(), |
- dist->GetIconIndex(), |
+ dist_->GetIconIndex(), |
ShellUtil::SYSTEM_LEVEL, |
ShellUtil::SHORTCUT_CREATE_ALWAYS)); |
EXPECT_TRUE(VerifyChromeShortcut(exe_path.value(), |
@@ -248,30 +251,30 @@ TEST_F(ShellUtilTest, CreateChromeDesktopShortcutTest) { |
description, |
0)); |
EXPECT_TRUE(ShellUtil::RemoveChromeDesktopShortcut( |
- dist, |
+ dist_, |
ShellUtil::SYSTEM_LEVEL, |
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, |
+ dist_, |
exe_path.value(), |
description, |
L"", |
L"", |
exe_path.value(), |
- dist->GetIconIndex(), |
+ dist_->GetIconIndex(), |
ShellUtil::SYSTEM_LEVEL, |
ShellUtil::SHORTCUT_CREATE_ALWAYS)); |
EXPECT_FALSE(ShellUtil::CreateChromeDesktopShortcut( |
- dist, |
+ dist_, |
exe_path.value(), |
description, |
L"", |
L"", |
exe_path.value(), |
- dist->GetIconIndex(), |
+ dist_->GetIconIndex(), |
ShellUtil::CURRENT_USER, |
ShellUtil::SHORTCUT_CREATE_ALWAYS)); |
EXPECT_TRUE(VerifyChromeShortcut(exe_path.value(), |
@@ -280,30 +283,30 @@ TEST_F(ShellUtilTest, CreateChromeDesktopShortcutTest) { |
0)); |
EXPECT_FALSE(file_util::PathExists(user_shortcut_path)); |
EXPECT_TRUE(ShellUtil::RemoveChromeDesktopShortcut( |
- dist, |
+ dist_, |
ShellUtil::SYSTEM_LEVEL, |
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, |
+ dist_, |
exe_path.value(), |
description, |
L"", |
L"", |
exe_path.value(), |
- dist->GetIconIndex(), |
+ dist_->GetIconIndex(), |
ShellUtil::CURRENT_USER, |
ShellUtil::SHORTCUT_CREATE_ALWAYS)); |
EXPECT_TRUE(ShellUtil::CreateChromeDesktopShortcut( |
- dist, |
+ dist_, |
exe_path.value(), |
description, |
L"", |
L"", |
exe_path.value(), |
- dist->GetIconIndex(), |
+ dist_->GetIconIndex(), |
ShellUtil::SYSTEM_LEVEL, |
ShellUtil::SHORTCUT_CREATE_ALWAYS)); |
EXPECT_TRUE(VerifyChromeShortcut(exe_path.value(), |
@@ -315,24 +318,24 @@ TEST_F(ShellUtilTest, CreateChromeDesktopShortcutTest) { |
description, |
0)); |
EXPECT_TRUE(ShellUtil::RemoveChromeDesktopShortcut( |
- dist, |
+ dist_, |
ShellUtil::CURRENT_USER, |
ShellUtil::SHORTCUT_NO_OPTIONS)); |
EXPECT_TRUE(ShellUtil::RemoveChromeDesktopShortcut( |
- dist, |
+ dist_, |
ShellUtil::SYSTEM_LEVEL, |
ShellUtil::SHORTCUT_NO_OPTIONS)); |
// Test creation of two profile-specific shortcuts (these are always |
// user-level). |
EXPECT_TRUE(ShellUtil::CreateChromeDesktopShortcut( |
- dist, |
+ dist_, |
exe_path.value(), |
description, |
default_profile_user_name, |
L"--profile-directory=\"Default\"", |
exe_path.value(), |
- dist->GetIconIndex(), |
+ dist_->GetIconIndex(), |
ShellUtil::CURRENT_USER, |
ShellUtil::SHORTCUT_CREATE_ALWAYS)); |
EXPECT_TRUE(VerifyChromeShortcut(exe_path.value(), |
@@ -340,13 +343,13 @@ TEST_F(ShellUtilTest, CreateChromeDesktopShortcutTest) { |
description, |
0)); |
EXPECT_TRUE(ShellUtil::CreateChromeDesktopShortcut( |
- dist, |
+ dist_, |
exe_path.value(), |
description, |
second_profile_user_name, |
L"--profile-directory=\"Profile 1\"", |
exe_path.value(), |
- dist->GetIconIndex(), |
+ dist_->GetIconIndex(), |
ShellUtil::CURRENT_USER, |
ShellUtil::SHORTCUT_CREATE_ALWAYS)); |
EXPECT_TRUE(VerifyChromeShortcut(exe_path.value(), |
@@ -359,3 +362,45 @@ TEST_F(ShellUtilTest, CreateChromeDesktopShortcutTest) { |
EXPECT_TRUE(ShellUtil::RemoveChromeDesktopShortcutsWithAppendedNames( |
profile_names)); |
} |
+ |
+TEST_F(ShellUtilTest, BuildAppModelIdBasic) { |
+ std::vector<string16> components; |
+ const string16 base_app_id(dist_->GetBaseAppId()); |
+ components.push_back(base_app_id); |
+ ASSERT_EQ(base_app_id, ShellUtil::BuildAppModelId(components)); |
+} |
+ |
+TEST_F(ShellUtilTest, BuildAppModelIdManySmall) { |
+ std::vector<string16> components; |
+ 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"); |
+ ASSERT_EQ(suffixed_app_id + L".Default.Test", |
+ ShellUtil::BuildAppModelId(components)); |
+} |
+ |
+TEST_F(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_" |
+ L"that_goes_over_64_characters"); |
+ components.push_back(long_appname); |
+ components.push_back(L"Default"); |
+ ASSERT_EQ(L"Chrome.a_user_wer_64_characters.Default", |
+ ShellUtil::BuildAppModelId(components)); |
+} |
+ |
+TEST_F(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_" |
+ L"that_goes_over_64_characters"); |
+ components.push_back(long_appname); |
+ components.push_back( |
+ L"A_crazy_profile_name_not_even_sure_whether_that_is_possible"); |
+ const string16 constructed_app_id(ShellUtil::BuildAppModelId(components)); |
+ ASSERT_LE(constructed_app_id.length(), installer::kMaxAppModelIdLength); |
+ ASSERT_EQ(L"Chrome.a_user_wer_64_characters.A_crazy_profilethat_is_possible", |
+ constructed_app_id); |
+} |