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

Unified Diff: chrome/browser/metrics/variations/chrome_variations_service_client.cc

Issue 2465003002: Removing Variations support for google_update_experiment_id. (Closed)
Patch Set: Fix typo. Created 4 years, 1 month 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/metrics/variations/chrome_variations_service_client.cc
diff --git a/chrome/browser/metrics/variations/chrome_variations_service_client.cc b/chrome/browser/metrics/variations/chrome_variations_service_client.cc
index 72608016ec6f6efbe11f2143bc6248fa9584e880..e62accbad86ac73541b747b00e28eeb2145853d4 100644
--- a/chrome/browser/metrics/variations/chrome_variations_service_client.cc
+++ b/chrome/browser/metrics/variations/chrome_variations_service_client.cc
@@ -11,6 +11,17 @@
#include "components/version_info/version_info.h"
#include "content/public/browser/browser_thread.h"
+#if defined(OS_WIN)
+#include "base/files/file_path.h"
+#include "base/metrics/histogram_macros.h"
+#include "base/path_service.h"
+#include "base/strings/string16.h"
+#include "base/threading/thread_restrictions.h"
+#include "chrome/installer/util/google_update_settings.h"
+#include "chrome/installer/util/install_util.h"
+#include "components/variations/experiment_labels.h"
+#endif
+
#if !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
#include "chrome/browser/upgrade_detector_impl.h"
#endif
@@ -36,6 +47,51 @@ base::Version GetVersionForSimulation() {
return base::Version(version_info::GetVersionNumber());
}
+#if defined(OS_WIN)
+// Clear all Variations experiment labels from Google Update Registry Labels.
+// TODO(jwd): Remove this once we're confident most clients no longer have these
+// labels (M57-M58 timeframe).
+void ClearGoogleUpdateRegistryLabels() {
+ base::ThreadRestrictions::AssertIOAllowed();
+
+ // Note that all registry operations are done here on the UI thread as there
+ // are no threading restrictions on them.
+ base::FilePath chrome_exe;
+ if (!PathService::Get(base::FILE_EXE, &chrome_exe)) {
+ NOTREACHED() << "Failed to get chrome exe path";
+ return;
+ }
+ const bool is_system_install = !InstallUtil::IsPerUserInstall(chrome_exe);
+
+ // Read the current bits from the registry.
+ base::string16 registry_labels;
+ bool success = GoogleUpdateSettings::ReadExperimentLabels(is_system_install,
+ &registry_labels);
+
+ if (!success) {
+ DVLOG(1) << "Error reading Variation labels from the registry.";
+ return;
+ }
+
+ // Only keep the non-Variations contents of experiment_labels.
+ const base::string16 labels_to_keep =
+ variations::ExtractNonVariationLabels(registry_labels);
+
+ // This is a weak check, which can give false positives if the implementation
+ // of variations::ExtractNonVariationLabels changes, but should be fine for
+ // temporary code.
+ bool needs_clearing = labels_to_keep != registry_labels;
+
+ UMA_HISTOGRAM_BOOLEAN("Variations.GoogleUpdateRegistryLabelsNeedClearing",
+ needs_clearing);
+
+ if (!needs_clearing)
+ return;
+
+ GoogleUpdateSettings::SetExperimentLabels(is_system_install, labels_to_keep);
+}
+#endif // defined(OS_WIN)
+
} // namespace
ChromeVariationsServiceClient::ChromeVariationsServiceClient() {}
@@ -82,12 +138,12 @@ bool ChromeVariationsServiceClient::OverridesRestrictParameter(
void ChromeVariationsServiceClient::OnInitialStartup() {
#if defined(OS_WIN)
- StartGoogleUpdateRegistrySync();
+ // TODO(jwd): Remove this once we're confident most clients no longer have
+ // these labels (M57-M58 timeframe).
+ // Do the work on a blocking pool thread, as chrome://profiler has shown that
+ // it can cause jank if done on the UI thrread.
+ content::BrowserThread::GetBlockingPool()->PostDelayedTask(
+ FROM_HERE, base::Bind(&ClearGoogleUpdateRegistryLabels),
+ base::TimeDelta::FromSeconds(5));
#endif
}
-
-#if defined(OS_WIN)
-void ChromeVariationsServiceClient::StartGoogleUpdateRegistrySync() {
- registry_syncer_.RequestRegistrySync();
-}
-#endif

Powered by Google App Engine
This is Rietveld 408576698