Index: chrome/install_static/install_util.cc |
diff --git a/chrome/install_static/install_util.cc b/chrome/install_static/install_util.cc |
index c31b90e8927cd71f4cedf026d3b44da0f2112046..a9965159a5d60b4cf168d3710ddfe697bf85e7ab 100644 |
--- a/chrome/install_static/install_util.cc |
+++ b/chrome/install_static/install_util.cc |
@@ -55,6 +55,8 @@ const wchar_t kAppGuidGoogleChrome[] = |
const wchar_t kAppGuidGoogleBinaries[] = |
L"{4DC8B4CA-1BDA-483e-B5FA-D3C12E15B62D}"; |
+const wchar_t kChromeStatsSampleKey[] = L"UsageStatsInSample"; |
Alexei Svitkine (slow)
2016/08/12 17:47:48
How about using a similar variable naming conventi
jwd
2016/08/12 20:04:30
Done.
|
+ |
const wchar_t kHeadless[] = L"CHROME_HEADLESS"; |
const wchar_t kShowRestart[] = L"CHROME_CRASHED"; |
const wchar_t kRestartInfo[] = L"CHROME_RESTART"; |
@@ -234,6 +236,12 @@ bool RecursiveDirectoryCreate(const std::wstring& full_path) { |
return true; |
} |
+std::wstring GetChromeInstallRegistryPath() { |
+ std::wstring registry_path = L"Software\\"; |
+ registry_path += GetChromeInstallSubDirectory(); |
+ return registry_path; |
+} |
+ |
bool GetCollectStatsConsentImpl(const std::wstring& exe_path) { |
bool enabled = true; |
bool controlled_by_policy = ReportingIsEnforcedByPolicy(&enabled); |
@@ -412,6 +420,33 @@ bool GetCollectStatsConsentForTesting(const std::wstring& exe_path) { |
return GetCollectStatsConsentImpl(exe_path); |
} |
+bool GetCollectStatsInSample() { |
+ std::wstring registry_path = GetChromeInstallRegistryPath(); |
+ |
+ DWORD out_value = 0; |
+ if (!nt::QueryRegValueDWORD(nt::HKCU, registry_path.c_str(), |
+ kChromeStatsSampleKey, &out_value)) { |
+ // If reading the value failed, treat it as though sampling isn't in effect, |
+ // implicitly meaning this install in in-sample. |
Alexei Svitkine (slow)
2016/08/12 17:47:48
Nit: "this install in sample" -> "this install is
jwd
2016/08/12 20:04:30
Done.
|
+ return true; |
+ } |
+ return out_value == 1; |
+} |
+ |
+bool SetCollectStatsInSample(bool in_sample) { |
+ std::wstring registry_path = GetChromeInstallRegistryPath(); |
+ |
+ HANDLE key_handle = INVALID_HANDLE_VALUE; |
+ if (!nt::CreateRegKey(nt::HKCU, registry_path.c_str(), KEY_SET_VALUE, |
+ &key_handle)) { |
+ nt::CloseRegKey(key_handle); |
+ return false; |
+ } |
+ |
+ return nt::SetRegValueDWORD(key_handle, kChromeStatsSampleKey, |
+ in_sample ? 1 : 0); |
+} |
+ |
bool ReportingIsEnforcedByPolicy(bool* metrics_is_enforced_by_policy) { |
DWORD value = 0; |
@@ -678,8 +713,7 @@ std::wstring GetChromeInstallSubDirectory() { |
} |
std::wstring GetBrowserCrashDumpAttemptsRegistryPath() { |
- std::wstring registry_path = L"Software\\"; |
- registry_path += GetChromeInstallSubDirectory(); |
+ std::wstring registry_path = GetChromeInstallRegistryPath(); |
registry_path += kBrowserCrashDumpMetricsSubKey; |
return registry_path; |
} |