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

Unified Diff: chrome_elf/chrome_elf_util_unittest.cc

Issue 2491463002: Revert of Windows install_static refactor. (Closed)
Patch Set: Created 4 years, 1 month 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
« no previous file with comments | « chrome_elf/chrome_elf_main.cc ('k') | components/nacl/broker/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome_elf/chrome_elf_util_unittest.cc
diff --git a/chrome_elf/chrome_elf_util_unittest.cc b/chrome_elf/chrome_elf_util_unittest.cc
index 3a9f441944b98b9d2ec4c5d214107a4d42bd291b..9f2a6846ad24c28aa94624e619b6eda852274afe 100644
--- a/chrome_elf/chrome_elf_util_unittest.cc
+++ b/chrome_elf/chrome_elf_util_unittest.cc
@@ -8,12 +8,26 @@
#include "base/test/test_reg_util_win.h"
#include "base/win/registry.h"
+#include "chrome/install_static/install_util.h"
#include "chrome_elf/chrome_elf_constants.h"
#include "chrome_elf/chrome_elf_security.h"
#include "chrome_elf/nt_registry/nt_registry.h"
#include "testing/gtest/include/gtest/gtest.h"
+#include "testing/platform_test.h"
+
+using namespace install_static;
namespace {
+
+const wchar_t kCanaryExePath[] =
+ L"C:\\Users\\user\\AppData\\Local\\Google\\Chrome SxS\\Application"
+ L"\\chrome.exe";
+const wchar_t kChromeSystemExePath[] =
+ L"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe";
+const wchar_t kChromeUserExePath[] =
+ L"C:\\Users\\user\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe";
+const wchar_t kChromiumExePath[] =
+ L"C:\\Users\\user\\AppData\\Local\\Chromium\\Application\\chrome.exe";
bool SetSecurityFinchFlag(bool creation) {
bool success = true;
@@ -79,6 +93,23 @@
ASSERT_TRUE(nt::SetTestingOverride(nt::HKLM, base::string16()));
}
+TEST(ChromeElfUtilTest, CanaryTest) {
+ EXPECT_TRUE(IsSxSChrome(kCanaryExePath));
+ EXPECT_FALSE(IsSxSChrome(kChromeUserExePath));
+ EXPECT_FALSE(IsSxSChrome(kChromiumExePath));
+}
+
+TEST(ChromeElfUtilTest, SystemInstallTest) {
+ EXPECT_TRUE(IsSystemInstall(kChromeSystemExePath));
+ EXPECT_FALSE(IsSystemInstall(kChromeUserExePath));
+}
+
+TEST(ChromeElfUtilTest, BrowserProcessTest) {
+ EXPECT_EQ(ProcessType::UNINITIALIZED, g_process_type);
+ InitializeProcessType();
+ EXPECT_FALSE(IsNonBrowserProcess());
+}
+
TEST(ChromeElfUtilTest, BrowserProcessSecurityTest) {
if (!::IsWindows8OrGreater())
return;
@@ -100,4 +131,392 @@
CancelRegRedirect(nt::HKCU);
}
+// Parameterized test with paramters:
+// 1: product: "canary" or "google"
+// 2: install level: "user" or "system"
+// 3: install mode: "single" or "multi"
+class ChromeElfUtilTest
+ : public testing::TestWithParam<
+ std::tuple<const char*, const char*, const char*>> {
+ protected:
+ void SetUp() override {
+ // Set up registry override for these tests.
+ RegRedirect(nt::HKLM, &override_manager_);
+ RegRedirect(nt::HKCU, &override_manager_);
+
+ const char* app;
+ const char* level;
+ const char* mode;
+ std::tie(app, level, mode) = GetParam();
+ is_canary_ = (std::string(app) == "canary");
+ system_level_ = (std::string(level) != "user");
+ multi_install_ = (std::string(mode) != "single");
+ if (is_canary_) {
+ ASSERT_FALSE(system_level_);
+ ASSERT_FALSE(multi_install_);
+ app_guid_ = kAppGuidCanary;
+ chrome_path_ = kCanaryExePath;
+ } else {
+ app_guid_ = kAppGuidGoogleChrome;
+ chrome_path_ =
+ (system_level_ ? kChromeSystemExePath : kChromeUserExePath);
+ }
+ if (multi_install_) {
+ SetMultiInstallStateInRegistry(system_level_, true);
+ app_guid_ = kAppGuidGoogleBinaries;
+ }
+ }
+
+ void TearDown() override {
+ CancelRegRedirect(nt::HKCU);
+ CancelRegRedirect(nt::HKLM);
+ }
+
+ base::string16 BuildKey(const wchar_t* path, const wchar_t* guid) {
+ base::string16 full_key_path(path);
+ full_key_path.append(1, L'\\');
+ full_key_path.append(guid);
+ return full_key_path;
+ }
+
+ void SetUsageStat(DWORD value, bool state_medium) {
+ LONG result = base::win::RegKey(
+ system_level_ ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER,
+ BuildKey(state_medium ? kRegPathClientStateMedium
+ : kRegPathClientState,
+ app_guid_)
+ .c_str(),
+ KEY_SET_VALUE)
+ .WriteValue(kRegValueUsageStats, value);
+ ASSERT_EQ(ERROR_SUCCESS, result);
+ }
+
+ void SetMultiInstallStateInRegistry(bool system_install, bool multi) {
+ base::win::RegKey key(
+ system_install ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER,
+ BuildKey(kRegPathClientState, kAppGuidGoogleChrome).c_str(),
+ KEY_SET_VALUE);
+ LONG result;
+ if (multi) {
+ result = key.WriteValue(kUninstallArgumentsField,
+ L"yadda yadda --multi-install yadda yadda");
+ } else {
+ result = key.DeleteValue(kUninstallArgumentsField);
+ }
+ ASSERT_EQ(ERROR_SUCCESS, result);
+ }
+
+ void SetChannelName(const base::string16& channel_name) {
+ LONG result =
+ base::win::RegKey(
+ system_level_ ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER,
+ BuildKey(kRegPathClientState, app_guid_).c_str(), KEY_SET_VALUE)
+ .WriteValue(kRegApField, channel_name.c_str());
+ ASSERT_EQ(ERROR_SUCCESS, result);
+ }
+
+ // This function tests the install_static::GetChromeChannelName function and
+ // is based on the ChannelInfoTest.Channels in channel_info_unittest.cc.
+ // The |add_modifier| parameter controls whether we expect modifiers in the
+ // returned channel name.
+ void PerformChannelNameTests(bool add_modifier) {
+ // We can't test the channel name correctly for canary mode because the
+ // install_static checks whether an exe is a canary executable is based on
+ // the path where the exe is running from.
+ if (is_canary_)
+ return;
+ SetChannelName(L"");
+ base::string16 channel;
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"m", channel.c_str());
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelStable, channel.c_str());
+ }
+
+ SetChannelName(L"-full");
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"m", channel.c_str());
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelStable, channel.c_str());
+ }
+
+ SetChannelName(L"1.1-beta");
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"beta-m", channel.c_str());
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelBeta, channel.c_str());
+ }
+
+ SetChannelName(L"1.1-beta");
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"beta-m", channel.c_str());
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelBeta, channel.c_str());
+ }
+
+ SetChannelName(L"1.1-bar");
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"beta-m", channel.c_str());
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelBeta, channel.c_str());
+ }
+
+ SetChannelName(L"1n1-foobar");
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"beta-m", channel.c_str());
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelBeta, channel.c_str());
+ }
+
+ SetChannelName(L"foo-1.1-beta");
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"m", channel.c_str());
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelStable, channel.c_str());
+ }
+ SetChannelName(L"2.0-beta");
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"m", channel.c_str());
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelStable, channel.c_str());
+ }
+
+ SetChannelName(L"2.0-dev");
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"dev-m", channel.c_str());
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelDev, channel.c_str());
+ }
+ SetChannelName(L"2.0-DEV");
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"dev-m", channel.c_str());
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelDev, channel.c_str());
+ }
+ SetChannelName(L"2.0-dev-eloper");
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"dev-m", channel.c_str());
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelDev, channel.c_str());
+ }
+ SetChannelName(L"2.0-doom");
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"dev-m", channel.c_str());
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelDev, channel.c_str());
+ }
+ SetChannelName(L"250-doom");
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"dev-m", channel.c_str());
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelDev, channel.c_str());
+ }
+ SetChannelName(L"bar-2.0-dev");
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"m", channel.c_str());
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelStable, channel.c_str());
+ }
+ SetChannelName(L"1.0-dev");
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"m", channel.c_str());
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelStable, channel.c_str());
+ }
+
+ SetChannelName(L"x64-beta");
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"beta-m", channel.c_str());
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelBeta, channel.c_str());
+ }
+ SetChannelName(L"bar-x64-beta");
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"beta-m", channel.c_str());
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelBeta, channel.c_str());
+ }
+ SetChannelName(L"x64-Beta");
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"beta-m", channel.c_str());
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelBeta, channel.c_str());
+ }
+
+ SetChannelName(L"x64-stable");
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"m", channel.c_str());
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelStable, channel.c_str());
+ }
+ SetChannelName(L"baz-x64-stable");
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"m", channel.c_str());
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelStable, channel.c_str());
+ }
+ SetChannelName(L"x64-Stable");
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"m", channel.c_str());
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelStable, channel.c_str());
+ }
+
+ SetChannelName(L"fuzzy");
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"m", channel.c_str());
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelStable, channel.c_str());
+ }
+ SetChannelName(L"foo");
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"m", channel.c_str());
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelStable, channel.c_str());
+ }
+ // Variations on stable channel.
+ static constexpr const wchar_t* kStableApValues[] = {
+ L"-multi-chrome",
+ L"x64-stable-multi-chrome",
+ L"-stage:ensemble_patching-multi-chrome-full",
+ L"-multi-chrome-full",
+ };
+ for (const wchar_t* ap_value : kStableApValues) {
+ SetChannelName(ap_value);
+ install_static::GetChromeChannelName(!system_level_, add_modifier,
+ &channel);
+ if (multi_install_ && add_modifier) {
+ EXPECT_STREQ(L"m", channel.c_str()) << ap_value;
+ } else {
+ EXPECT_STREQ(install_static::kChromeChannelStable, channel.c_str())
+ << ap_value;
+ }
+ }
+ }
+
+ const wchar_t* app_guid_;
+ const wchar_t* chrome_path_;
+ bool system_level_;
+ bool multi_install_;
+ bool is_canary_;
+ registry_util::RegistryOverrideManager override_manager_;
+};
+
+TEST_P(ChromeElfUtilTest, MultiInstallTest) {
+ if (is_canary_)
+ return;
+ SetMultiInstallStateInRegistry(system_level_, true);
+ EXPECT_TRUE(IsMultiInstall(system_level_));
+
+ SetMultiInstallStateInRegistry(system_level_, false);
+ EXPECT_FALSE(IsMultiInstall(system_level_));
+}
+
+TEST_P(ChromeElfUtilTest, UsageStatsAbsent) {
+ EXPECT_FALSE(GetCollectStatsConsentForTesting(chrome_path_));
+}
+
+TEST_P(ChromeElfUtilTest, UsageStatsZero) {
+ SetUsageStat(0, false);
+ EXPECT_FALSE(GetCollectStatsConsentForTesting(chrome_path_));
+}
+
+TEST_P(ChromeElfUtilTest, UsageStatsOne) {
+ SetUsageStat(1, false);
+ EXPECT_TRUE(GetCollectStatsConsentForTesting(chrome_path_));
+ if (is_canary_) {
+ EXPECT_FALSE(GetCollectStatsConsentForTesting(kChromeUserExePath));
+ EXPECT_FALSE(GetCollectStatsConsentForTesting(kChromeSystemExePath));
+ } else if (system_level_) {
+ EXPECT_FALSE(GetCollectStatsConsentForTesting(kCanaryExePath));
+ EXPECT_FALSE(GetCollectStatsConsentForTesting(kChromeUserExePath));
+ } else {
+ EXPECT_FALSE(GetCollectStatsConsentForTesting(kCanaryExePath));
+ EXPECT_FALSE(GetCollectStatsConsentForTesting(kChromeSystemExePath));
+ }
+}
+
+TEST_P(ChromeElfUtilTest, UsageStatsZeroInStateMedium) {
+ if (!system_level_)
+ return;
+ SetUsageStat(0, true);
+ EXPECT_FALSE(GetCollectStatsConsentForTesting(chrome_path_));
+}
+
+TEST_P(ChromeElfUtilTest, UsageStatsOneInStateMedium) {
+ if (!system_level_)
+ return;
+ SetUsageStat(1, true);
+ EXPECT_TRUE(GetCollectStatsConsentForTesting(chrome_path_));
+ EXPECT_FALSE(GetCollectStatsConsentForTesting(kCanaryExePath));
+ EXPECT_FALSE(GetCollectStatsConsentForTesting(kChromeUserExePath));
+}
+
+// TODO(ananta)
+// Move this to install_static_unittests.
+// http://crbug.com/604923
+// This test tests the install_static::GetChromeChannelName function and is
+// based on the ChannelInfoTest.Channels in channel_info_unittest.cc
+TEST_P(ChromeElfUtilTest, InstallStaticGetChannelNameTest) {
+ PerformChannelNameTests(true); // add_modifier
+ PerformChannelNameTests(false); // !add_modifier
+}
+
+INSTANTIATE_TEST_CASE_P(Canary,
+ ChromeElfUtilTest,
+ testing::Combine(testing::Values("canary"),
+ testing::Values("user"),
+ testing::Values("single")));
+INSTANTIATE_TEST_CASE_P(GoogleChrome,
+ ChromeElfUtilTest,
+ testing::Combine(testing::Values("google"),
+ testing::Values("user", "system"),
+ testing::Values("single", "multi")));
+
} // namespace
« no previous file with comments | « chrome_elf/chrome_elf_main.cc ('k') | components/nacl/broker/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698