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

Unified Diff: base/metrics/field_trial.cc

Issue 1962623005: More instrumentation to diagnose an Android renderer crash. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix typo. Created 4 years, 7 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
« no previous file with comments | « base/metrics/field_trial.h ('k') | chrome/browser/metrics/field_trial_synchronizer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/metrics/field_trial.cc
diff --git a/base/metrics/field_trial.cc b/base/metrics/field_trial.cc
index 4d4fdcebde56b38bec2acb8a44679c61d3bd65aa..b5dea9b3628c3f9a5fc347949651387e089684ac 100644
--- a/base/metrics/field_trial.cc
+++ b/base/metrics/field_trial.cc
@@ -10,6 +10,7 @@
#include "base/lazy_instance.h"
#include "base/logging.h"
#include "base/rand_util.h"
+#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
@@ -123,8 +124,14 @@ void CheckTrialGroup(const std::string& trial_name,
base::LazyInstance<std::map<std::string, std::string>>::Leaky g_seen_states =
LAZY_INSTANCE_INITIALIZER;
+// A debug token generated during FieldTrialList construction. Used to diagnose
+// crbug.com/359406.
+// TODO(asvitkine): Remove when crbug.com/359406 is resolved.
+int32_t g_debug_token = -1;
+
// Tracks whether |g_seen_states| is used. Defaults to false, because unit tests
-// will create multiple FieldTrialList instances.
+// will create multiple FieldTrialList instances. Also controls whether
+// |g_debug_token| is included in the field trial state string.
bool g_use_global_check_states = false;
} // namespace
@@ -262,6 +269,9 @@ FieldTrial::FieldTrial(const std::string& trial_name,
DCHECK_GT(total_probability, 0);
DCHECK(!trial_name_.empty());
DCHECK(!default_group_name_.empty());
+
+ if (g_debug_token == -1)
+ g_debug_token = RandInt(1, INT32_MAX);
}
FieldTrial::~FieldTrial() {}
@@ -356,6 +366,11 @@ void FieldTrialList::EnableGlobalStateChecks() {
}
// static
+int32_t FieldTrialList::GetDebugToken() {
+ return g_debug_token;
+}
+
+// static
FieldTrial* FieldTrialList::FactoryGetFieldTrial(
const std::string& trial_name,
FieldTrial::Probability total_probability,
@@ -484,6 +499,12 @@ void FieldTrialList::StatesToString(std::string* output) {
output->append(it->group_name);
output->append(1, kPersistentStringSeparator);
}
+ if (g_use_global_check_states) {
+ output->append("DebugToken");
+ output->append(1, kPersistentStringSeparator);
+ output->append(IntToString(g_debug_token));
+ output->append(1, kPersistentStringSeparator);
+ }
}
// static
« no previous file with comments | « base/metrics/field_trial.h ('k') | chrome/browser/metrics/field_trial_synchronizer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698