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

Unified Diff: chrome/browser/safe_browsing/chrome_cleaner/srt_field_trial_win.cc

Issue 2939973003: Download cleanup tool based on experiment config and OS bitness (Closed)
Patch Set: Created 3 years, 6 months 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
Index: chrome/browser/safe_browsing/chrome_cleaner/srt_field_trial_win.cc
diff --git a/chrome/browser/safe_browsing/chrome_cleaner/srt_field_trial_win.cc b/chrome/browser/safe_browsing/chrome_cleaner/srt_field_trial_win.cc
index a394077e24752dee0a91919730628f4bb1d5265d..32f4020aa6c0e4db8eceb5fc701858a9bd785409 100644
--- a/chrome/browser/safe_browsing/chrome_cleaner/srt_field_trial_win.cc
+++ b/chrome/browser/safe_browsing/chrome_cleaner/srt_field_trial_win.cc
@@ -7,7 +7,9 @@
#include "base/metrics/field_trial.h"
#include "base/metrics/histogram_macros.h"
#include "base/strings/string_util.h"
+#include "base/win/windows_version.h"
#include "components/variations/variations_associated_data.h"
+#include "url/origin.h"
namespace {
@@ -23,6 +25,9 @@ const char kSRTElevationAsNeededGroup[] = "AsNeeded";
const char kSRTReporterTrial[] = "srt_reporter";
const char kSRTReporterOffGroup[] = "Off";
+const char kDownloadRootPath[] =
+ "https://dl.google.com/dl/softwareremovaltool/win/";
+
// The download links of the Software Removal Tool.
const char kMainSRTDownloadURL[] =
"https://dl.google.com/dl"
@@ -55,12 +60,41 @@ bool IsSwReporterEnabled() {
kSRTReporterOffGroup, base::CompareCase::SENSITIVE);
}
-const char* GetSRTDownloadURL() {
+GURL GetLegacyDownloadURL() {
if (base::StartsWith(base::FieldTrialList::FindFullName(kSRTPromptTrial),
kSRTCanaryGroup, base::CompareCase::SENSITIVE)) {
- return kCanarySRTDownloadURL;
+ return GURL(kCanarySRTDownloadURL);
}
- return kMainSRTDownloadURL;
+ return GURL(kMainSRTDownloadURL);
+}
+
+GURL GetSRTDownloadURL() {
+ constexpr char kDownloadGroupParam[] = "download_group";
+ const std::string download_group =
+ variations::GetVariationParamValue(kSRTPromptTrial, kDownloadGroupParam);
+ if (download_group.empty())
+ return GetLegacyDownloadURL();
+
+ 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.
+ base::win::OSInfo::X86_ARCHITECTURE
+ ? "x86"
+ : "x64";
+
+ // Construct download URL using the following pattern:
+ // https://dl.google.com/.../win/{arch}/{group}/chrome_cleanup_tool.exe
+ std::string download_url_str = std::string(kDownloadRootPath) + architecture +
+ "/" + download_group +
+ "/chrome_cleanup_tool.exe?chrome-prompt=1";
+ GURL download_url(download_url_str);
+
+ // Ensure URL construction didn't change origin.
+ 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.
+ const url::Origin kKnownGoodOrigin(kDownloadRoot);
+ url::Origin current_origin(download_url);
+ if (!current_origin.IsSameOriginWith(kKnownGoodOrigin))
+ return GetLegacyDownloadURL();
+
+ return download_url;
}
std::string GetIncomingSRTSeed() {

Powered by Google App Engine
This is Rietveld 408576698