Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/browser/safe_browsing/chrome_cleaner/srt_field_trial_win.h" | 5 #include "chrome/browser/safe_browsing/chrome_cleaner/srt_field_trial_win.h" |
| 6 | 6 |
| 7 #include "base/metrics/field_trial.h" | 7 #include "base/metrics/field_trial.h" |
| 8 #include "base/metrics/histogram_macros.h" | 8 #include "base/metrics/histogram_macros.h" |
| 9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
| 10 #include "base/win/windows_version.h" | |
| 10 #include "components/variations/variations_associated_data.h" | 11 #include "components/variations/variations_associated_data.h" |
| 12 #include "url/origin.h" | |
| 11 | 13 |
| 12 namespace { | 14 namespace { |
| 13 | 15 |
| 14 // Field trial strings. | 16 // Field trial strings. |
| 15 const char kSRTPromptTrial[] = "SRTPromptFieldTrial"; | 17 const char kSRTPromptTrial[] = "SRTPromptFieldTrial"; |
| 16 const char kSRTCanaryGroup[] = "SRTCanary"; | 18 const char kSRTCanaryGroup[] = "SRTCanary"; |
| 17 const char kSRTPromptOffGroup[] = "Off"; | 19 const char kSRTPromptOffGroup[] = "Off"; |
| 18 const char kSRTPromptSeedParam[] = "Seed"; | 20 const char kSRTPromptSeedParam[] = "Seed"; |
| 19 | 21 |
| 20 const char kSRTElevationTrial[] = "SRTElevation"; | 22 const char kSRTElevationTrial[] = "SRTElevation"; |
| 21 const char kSRTElevationAsNeededGroup[] = "AsNeeded"; | 23 const char kSRTElevationAsNeededGroup[] = "AsNeeded"; |
| 22 | 24 |
| 23 const char kSRTReporterTrial[] = "srt_reporter"; | 25 const char kSRTReporterTrial[] = "srt_reporter"; |
| 24 const char kSRTReporterOffGroup[] = "Off"; | 26 const char kSRTReporterOffGroup[] = "Off"; |
| 25 | 27 |
| 28 const char kDownloadRootPath[] = | |
| 29 "https://dl.google.com/dl/softwareremovaltool/win/"; | |
| 30 | |
| 26 // The download links of the Software Removal Tool. | 31 // The download links of the Software Removal Tool. |
| 27 const char kMainSRTDownloadURL[] = | 32 const char kMainSRTDownloadURL[] = |
| 28 "https://dl.google.com/dl" | 33 "https://dl.google.com/dl" |
| 29 "/softwareremovaltool/win/chrome_cleanup_tool.exe?chrome-prompt=1"; | 34 "/softwareremovaltool/win/chrome_cleanup_tool.exe?chrome-prompt=1"; |
| 30 const char kCanarySRTDownloadURL[] = | 35 const char kCanarySRTDownloadURL[] = |
| 31 "https://dl.google.com/dl" | 36 "https://dl.google.com/dl" |
| 32 "/softwareremovaltool/win/c/chrome_cleanup_tool.exe?chrome-prompt=1"; | 37 "/softwareremovaltool/win/c/chrome_cleanup_tool.exe?chrome-prompt=1"; |
| 33 | 38 |
| 34 } // namespace | 39 } // namespace |
| 35 | 40 |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 48 base::FieldTrialList::FindFullName(kSRTElevationTrial), | 53 base::FieldTrialList::FindFullName(kSRTElevationTrial), |
| 49 kSRTElevationAsNeededGroup, base::CompareCase::SENSITIVE); | 54 kSRTElevationAsNeededGroup, base::CompareCase::SENSITIVE); |
| 50 } | 55 } |
| 51 | 56 |
| 52 bool IsSwReporterEnabled() { | 57 bool IsSwReporterEnabled() { |
| 53 return !base::StartsWith( | 58 return !base::StartsWith( |
| 54 base::FieldTrialList::FindFullName(kSRTReporterTrial), | 59 base::FieldTrialList::FindFullName(kSRTReporterTrial), |
| 55 kSRTReporterOffGroup, base::CompareCase::SENSITIVE); | 60 kSRTReporterOffGroup, base::CompareCase::SENSITIVE); |
| 56 } | 61 } |
| 57 | 62 |
| 58 const char* GetSRTDownloadURL() { | 63 GURL GetLegacyDownloadURL() { |
| 59 if (base::StartsWith(base::FieldTrialList::FindFullName(kSRTPromptTrial), | 64 if (base::StartsWith(base::FieldTrialList::FindFullName(kSRTPromptTrial), |
| 60 kSRTCanaryGroup, base::CompareCase::SENSITIVE)) { | 65 kSRTCanaryGroup, base::CompareCase::SENSITIVE)) { |
| 61 return kCanarySRTDownloadURL; | 66 return GURL(kCanarySRTDownloadURL); |
| 62 } | 67 } |
| 63 return kMainSRTDownloadURL; | 68 return GURL(kMainSRTDownloadURL); |
| 69 } | |
| 70 | |
| 71 GURL GetSRTDownloadURL() { | |
| 72 constexpr char kDownloadGroupParam[] = "download_group"; | |
| 73 const std::string download_group = | |
| 74 variations::GetVariationParamValue(kSRTPromptTrial, kDownloadGroupParam); | |
| 75 if (download_group.empty()) | |
| 76 return GetLegacyDownloadURL(); | |
| 77 | |
| 78 const char* architecture = base::win::OSInfo::GetInstance()->architecture() == | |
|
csharp
2017/06/14 20:14:29
why not string instead of char*?
veranika
2017/06/15 18:00:19
Done.
| |
| 79 base::win::OSInfo::X86_ARCHITECTURE | |
| 80 ? "x86" | |
| 81 : "x64"; | |
| 82 | |
| 83 // Construct download URL using the following pattern: | |
| 84 // https://dl.google.com/.../win/{arch}/{group}/chrome_cleanup_tool.exe | |
| 85 std::string download_url_str = std::string(kDownloadRootPath) + architecture + | |
| 86 "/" + download_group + | |
| 87 "/chrome_cleanup_tool.exe?chrome-prompt=1"; | |
| 88 GURL download_url(download_url_str); | |
| 89 | |
| 90 // Ensure URL construction didn't change origin. | |
| 91 const GURL kDownloadRoot(kDownloadRootPath); | |
|
csharp
2017/06/14 20:14:29
nit: I think since these are just const for this c
veranika
2017/06/15 18:00:20
Done.
| |
| 92 const url::Origin kKnownGoodOrigin(kDownloadRoot); | |
| 93 url::Origin current_origin(download_url); | |
| 94 if (!current_origin.IsSameOriginWith(kKnownGoodOrigin)) | |
| 95 return GetLegacyDownloadURL(); | |
| 96 | |
| 97 return download_url; | |
| 64 } | 98 } |
| 65 | 99 |
| 66 std::string GetIncomingSRTSeed() { | 100 std::string GetIncomingSRTSeed() { |
| 67 return variations::GetVariationParamValue(kSRTPromptTrial, | 101 return variations::GetVariationParamValue(kSRTPromptTrial, |
| 68 kSRTPromptSeedParam); | 102 kSRTPromptSeedParam); |
| 69 } | 103 } |
| 70 | 104 |
| 71 void RecordSRTPromptHistogram(SRTPromptHistogramValue value) { | 105 void RecordSRTPromptHistogram(SRTPromptHistogramValue value) { |
| 72 UMA_HISTOGRAM_ENUMERATION("SoftwareReporter.PromptUsage", value, | 106 UMA_HISTOGRAM_ENUMERATION("SoftwareReporter.PromptUsage", value, |
| 73 SRT_PROMPT_MAX); | 107 SRT_PROMPT_MAX); |
| 74 } | 108 } |
| 75 | 109 |
| 76 } // namespace safe_browsing | 110 } // namespace safe_browsing |
| OLD | NEW |