| 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 26b3a26cdd1a62764ae11404df7edf71f17ce02e..a41a5bcfc7a84bc89e1245aabc4d01cc51929461 100644
 | 
| --- a/chrome_elf/chrome_elf_util_unittest.cc
 | 
| +++ b/chrome_elf/chrome_elf_util_unittest.cc
 | 
| @@ -10,20 +10,9 @@
 | 
|  #include "testing/gtest/include/gtest/gtest.h"
 | 
|  #include "testing/platform_test.h"
 | 
|  
 | 
| -namespace {
 | 
| -
 | 
| -const wchar_t kRegPathClientState[] = L"Software\\Google\\Update\\ClientState";
 | 
| -const wchar_t kRegPathClientStateMedium[] =
 | 
| -    L"Software\\Google\\Update\\ClientStateMedium";
 | 
| -const wchar_t kRegValueUsageStats[] = L"usagestats";
 | 
| -const wchar_t kUninstallArgumentsField[] = L"UninstallArguments";
 | 
| +using namespace install_static;
 | 
|  
 | 
| -const wchar_t kAppGuidCanary[] =
 | 
| -    L"{4ea16ac7-fd5a-47c3-875b-dbf4a2008c20}";
 | 
| -const wchar_t kAppGuidGoogleChrome[] =
 | 
| -    L"{8A69D345-D564-463c-AFF1-A69D9E530F96}";
 | 
| -const wchar_t kAppGuidGoogleBinaries[] =
 | 
| -    L"{4DC8B4CA-1BDA-483e-B5FA-D3C12E15B62D}";
 | 
| +namespace {
 | 
|  
 | 
|  const wchar_t kCanaryExePath[] =
 | 
|      L"C:\\Users\\user\\AppData\\Local\\Google\\Chrome SxS\\Application"
 | 
| @@ -35,11 +24,10 @@ const wchar_t kChromeUserExePath[] =
 | 
|  const wchar_t kChromiumExePath[] =
 | 
|      L"C:\\Users\\user\\AppData\\Local\\Chromium\\Application\\chrome.exe";
 | 
|  
 | 
| -
 | 
|  TEST(ChromeElfUtilTest, CanaryTest) {
 | 
| -  EXPECT_TRUE(IsCanary(kCanaryExePath));
 | 
| -  EXPECT_FALSE(IsCanary(kChromeUserExePath));
 | 
| -  EXPECT_FALSE(IsCanary(kChromiumExePath));
 | 
| +  EXPECT_TRUE(IsSxSChrome(kCanaryExePath));
 | 
| +  EXPECT_FALSE(IsSxSChrome(kChromeUserExePath));
 | 
| +  EXPECT_FALSE(IsSxSChrome(kChromiumExePath));
 | 
|  }
 | 
|  
 | 
|  TEST(ChromeElfUtilTest, SystemInstallTest) {
 | 
| @@ -119,6 +107,221 @@ class ChromeElfUtilTest :
 | 
|      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_EQ(L"-m", channel);
 | 
| +    } else {
 | 
| +      EXPECT_EQ(install_static::kChromeChannelStable, channel);
 | 
| +    }
 | 
| +
 | 
| +    SetChannelName(L"-full");
 | 
| +    install_static::GetChromeChannelName(!system_level_, add_modifier,
 | 
| +                                         &channel);
 | 
| +    if (multi_install_ && add_modifier) {
 | 
| +      EXPECT_EQ(L"-m", channel);
 | 
| +    } else {
 | 
| +      EXPECT_EQ(install_static::kChromeChannelStable, channel);
 | 
| +    }
 | 
| +
 | 
| +    SetChannelName(L"1.1-beta");
 | 
| +    install_static::GetChromeChannelName(!system_level_, add_modifier,
 | 
| +                                         &channel);
 | 
| +    if (multi_install_ && add_modifier) {
 | 
| +      EXPECT_EQ(L"beta-m", channel);
 | 
| +    } else {
 | 
| +      EXPECT_EQ(install_static::kChromeChannelBeta, channel);
 | 
| +    }
 | 
| +
 | 
| +    SetChannelName(L"1.1-beta");
 | 
| +    install_static::GetChromeChannelName(!system_level_, add_modifier,
 | 
| +                                         &channel);
 | 
| +    if (multi_install_ && add_modifier) {
 | 
| +      EXPECT_EQ(L"beta-m", channel);
 | 
| +    } else {
 | 
| +      EXPECT_EQ(install_static::kChromeChannelBeta, channel);
 | 
| +    }
 | 
| +
 | 
| +    SetChannelName(L"1.1-bar");
 | 
| +    install_static::GetChromeChannelName(!system_level_, add_modifier,
 | 
| +                                         &channel);
 | 
| +    if (multi_install_ && add_modifier) {
 | 
| +      EXPECT_EQ(L"beta-m", channel);
 | 
| +    } else {
 | 
| +      EXPECT_EQ(install_static::kChromeChannelBeta, channel);
 | 
| +    }
 | 
| +
 | 
| +    SetChannelName(L"1n1-foobar");
 | 
| +    install_static::GetChromeChannelName(!system_level_, add_modifier,
 | 
| +                                         &channel);
 | 
| +    if (multi_install_ && add_modifier) {
 | 
| +      EXPECT_EQ(L"beta-m", channel);
 | 
| +    } else {
 | 
| +      EXPECT_EQ(install_static::kChromeChannelBeta, channel);
 | 
| +    }
 | 
| +
 | 
| +    SetChannelName(L"foo-1.1-beta");
 | 
| +    install_static::GetChromeChannelName(!system_level_, add_modifier,
 | 
| +                                         &channel);
 | 
| +    if (multi_install_ && add_modifier) {
 | 
| +      EXPECT_EQ(L"-m", channel);
 | 
| +    } else {
 | 
| +      EXPECT_EQ(install_static::kChromeChannelStable, channel);
 | 
| +    }
 | 
| +    SetChannelName(L"2.0-beta");
 | 
| +    install_static::GetChromeChannelName(!system_level_, add_modifier,
 | 
| +                                         &channel);
 | 
| +    if (multi_install_ && add_modifier) {
 | 
| +      EXPECT_EQ(L"-m", channel);
 | 
| +    } else {
 | 
| +      EXPECT_EQ(install_static::kChromeChannelStable, channel);
 | 
| +    }
 | 
| +
 | 
| +    SetChannelName(L"2.0-dev");
 | 
| +    install_static::GetChromeChannelName(!system_level_, add_modifier,
 | 
| +                                         &channel);
 | 
| +    if (multi_install_ && add_modifier) {
 | 
| +      EXPECT_EQ(L"dev-m", channel);
 | 
| +    } else {
 | 
| +      EXPECT_EQ(install_static::kChromeChannelDev, channel);
 | 
| +    }
 | 
| +    SetChannelName(L"2.0-DEV");
 | 
| +    install_static::GetChromeChannelName(!system_level_, add_modifier,
 | 
| +                                         &channel);
 | 
| +    if (multi_install_ && add_modifier) {
 | 
| +      EXPECT_EQ(L"dev-m", channel);
 | 
| +    } else {
 | 
| +      EXPECT_EQ(install_static::kChromeChannelDev, channel);
 | 
| +    }
 | 
| +    SetChannelName(L"2.0-dev-eloper");
 | 
| +    install_static::GetChromeChannelName(!system_level_, add_modifier,
 | 
| +                                         &channel);
 | 
| +    if (multi_install_ && add_modifier) {
 | 
| +      EXPECT_EQ(L"dev-m", channel);
 | 
| +    } else {
 | 
| +      EXPECT_EQ(install_static::kChromeChannelDev, channel);
 | 
| +    }
 | 
| +    SetChannelName(L"2.0-doom");
 | 
| +    install_static::GetChromeChannelName(!system_level_, add_modifier,
 | 
| +                                         &channel);
 | 
| +    if (multi_install_ && add_modifier) {
 | 
| +      EXPECT_EQ(L"dev-m", channel);
 | 
| +    } else {
 | 
| +      EXPECT_EQ(install_static::kChromeChannelDev, channel);
 | 
| +    }
 | 
| +    SetChannelName(L"250-doom");
 | 
| +    install_static::GetChromeChannelName(!system_level_, add_modifier,
 | 
| +                                         &channel);
 | 
| +    if (multi_install_ && add_modifier) {
 | 
| +      EXPECT_EQ(L"dev-m", channel);
 | 
| +    } else {
 | 
| +      EXPECT_EQ(install_static::kChromeChannelDev, channel);
 | 
| +    }
 | 
| +    SetChannelName(L"bar-2.0-dev");
 | 
| +    install_static::GetChromeChannelName(!system_level_, add_modifier,
 | 
| +                                         &channel);
 | 
| +    if (multi_install_ && add_modifier) {
 | 
| +      EXPECT_EQ(L"-m", channel);
 | 
| +    } else {
 | 
| +      EXPECT_EQ(install_static::kChromeChannelStable, channel);
 | 
| +    }
 | 
| +    SetChannelName(L"1.0-dev");
 | 
| +    install_static::GetChromeChannelName(!system_level_, add_modifier,
 | 
| +                                         &channel);
 | 
| +    if (multi_install_ && add_modifier) {
 | 
| +      EXPECT_EQ(L"-m", channel);
 | 
| +    } else {
 | 
| +      EXPECT_EQ(install_static::kChromeChannelStable, channel);
 | 
| +    }
 | 
| +
 | 
| +    SetChannelName(L"x64-beta");
 | 
| +    install_static::GetChromeChannelName(!system_level_, add_modifier,
 | 
| +                                         &channel);
 | 
| +    if (multi_install_ && add_modifier) {
 | 
| +      EXPECT_EQ(L"beta-m", channel);
 | 
| +    } else {
 | 
| +      EXPECT_EQ(install_static::kChromeChannelBeta, channel);
 | 
| +    }
 | 
| +    SetChannelName(L"bar-x64-beta");
 | 
| +    install_static::GetChromeChannelName(!system_level_, add_modifier,
 | 
| +                                         &channel);
 | 
| +    if (multi_install_ && add_modifier) {
 | 
| +      EXPECT_EQ(L"beta-m", channel);
 | 
| +    } else {
 | 
| +      EXPECT_EQ(install_static::kChromeChannelBeta, channel);
 | 
| +    }
 | 
| +    SetChannelName(L"x64-Beta");
 | 
| +    install_static::GetChromeChannelName(!system_level_, add_modifier,
 | 
| +                                         &channel);
 | 
| +    if (multi_install_ && add_modifier) {
 | 
| +      EXPECT_EQ(L"beta-m", channel);
 | 
| +    } else {
 | 
| +      EXPECT_EQ(install_static::kChromeChannelBeta, channel);
 | 
| +    }
 | 
| +
 | 
| +    SetChannelName(L"x64-stable");
 | 
| +    install_static::GetChromeChannelName(!system_level_, add_modifier,
 | 
| +                                         &channel);
 | 
| +    if (multi_install_ && add_modifier) {
 | 
| +      EXPECT_EQ(L"-m", channel);
 | 
| +    } else {
 | 
| +      EXPECT_EQ(install_static::kChromeChannelStable, channel);
 | 
| +    }
 | 
| +    SetChannelName(L"baz-x64-stable");
 | 
| +    install_static::GetChromeChannelName(!system_level_, add_modifier,
 | 
| +                                         &channel);
 | 
| +    if (multi_install_ && add_modifier) {
 | 
| +      EXPECT_EQ(L"-m", channel);
 | 
| +    } else {
 | 
| +      EXPECT_EQ(install_static::kChromeChannelStable, channel);
 | 
| +    }
 | 
| +    SetChannelName(L"x64-Stable");
 | 
| +    install_static::GetChromeChannelName(!system_level_, add_modifier,
 | 
| +                                         &channel);
 | 
| +    if (multi_install_ && add_modifier) {
 | 
| +      EXPECT_EQ(L"-m", channel);
 | 
| +    } else {
 | 
| +      EXPECT_EQ(install_static::kChromeChannelStable, channel);
 | 
| +    }
 | 
| +
 | 
| +    SetChannelName(L"fuzzy");
 | 
| +    install_static::GetChromeChannelName(!system_level_, add_modifier,
 | 
| +                                         &channel);
 | 
| +    if (multi_install_ && add_modifier) {
 | 
| +      EXPECT_EQ(L"-m", channel);
 | 
| +    } else {
 | 
| +      EXPECT_EQ(install_static::kChromeChannelStable, channel);
 | 
| +    }
 | 
| +    SetChannelName(L"foo");
 | 
| +    install_static::GetChromeChannelName(!system_level_, add_modifier,
 | 
| +                                         &channel);
 | 
| +    if (multi_install_ && add_modifier) {
 | 
| +      EXPECT_EQ(L"-m", channel);
 | 
| +    } else {
 | 
| +      EXPECT_EQ(install_static::kChromeChannelStable, channel);
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
|    const wchar_t* app_guid_;
 | 
|    const wchar_t* chrome_path_;
 | 
|    bool system_level_;
 | 
| @@ -138,26 +341,26 @@ TEST_P(ChromeElfUtilTest, MultiInstallTest) {
 | 
|  }
 | 
|  
 | 
|  TEST_P(ChromeElfUtilTest, UsageStatsAbsent) {
 | 
| -  EXPECT_FALSE(AreUsageStatsEnabled(chrome_path_));
 | 
| +  EXPECT_FALSE(GetCollectStatsConsentForTesting(chrome_path_));
 | 
|  }
 | 
|  
 | 
|  TEST_P(ChromeElfUtilTest, UsageStatsZero) {
 | 
|    SetUsageStat(0, false);
 | 
| -  EXPECT_FALSE(AreUsageStatsEnabled(chrome_path_));
 | 
| +  EXPECT_FALSE(GetCollectStatsConsentForTesting(chrome_path_));
 | 
|  }
 | 
|  
 | 
|  TEST_P(ChromeElfUtilTest, UsageStatsOne) {
 | 
|    SetUsageStat(1, false);
 | 
| -  EXPECT_TRUE(AreUsageStatsEnabled(chrome_path_));
 | 
| +  EXPECT_TRUE(GetCollectStatsConsentForTesting(chrome_path_));
 | 
|    if (is_canary_) {
 | 
| -    EXPECT_FALSE(AreUsageStatsEnabled(kChromeUserExePath));
 | 
| -    EXPECT_FALSE(AreUsageStatsEnabled(kChromeSystemExePath));
 | 
| +    EXPECT_FALSE(GetCollectStatsConsentForTesting(kChromeUserExePath));
 | 
| +    EXPECT_FALSE(GetCollectStatsConsentForTesting(kChromeSystemExePath));
 | 
|    } else if (system_level_) {
 | 
| -    EXPECT_FALSE(AreUsageStatsEnabled(kCanaryExePath));
 | 
| -    EXPECT_FALSE(AreUsageStatsEnabled(kChromeUserExePath));
 | 
| +    EXPECT_FALSE(GetCollectStatsConsentForTesting(kCanaryExePath));
 | 
| +    EXPECT_FALSE(GetCollectStatsConsentForTesting(kChromeUserExePath));
 | 
|    } else {
 | 
| -    EXPECT_FALSE(AreUsageStatsEnabled(kCanaryExePath));
 | 
| -    EXPECT_FALSE(AreUsageStatsEnabled(kChromeSystemExePath));
 | 
| +    EXPECT_FALSE(GetCollectStatsConsentForTesting(kCanaryExePath));
 | 
| +    EXPECT_FALSE(GetCollectStatsConsentForTesting(kChromeSystemExePath));
 | 
|    }
 | 
|  }
 | 
|  
 | 
| @@ -165,16 +368,26 @@ TEST_P(ChromeElfUtilTest, UsageStatsZeroInStateMedium) {
 | 
|    if (!system_level_)
 | 
|      return;
 | 
|    SetUsageStat(0, true);
 | 
| -  EXPECT_FALSE(AreUsageStatsEnabled(chrome_path_));
 | 
| +  EXPECT_FALSE(GetCollectStatsConsentForTesting(chrome_path_));
 | 
|  }
 | 
|  
 | 
|  TEST_P(ChromeElfUtilTest, UsageStatsOneInStateMedium) {
 | 
|    if (!system_level_)
 | 
|      return;
 | 
|    SetUsageStat(1, true);
 | 
| -  EXPECT_TRUE(AreUsageStatsEnabled(chrome_path_));
 | 
| -  EXPECT_FALSE(AreUsageStatsEnabled(kCanaryExePath));
 | 
| -  EXPECT_FALSE(AreUsageStatsEnabled(kChromeUserExePath));
 | 
| +  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,
 | 
| @@ -186,4 +399,23 @@ INSTANTIATE_TEST_CASE_P(GoogleChrome, ChromeElfUtilTest,
 | 
|                                           testing::Values("user", "system"),
 | 
|                                           testing::Values("single", "multi")));
 | 
|  
 | 
| +// Tests the MatchPattern function in the install_static library.
 | 
| +// TODO(ananta)
 | 
| +// Move this to install_static_unittests.
 | 
| +// http://crbug.com/604923
 | 
| +TEST(MiscUtilTest, InstallStaticMatchPattern) {
 | 
| +  EXPECT_TRUE(install_static::MatchPattern(L"", L""));
 | 
| +  EXPECT_TRUE(install_static::MatchPattern(L"", L"*"));
 | 
| +  EXPECT_FALSE(install_static::MatchPattern(L"", L"*a"));
 | 
| +  EXPECT_FALSE(install_static::MatchPattern(L"", L"abc"));
 | 
| +  EXPECT_TRUE(install_static::MatchPattern(L"Hello1234", L"He??o*1*"));
 | 
| +  EXPECT_TRUE(install_static::MatchPattern(L"Foo", L"F*?"));
 | 
| +  EXPECT_TRUE(install_static::MatchPattern(L"Foo", L"F*"));
 | 
| +  EXPECT_FALSE(install_static::MatchPattern(L"Foo", L"F*b"));
 | 
| +  EXPECT_TRUE(install_static::MatchPattern(L"abcd", L"*c*d"));
 | 
| +  EXPECT_TRUE(install_static::MatchPattern(L"abcd", L"*?c*d"));
 | 
| +  EXPECT_FALSE(install_static::MatchPattern(L"abcd", L"abcd*efgh"));
 | 
| +  EXPECT_TRUE(install_static::MatchPattern(L"foobarabc", L"*bar*"));
 | 
| +}
 | 
| +
 | 
|  }  // namespace
 | 
| 
 |