Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/install_static/install_util.h" | 5 #include "chrome/install_static/install_util.h" |
| 6 | 6 |
| 7 #include <windows.h> | 7 #include <windows.h> |
| 8 #include <assert.h> | 8 #include <assert.h> |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <iostream> | 10 #include <iostream> |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 48 const wchar_t kRegValueUsageStats[] = L"usagestats"; | 48 const wchar_t kRegValueUsageStats[] = L"usagestats"; |
| 49 const wchar_t kUninstallArgumentsField[] = L"UninstallArguments"; | 49 const wchar_t kUninstallArgumentsField[] = L"UninstallArguments"; |
| 50 const wchar_t kMetricsReportingEnabled[] = L"MetricsReportingEnabled"; | 50 const wchar_t kMetricsReportingEnabled[] = L"MetricsReportingEnabled"; |
| 51 | 51 |
| 52 const wchar_t kAppGuidCanary[] = L"{4ea16ac7-fd5a-47c3-875b-dbf4a2008c20}"; | 52 const wchar_t kAppGuidCanary[] = L"{4ea16ac7-fd5a-47c3-875b-dbf4a2008c20}"; |
| 53 const wchar_t kAppGuidGoogleChrome[] = | 53 const wchar_t kAppGuidGoogleChrome[] = |
| 54 L"{8A69D345-D564-463c-AFF1-A69D9E530F96}"; | 54 L"{8A69D345-D564-463c-AFF1-A69D9E530F96}"; |
| 55 const wchar_t kAppGuidGoogleBinaries[] = | 55 const wchar_t kAppGuidGoogleBinaries[] = |
| 56 L"{4DC8B4CA-1BDA-483e-B5FA-D3C12E15B62D}"; | 56 L"{4DC8B4CA-1BDA-483e-B5FA-D3C12E15B62D}"; |
| 57 | 57 |
| 58 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.
| |
| 59 | |
| 58 const wchar_t kHeadless[] = L"CHROME_HEADLESS"; | 60 const wchar_t kHeadless[] = L"CHROME_HEADLESS"; |
| 59 const wchar_t kShowRestart[] = L"CHROME_CRASHED"; | 61 const wchar_t kShowRestart[] = L"CHROME_CRASHED"; |
| 60 const wchar_t kRestartInfo[] = L"CHROME_RESTART"; | 62 const wchar_t kRestartInfo[] = L"CHROME_RESTART"; |
| 61 const wchar_t kRtlLocale[] = L"RIGHT_TO_LEFT"; | 63 const wchar_t kRtlLocale[] = L"RIGHT_TO_LEFT"; |
| 62 | 64 |
| 63 const char kGpuProcess[] = "gpu-process"; | 65 const char kGpuProcess[] = "gpu-process"; |
| 64 const char kPpapiPluginProcess[] = "ppapi"; | 66 const char kPpapiPluginProcess[] = "ppapi"; |
| 65 const char kRendererProcess[] = "renderer"; | 67 const char kRendererProcess[] = "renderer"; |
| 66 const char kUtilityProcess[] = "utility"; | 68 const char kUtilityProcess[] = "utility"; |
| 67 const char kProcessType[] = "type"; | 69 const char kProcessType[] = "type"; |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 227 } else { | 229 } else { |
| 228 Trace(L"Failed to create directory %ls, last error is %d\n", | 230 Trace(L"Failed to create directory %ls, last error is %d\n", |
| 229 full_path_str, error_code); | 231 full_path_str, error_code); |
| 230 return false; | 232 return false; |
| 231 } | 233 } |
| 232 } | 234 } |
| 233 } | 235 } |
| 234 return true; | 236 return true; |
| 235 } | 237 } |
| 236 | 238 |
| 239 std::wstring GetChromeInstallRegistryPath() { | |
| 240 std::wstring registry_path = L"Software\\"; | |
| 241 registry_path += GetChromeInstallSubDirectory(); | |
| 242 return registry_path; | |
| 243 } | |
| 244 | |
| 237 bool GetCollectStatsConsentImpl(const std::wstring& exe_path) { | 245 bool GetCollectStatsConsentImpl(const std::wstring& exe_path) { |
| 238 bool enabled = true; | 246 bool enabled = true; |
| 239 bool controlled_by_policy = ReportingIsEnforcedByPolicy(&enabled); | 247 bool controlled_by_policy = ReportingIsEnforcedByPolicy(&enabled); |
| 240 | 248 |
| 241 if (controlled_by_policy && !enabled) | 249 if (controlled_by_policy && !enabled) |
| 242 return false; | 250 return false; |
| 243 | 251 |
| 244 bool system_install = IsSystemInstall(exe_path.c_str()); | 252 bool system_install = IsSystemInstall(exe_path.c_str()); |
| 245 std::wstring app_guid; | 253 std::wstring app_guid; |
| 246 | 254 |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 405 } | 413 } |
| 406 | 414 |
| 407 bool GetCollectStatsConsent() { | 415 bool GetCollectStatsConsent() { |
| 408 return GetCollectStatsConsentImpl(GetCurrentProcessExePath()); | 416 return GetCollectStatsConsentImpl(GetCurrentProcessExePath()); |
| 409 } | 417 } |
| 410 | 418 |
| 411 bool GetCollectStatsConsentForTesting(const std::wstring& exe_path) { | 419 bool GetCollectStatsConsentForTesting(const std::wstring& exe_path) { |
| 412 return GetCollectStatsConsentImpl(exe_path); | 420 return GetCollectStatsConsentImpl(exe_path); |
| 413 } | 421 } |
| 414 | 422 |
| 423 bool GetCollectStatsInSample() { | |
| 424 std::wstring registry_path = GetChromeInstallRegistryPath(); | |
| 425 | |
| 426 DWORD out_value = 0; | |
| 427 if (!nt::QueryRegValueDWORD(nt::HKCU, registry_path.c_str(), | |
| 428 kChromeStatsSampleKey, &out_value)) { | |
| 429 // If reading the value failed, treat it as though sampling isn't in effect, | |
| 430 // 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.
| |
| 431 return true; | |
| 432 } | |
| 433 return out_value == 1; | |
| 434 } | |
| 435 | |
| 436 bool SetCollectStatsInSample(bool in_sample) { | |
| 437 std::wstring registry_path = GetChromeInstallRegistryPath(); | |
| 438 | |
| 439 HANDLE key_handle = INVALID_HANDLE_VALUE; | |
| 440 if (!nt::CreateRegKey(nt::HKCU, registry_path.c_str(), KEY_SET_VALUE, | |
| 441 &key_handle)) { | |
| 442 nt::CloseRegKey(key_handle); | |
| 443 return false; | |
| 444 } | |
| 445 | |
| 446 return nt::SetRegValueDWORD(key_handle, kChromeStatsSampleKey, | |
| 447 in_sample ? 1 : 0); | |
| 448 } | |
| 449 | |
| 415 bool ReportingIsEnforcedByPolicy(bool* metrics_is_enforced_by_policy) { | 450 bool ReportingIsEnforcedByPolicy(bool* metrics_is_enforced_by_policy) { |
| 416 DWORD value = 0; | 451 DWORD value = 0; |
| 417 | 452 |
| 418 // First, try HKLM. | 453 // First, try HKLM. |
| 419 if (nt::QueryRegValueDWORD(nt::HKLM, kRegPathChromePolicy, | 454 if (nt::QueryRegValueDWORD(nt::HKLM, kRegPathChromePolicy, |
| 420 kMetricsReportingEnabled, &value)) { | 455 kMetricsReportingEnabled, &value)) { |
| 421 *metrics_is_enforced_by_policy = (value != 0); | 456 *metrics_is_enforced_by_policy = (value != 0); |
| 422 return true; | 457 return true; |
| 423 } | 458 } |
| 424 | 459 |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 671 result += kGoogleChromeInstallSubDir2; | 706 result += kGoogleChromeInstallSubDir2; |
| 672 if (IsSxSChrome(GetCurrentProcessExePath().c_str())) | 707 if (IsSxSChrome(GetCurrentProcessExePath().c_str())) |
| 673 result += kSxSSuffix; | 708 result += kSxSSuffix; |
| 674 return result; | 709 return result; |
| 675 #else | 710 #else |
| 676 return std::wstring(kChromiumInstallSubDir); | 711 return std::wstring(kChromiumInstallSubDir); |
| 677 #endif | 712 #endif |
| 678 } | 713 } |
| 679 | 714 |
| 680 std::wstring GetBrowserCrashDumpAttemptsRegistryPath() { | 715 std::wstring GetBrowserCrashDumpAttemptsRegistryPath() { |
| 681 std::wstring registry_path = L"Software\\"; | 716 std::wstring registry_path = GetChromeInstallRegistryPath(); |
| 682 registry_path += GetChromeInstallSubDirectory(); | |
| 683 registry_path += kBrowserCrashDumpMetricsSubKey; | 717 registry_path += kBrowserCrashDumpMetricsSubKey; |
| 684 return registry_path; | 718 return registry_path; |
| 685 } | 719 } |
| 686 | 720 |
| 687 bool MatchPattern(const std::wstring& source, const std::wstring& pattern) { | 721 bool MatchPattern(const std::wstring& source, const std::wstring& pattern) { |
| 688 assert(pattern.find(L"**") == std::wstring::npos); | 722 assert(pattern.find(L"**") == std::wstring::npos); |
| 689 return MatchPatternImpl(source, pattern, 0, 0); | 723 return MatchPatternImpl(source, pattern, 0, 0); |
| 690 } | 724 } |
| 691 | 725 |
| 692 std::string UTF16ToUTF8(const std::wstring& source) { | 726 std::string UTF16ToUTF8(const std::wstring& source) { |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 849 switch_value_end_offset = command_line_copy.length(); | 883 switch_value_end_offset = command_line_copy.length(); |
| 850 | 884 |
| 851 std::string switch_value = command_line_copy.substr( | 885 std::string switch_value = command_line_copy.substr( |
| 852 switch_value_start_offset, | 886 switch_value_start_offset, |
| 853 switch_value_end_offset - (switch_offset + switch_token.length())); | 887 switch_value_end_offset - (switch_offset + switch_token.length())); |
| 854 TrimT<std::string>(&switch_value); | 888 TrimT<std::string>(&switch_value); |
| 855 return switch_value; | 889 return switch_value; |
| 856 } | 890 } |
| 857 | 891 |
| 858 } // namespace install_static | 892 } // namespace install_static |
| OLD | NEW |