about_flags::ReportCustomFlags() should use signed 32-bit IDs.
On 32-bit architectures UMA Histogram IDs (enum
LoginCustomFlags) are negative. So HistogramBase::Sample
(which is int32_t) should be used.
BUG=408196
TEST=manual
Review URL: https://codereview.chromium.org/509923003
Cr-Commit-Position: refs/heads/master@{#293062}
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 34fbe4c..4fa0f57 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -67,7 +67,7 @@
namespace about_flags {
-const uint32_t kBadSwitchFormatHistogramId = 0;
+const base::HistogramBase::Sample kBadSwitchFormatHistogramId = 0;
// Macros to simplify specifying the type.
#define SINGLE_VALUE_TYPE_AND_VALUE(command_line_switch, switch_value) \
@@ -2265,8 +2265,9 @@
content::RecordAction(UserMetricsAction("StartupTick"));
}
-uint32_t GetSwitchUMAId(const std::string& switch_name) {
- return static_cast<uint32_t>(metrics::HashMetricName(switch_name));
+base::HistogramBase::Sample GetSwitchUMAId(const std::string& switch_name) {
+ return static_cast<base::HistogramBase::Sample>(
+ metrics::HashMetricName(switch_name));
}
void ReportCustomFlags(const std::string& uma_histogram_hame,
diff --git a/chrome/browser/about_flags.h b/chrome/browser/about_flags.h
index 7a229a7..ed455a4e 100644
--- a/chrome/browser/about_flags.h
+++ b/chrome/browser/about_flags.h
@@ -12,6 +12,7 @@
#include <string>
#include "base/command_line.h"
+#include "base/metrics/histogram_base.h"
#include "base/strings/string16.h"
class PrefService;
@@ -26,7 +27,7 @@
// This value is reported as switch histogram ID if switch name has unknown
// format.
-extern const uint32_t kBadSwitchFormatHistogramId;
+extern const base::HistogramBase::Sample kBadSwitchFormatHistogramId;
// Enumeration of OSs.
// This is exposed only for testing.
@@ -171,7 +172,7 @@
void RecordUMAStatistics(FlagsStorage* flags_storage);
// Returns the UMA id for the specified switch name.
-uint32_t GetSwitchUMAId(const std::string& switch_name);
+base::HistogramBase::Sample GetSwitchUMAId(const std::string& switch_name);
// Sends stats (as UMA histogram) about command_line_difference.
// This is used on ChromeOS to report flags that lead to browser restart.
diff --git a/chrome/browser/about_flags_unittest.cc b/chrome/browser/about_flags_unittest.cc
index 6e0c938..a666043a 100644
--- a/chrome/browser/about_flags_unittest.cc
+++ b/chrome/browser/about_flags_unittest.cc
@@ -41,19 +41,20 @@
const char kEnableDisableValue1[] = "value1";
const char kEnableDisableValue2[] = "value2";
-typedef std::map<std::string, uint32_t> SwitchToIdMap;
+typedef base::HistogramBase::Sample Sample;
+typedef std::map<std::string, Sample> SwitchToIdMap;
// This is a helper function to the ReadEnumFromHistogramsXml().
// Extracts single enum (with integer values) from histograms.xml.
// Expects |reader| to point at given enum.
// Returns map { value => label }.
// Returns empty map on error.
-std::map<uint32_t, std::string> ParseEnumFromHistogramsXml(
+std::map<Sample, std::string> ParseEnumFromHistogramsXml(
const std::string& enum_name,
XmlReader* reader) {
int entries_index = -1;
- std::map<uint32_t, std::string> result;
+ std::map<Sample, std::string> result;
bool success = true;
while (true) {
@@ -80,8 +81,8 @@
success = false;
}
- uint32_t value;
- if (has_value && !base::StringToUint(value_str, &value)) {
+ Sample value;
+ if (has_value && !base::StringToInt(value_str, &value)) {
ADD_FAILURE() << "Bad " << enum_name << " enum entry (at index "
<< entries_index << ", label='" << label
<< "', value_str='" << value_str
@@ -105,7 +106,7 @@
// until possible.
reader->Next();
}
- return (success ? result : std::map<uint32_t, std::string>());
+ return (success ? result : std::map<Sample, std::string>());
}
// Find and read given enum (with integer values) from histograms.xml.
@@ -117,10 +118,10 @@
// becomes:
// { 9 => "enable-pinch-virtual-viewport" }
// Returns empty map on error.
-std::map<uint32_t, std::string> ReadEnumFromHistogramsXml(
+std::map<Sample, std::string> ReadEnumFromHistogramsXml(
const std::string& enum_name,
XmlReader* histograms_xml) {
- std::map<uint32_t, std::string> login_custom_flags;
+ std::map<Sample, std::string> login_custom_flags;
// Implement simple depth first search.
while (true) {
@@ -131,7 +132,7 @@
if (!login_custom_flags.empty()) {
EXPECT_TRUE(login_custom_flags.empty())
<< "Duplicate enum '" << enum_name << "' found in histograms.xml";
- return std::map<uint32_t, std::string>();
+ return std::map<Sample, std::string>();
}
const bool got_into_enum = histograms_xml->Read();
@@ -147,7 +148,7 @@
<< "' (looks empty) found in histograms.xml.";
}
if (login_custom_flags.empty())
- return std::map<uint32_t, std::string>();
+ return std::map<Sample, std::string>();
}
}
// Go deeper if possible (stops at the closing tag of the deepest node).
@@ -676,9 +677,9 @@
// This is a helper function to check that all IDs in enum LoginCustomFlags in
// histograms.xml are unique.
void SetSwitchToHistogramIdMapping(const std::string& switch_name,
- const uint32_t switch_histogram_id,
- std::map<std::string, uint32_t>* out_map) {
- const std::pair<std::map<std::string, uint32_t>::iterator, bool> status =
+ const Sample switch_histogram_id,
+ std::map<std::string, Sample>* out_map) {
+ const std::pair<std::map<std::string, Sample>::iterator, bool> status =
out_map->insert(std::make_pair(switch_name, switch_histogram_id));
if (!status.second) {
EXPECT_TRUE(status.first->second == switch_histogram_id)
@@ -690,9 +691,9 @@
// This method generates a hint for the user for what string should be added
// to the enum LoginCustomFlags to make in consistent.
std::string GetHistogramEnumEntryText(const std::string& switch_name,
- uint32_t value) {
+ Sample value) {
return base::StringPrintf(
- "<int value=\"%u\" label=\"%s\"/>", value, switch_name.c_str());
+ "<int value=\"%d\" label=\"%s\"/>", value, switch_name.c_str());
}
};
@@ -708,7 +709,7 @@
XmlReader histograms_xml;
ASSERT_TRUE(histograms_xml.LoadFile(
FilePathStringTypeToString(histograms_xml_file_path.value())));
- std::map<uint32_t, std::string> login_custom_flags =
+ std::map<Sample, std::string> login_custom_flags =
ReadEnumFromHistogramsXml("LoginCustomFlags", &histograms_xml);
ASSERT_TRUE(login_custom_flags.size())
<< "Error reading enum 'LoginCustomFlags' from histograms.xml.";
@@ -722,7 +723,7 @@
"Consider adding entry:\n"
<< " " << GetHistogramEnumEntryText("BAD_FLAG_FORMAT", 0);
// Check that all LoginCustomFlags entries have correct values.
- for (std::map<uint32_t, std::string>::const_iterator it =
+ for (std::map<Sample, std::string>::const_iterator it =
login_custom_flags.begin();
it != login_custom_flags.end();
++it) {
@@ -732,7 +733,7 @@
"", it->first, &histograms_xml_switches_ids);
continue;
}
- const uint32_t uma_id = GetSwitchUMAId(it->second);
+ const Sample uma_id = GetSwitchUMAId(it->second);
EXPECT_EQ(uma_id, it->first)
<< "histograms.xml enum LoginCustomFlags "
"entry '" << it->second << "' has incorrect value=" << it->first
@@ -750,7 +751,7 @@
// Skip empty placeholders.
if (it->empty())
continue;
- const uint32_t uma_id = GetSwitchUMAId(*it);
+ const Sample uma_id = GetSwitchUMAId(*it);
EXPECT_NE(kBadSwitchFormatHistogramId, uma_id)
<< "Command-line switch '" << *it
<< "' from about_flags.cc has UMA ID equal to reserved value "
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index ef21c84..e124dc4 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -44132,6 +44132,147 @@
-->
<summary>Chrome flags that lead to chrome restart on ChromeOS.</summary>
+ <int value="-2137755780" label="enable-reader-mode-toolbar-icon"/>
+ <int value="-2132591642" label="enable-input-view"/>
+ <int value="-2117201726" label="disable-gpu-rasterization"/>
+ <int value="-2114831248" label="disable-new-ntp"/>
+ <int value="-2098610409" label="disable-lcd-text"/>
+ <int value="-2097515669" label="disable-cast"/>
+ <int value="-2077268643" label="disable-device-enumeration"/>
+ <int value="-2052416224" label="enable-zero-suggest-ether-noserp"/>
+ <int value="-2047822258" label="enable-avfoundation"/>
+ <int value="-2025367104" label="enable-material-design-ntp"/>
+ <int value="-2020024440" label="scroll-end-effect"/>
+ <int value="-2008272679" label="disable-webrtc-hw-encoding"/>
+ <int value="-2003354337"
+ label="enable-search-button-in-omnibox-for-str-or-iip"/>
+ <int value="-1985025593" label="file-manager-enable-new-gallery"/>
+ <int value="-1972383451" label="disable-pinch"/>
+ <int value="-1940806558" label="enable-syncfs-directory-operation"/>
+ <int value="-1930720286" label="nacl-debug-mask"/>
+ <int value="-1928198763" label="enable-async-dns"/>
+ <int value="-1925117279" label="disable-quic-https"/>
+ <int value="-1888273969" label="tab-capture-upscale-quality"/>
+ <int value="-1876881908"
+ label="disable-infobar-for-protected-media-identifier"/>
+ <int value="-1874908826" label="enable-instant-search-clicks"/>
+ <int value="-1870961970" label="enable-filemanager-mtp"/>
+ <int value="-1847835522" label="disable-touch-adjustment"/>
+ <int value="-1838482444" label="disable-settings-window"/>
+ <int value="-1835975804" label="disable-offline-auto-reload"/>
+ <int value="-1833149810" label="enable-accessibility-tab-switcher"/>
+ <int value="-1767470652" label="out-of-process-pdf"/>
+ <int value="-1746767834" label="ssl-interstitial-v2-gray"/>
+ <int value="-1740519217" label="disable-software-rasterizer"/>
+ <int value="-1735643253" label="enable-display-list-2d-canvas"/>
+ <int value="-1725507605" label="enable-web-midi"/>
+ <int value="-1719833926" label="disable-answers-in-suggest"/>
+ <int value="-1716654100" label="tab-capture-downscale-quality"/>
+ <int value="-1703709912" label="enable-new-ntp"/>
+ <int value="-1703308540" label="disable-webaudio"/>
+ <int value="-1696366449" label="disable-permissions-bubbles"/>
+ <int value="-1619757314" label="touch-scrolling-mode"/>
+ <int value="-1605567628" label="disable-overlay-scrollbar"/>
+ <int value="-1596559650" label="max-tiles-for-interest-area"/>
+ <int value="-1571841513" label="enable-devtools-experiments"/>
+ <int value="-1553477903" label="ash-disable-text-filtering-in-overview-mode"/>
+ <int value="-1546903171" label="enable-touch-drag-drop"/>
+ <int value="-1510839574" label="disable-sync-synced-notifications"/>
+ <int value="-1497338981" label="disable-accelerated-overflow-scroll"/>
+ <int value="-1482685863" label="enable-request-tablet-site"/>
+ <int value="-1460462432" label="disable-media-source"/>
+ <int value="-1433087548" label="enable-app-install-alerts"/>
+ <int value="-1419788257" label="enable-experimental-hotwording"/>
+ <int value="-1408288176" label="enable-account-consistency"/>
+ <int value="-1399753480" label="disable-harfbuzz-rendertext"/>
+ <int value="-1399419572" label="enable-app-list"/>
+ <int value="-1392562498" label="disable-origin-chip"/>
+ <int value="-1375111024" label="enable-fixed-position-compositing"/>
+ <int value="-1349872906"
+ label="disallow-autofill-sync-credential-for-reauth"/>
+ <int value="-1341092934" label="enable-accelerated-overflow-scroll"/>
+ <int value="-1340055960" label="enable-streamlined-hosted-apps"/>
+ <int value="-1334327410" label="ash-enable-touch-view-testing"/>
+ <int value="-1319688939" label="ignore-gpu-blacklist"/>
+ <int value="-1285021473" label="save-page-as-mhtml"/>
+ <int value="-1245459041" label="enable-zero-suggest-personalized"/>
+ <int value="-1241747717" label="enable-android-password-link"/>
+ <int value="-1218608640" label="disable-offline-load-stale-cache"/>
+ <int value="-1212273428" label="enable-experimental-app-list"/>
+ <int value="-1201183153" label="enable-centered-app-list"/>
+ <int value="-1172204005" label="enable-offline-auto-reload-visible-only"/>
+ <int value="-1159563774" label="enable-accessibility-script-injection"/>
+ <int value="-1136509631" label="ssl-interstitial-v1"/>
+ <int value="-1102212525" label="enable-tcp-fastopen"/>
+ <int value="-1078093206" label="ash-debug-shortcuts"/>
+ <int value="-1077752943" label="enable-password-generation"/>
+ <int value="-1052782474" label="enable-cloud-devices"/>
+ <int value="-1052415111" label="malware-interstitial-v2"/>
+ <int value="-1022971520" label="enable-search-button-in-omnibox-for-str"/>
+ <int value="-979034258" label="disable-ntp-other-sessions-menu"/>
+ <int value="-949178861" label="enable-new-avatar-menu"/>
+ <int value="-926422468" label="disable-embedded-shared-worker"/>
+ <int value="-918618075" label="enable-service-worker"/>
+ <int value="-914210146" label="enable-web-based-signin"/>
+ <int value="-899334103" label="disable-fast-text-autosizing"/>
+ <int value="-898005938" label="disable-pinch-virtual-viewport"/>
+ <int value="-885601782" label="enable-contextual-search"/>
+ <int value="-867087281" label="enable-virtual-keyboard"/>
+ <int value="-864205629" label="enable-offline-load-stale-cache"/>
+ <int value="-853594220" label="disable-new-avatar-menu"/>
+ <int value="-836123854" label="wallet-service-use-sandbox"/>
+ <int value="-820041355" label="enable-transition-compositing"/>
+ <int value="-814097014" label="disable-session-crashed-bubble"/>
+ <int value="-795600188" label="disable-async-dns"/>
+ <int value="-770319039" label="enable-touch-editing"/>
+ <int value="-749048160" label="enable-panels"/>
+ <int value="-744159181" label="disable-spdy-proxy-dev-auth-origin"/>
+ <int value="-743103250" label="enable-linkable-ephemeral-apps"/>
+ <int value="-711890895" label="enable-website-settings-manager"/>
+ <int value="-699767107" label="enable-sync-app-list"/>
+ <int value="-697751423" label="disable-quickoffice-component-app"/>
+ <int value="-667517406" label="overscroll-history-navigation"/>
+ <int value="-660160292" label="enable-apps-show-on-first-paint"/>
+ <int value="-649956990" label="enable-harfbuzz-rendertext"/>
+ <int value="-641719457" label="disable-compositor-touch-hit-testing"/>
+ <int value="-604814313" label="enable-pinch"/>
+ <int value="-601384286" label="disable-contextual-search"/>
+ <int value="-579192400" label="disable-input-view"/>
+ <int value="-563980787" label="disable-webrtc"/>
+ <int value="-562274241" label="enable-extension-action-redesign"/>
+ <int value="-536289234" label="ssl-interstitial-v2-colorful"/>
+ <int value="-516845951" label="enable-embedded-extension-options"/>
+ <int value="-510488450" label="disable-pnacl"/>
+ <int value="-508143738" label="disable-accelerated-fixed-root-background"/>
+ <int value="-495585885" label="enable-spdy-proxy-dev-auth-origin"/>
+ <int value="-478462945" label="enable-ephemeral-apps"/>
+ <int value="-462205750" label="enable-service-worker-sync"/>
+ <int value="-430360431" label="disable-password-generation"/>
+ <int value="-418868128" label="enable-experimental-web-platform-features"/>
+ <int value="-385337473" label="enable-fast-unload"/>
+ <int value="-349057743" label="extensions-on-chrome-urls"/>
+ <int value="-340255045" label="allow-nacl-socket-api"/>
+ <int value="-328361990" label="enable-experimental-extension-apis"/>
+ <int value="-320820051" label="enable-zero-copy"/>
+ <int value="-314910380" label="disable-distance-field-text"/>
+ <int value="-288316828" label="enable-delegated-renderer"/>
+ <int value="-278347667" label="default-tile-height"/>
+ <int value="-277144896" label="enable-viewport-meta"/>
+ <int value="-254887599" label="google-profile-info"/>
+ <int value="-231922000" label="enable-renderer-mojo-channel"/>
+ <int value="-206393363" label="enable-scroll-prediction"/>
+ <int value="-158549277" label="enable-embeddedsearch-api"/>
+ <int value="-147283486" label="enable-network-portal-notification"/>
+ <int value="-102537270" label="extension-content-verification"/>
+ <int value="-86788587" label="allow-autofill-sync-credential"/>
+ <int value="-80353187" label="disable-display-color-calibration"/>
+ <int value="-76631048" label="disable-offline-auto-reload-visible-only"/>
+ <int value="-68225452" label="enable-translate-new-ux"/>
+ <int value="-48920737" label="enable-smooth-scrolling"/>
+ <int value="-23090520" label="disable-search-button-in-omnibox"/>
+ <int value="-22544408" label="enable-video-player-chromecast-support"/>
+ <int value="-5052940" label="enable-simplified-fullscreen"/>
+ <int value="-2371418" label="disable-display-list-2d-canvas"/>
<int value="0" label="BAD_FLAG_FORMAT">
Command-line flag doesn't start with two dashes.
</int>
@@ -44269,146 +44410,6 @@
<int value="2119964154" label="enable-download-resumption"/>
<int value="2122876605" label="enable-bleeding-edge-rendering-fast-paths"/>
<int value="2137347307" label="enable-drive-apps-in-app-list"/>
- <int value="2157211516" label="enable-reader-mode-toolbar-icon"/>
- <int value="2162375654" label="enable-input-view"/>
- <int value="2177765570" label="disable-gpu-rasterization"/>
- <int value="2180136048" label="disable-new-ntp"/>
- <int value="2196356887" label="disable-lcd-text"/>
- <int value="2197451627" label="disable-cast"/>
- <int value="2217698653" label="disable-device-enumeration"/>
- <int value="2242551072" label="enable-zero-suggest-ether-noserp"/>
- <int value="2247145038" label="enable-avfoundation"/>
- <int value="2269600192" label="enable-material-design-ntp"/>
- <int value="2274942856" label="scroll-end-effect"/>
- <int value="2286694617" label="disable-webrtc-hw-encoding"/>
- <int value="2291612959"
- label="enable-search-button-in-omnibox-for-str-or-iip"/>
- <int value="2309941703" label="file-manager-enable-new-gallery"/>
- <int value="2322583845" label="disable-pinch"/>
- <int value="2354160738" label="enable-syncfs-directory-operation"/>
- <int value="2364247010" label="nacl-debug-mask"/>
- <int value="2366768533" label="enable-async-dns"/>
- <int value="2369850017" label="disable-quic-https"/>
- <int value="2406693327" label="tab-capture-upscale-quality"/>
- <int value="2418085388"
- label="disable-infobar-for-protected-media-identifier"/>
- <int value="2420058470" label="enable-instant-search-clicks"/>
- <int value="2424005326" label="enable-filemanager-mtp"/>
- <int value="2447131774" label="disable-touch-adjustment"/>
- <int value="2456484852" label="disable-settings-window"/>
- <int value="2458991492" label="disable-offline-auto-reload"/>
- <int value="2461817486" label="enable-accessibility-tab-switcher"/>
- <int value="2527496644" label="out-of-process-pdf"/>
- <int value="2548199462" label="ssl-interstitial-v2-gray"/>
- <int value="2554448079" label="disable-software-rasterizer"/>
- <int value="2559324043" label="enable-display-list-2d-canvas"/>
- <int value="2569459691" label="enable-web-midi"/>
- <int value="2575133370" label="disable-answers-in-suggest"/>
- <int value="2578313196" label="tab-capture-downscale-quality"/>
- <int value="2591257384" label="enable-new-ntp"/>
- <int value="2591658756" label="disable-webaudio"/>
- <int value="2598600847" label="disable-permissions-bubbles"/>
- <int value="2675209982" label="touch-scrolling-mode"/>
- <int value="2689399668" label="disable-overlay-scrollbar"/>
- <int value="2698407646" label="max-tiles-for-interest-area"/>
- <int value="2723125783" label="enable-devtools-experiments"/>
- <int value="2741489393" label="ash-disable-text-filtering-in-overview-mode"/>
- <int value="2748064125" label="enable-touch-drag-drop"/>
- <int value="2784127722" label="disable-sync-synced-notifications"/>
- <int value="2797628315" label="disable-accelerated-overflow-scroll"/>
- <int value="2812281433" label="enable-request-tablet-site"/>
- <int value="2834504864" label="disable-media-source"/>
- <int value="2861879748" label="enable-app-install-alerts"/>
- <int value="2875179039" label="enable-experimental-hotwording"/>
- <int value="2886679120" label="enable-account-consistency"/>
- <int value="2895213816" label="disable-harfbuzz-rendertext"/>
- <int value="2895547724" label="enable-app-list"/>
- <int value="2902404798" label="disable-origin-chip"/>
- <int value="2919856272" label="enable-fixed-position-compositing"/>
- <int value="2945094390" label="disallow-autofill-sync-credential-for-reauth"/>
- <int value="2953874362" label="enable-accelerated-overflow-scroll"/>
- <int value="2954911336" label="enable-streamlined-hosted-apps"/>
- <int value="2960639886" label="ash-enable-touch-view-testing"/>
- <int value="2975278357" label="ignore-gpu-blacklist"/>
- <int value="3009945823" label="save-page-as-mhtml"/>
- <int value="3049508255" label="enable-zero-suggest-personalized"/>
- <int value="3053219579" label="enable-android-password-link"/>
- <int value="3076358656" label="disable-offline-load-stale-cache"/>
- <int value="3082693868" label="enable-experimental-app-list"/>
- <int value="3093784143" label="enable-centered-app-list"/>
- <int value="3122763291" label="enable-offline-auto-reload-visible-only"/>
- <int value="3135403522" label="enable-accessibility-script-injection"/>
- <int value="3158457665" label="ssl-interstitial-v1"/>
- <int value="3192754771" label="enable-tcp-fastopen"/>
- <int value="3216874090" label="ash-debug-shortcuts"/>
- <int value="3217214353" label="enable-password-generation"/>
- <int value="3242184822" label="enable-cloud-devices"/>
- <int value="3242552185" label="malware-interstitial-v2"/>
- <int value="3271995776" label="enable-search-button-in-omnibox-for-str"/>
- <int value="3315933038" label="disable-ntp-other-sessions-menu"/>
- <int value="3345788435" label="enable-new-avatar-menu"/>
- <int value="3368544828" label="disable-embedded-shared-worker"/>
- <int value="3376349221" label="enable-service-worker"/>
- <int value="3380757150" label="enable-web-based-signin"/>
- <int value="3395633193" label="disable-fast-text-autosizing"/>
- <int value="3396961358" label="disable-pinch-virtual-viewport"/>
- <int value="3409365514" label="enable-contextual-search"/>
- <int value="3427880015" label="enable-virtual-keyboard"/>
- <int value="3430761667" label="enable-offline-load-stale-cache"/>
- <int value="3441373076" label="disable-new-avatar-menu"/>
- <int value="3458843442" label="wallet-service-use-sandbox"/>
- <int value="3474925941" label="enable-transition-compositing"/>
- <int value="3480870282" label="disable-session-crashed-bubble"/>
- <int value="3499367108" label="disable-async-dns"/>
- <int value="3524648257" label="enable-touch-editing"/>
- <int value="3545919136" label="enable-panels"/>
- <int value="3550808115" label="disable-spdy-proxy-dev-auth-origin"/>
- <int value="3551864046" label="enable-linkable-ephemeral-apps"/>
- <int value="3583076401" label="enable-website-settings-manager"/>
- <int value="3595200189" label="enable-sync-app-list"/>
- <int value="3597215873" label="disable-quickoffice-component-app"/>
- <int value="3627449890" label="overscroll-history-navigation"/>
- <int value="3634807004" label="enable-apps-show-on-first-paint"/>
- <int value="3645010306" label="enable-harfbuzz-rendertext"/>
- <int value="3653247839" label="disable-compositor-touch-hit-testing"/>
- <int value="3690152983" label="enable-pinch"/>
- <int value="3693583010" label="disable-contextual-search"/>
- <int value="3715774896" label="disable-input-view"/>
- <int value="3730986509" label="disable-webrtc"/>
- <int value="3732693055" label="enable-extension-action-redesign"/>
- <int value="3758678062" label="ssl-interstitial-v2-colorful"/>
- <int value="3778121345" label="enable-embedded-extension-options"/>
- <int value="3784478846" label="disable-pnacl"/>
- <int value="3786823558" label="disable-accelerated-fixed-root-background"/>
- <int value="3799381411" label="enable-spdy-proxy-dev-auth-origin"/>
- <int value="3816504351" label="enable-ephemeral-apps"/>
- <int value="3832761546" label="enable-service-worker-sync"/>
- <int value="3864606865" label="disable-password-generation"/>
- <int value="3876099168" label="enable-experimental-web-platform-features"/>
- <int value="3909629823" label="enable-fast-unload"/>
- <int value="3945909553" label="extensions-on-chrome-urls"/>
- <int value="3954712251" label="allow-nacl-socket-api"/>
- <int value="3966605306" label="enable-experimental-extension-apis"/>
- <int value="3974147245" label="enable-zero-copy"/>
- <int value="3980056916" label="disable-distance-field-text"/>
- <int value="4006650468" label="enable-delegated-renderer"/>
- <int value="4016619629" label="default-tile-height"/>
- <int value="4017822400" label="enable-viewport-meta"/>
- <int value="4040079697" label="google-profile-info"/>
- <int value="4063045296" label="enable-renderer-mojo-channel"/>
- <int value="4088573933" label="enable-scroll-prediction"/>
- <int value="4136418019" label="enable-embeddedsearch-api"/>
- <int value="4147683810" label="enable-network-portal-notification"/>
- <int value="4192430026" label="extension-content-verification"/>
- <int value="4208178709" label="allow-autofill-sync-credential"/>
- <int value="4214614109" label="disable-display-color-calibration"/>
- <int value="4218336248" label="disable-offline-auto-reload-visible-only"/>
- <int value="4226741844" label="enable-translate-new-ux"/>
- <int value="4246046559" label="enable-smooth-scrolling"/>
- <int value="4271876776" label="disable-search-button-in-omnibox"/>
- <int value="4272422888" label="enable-video-player-chromecast-support"/>
- <int value="4289914356" label="enable-simplified-fullscreen"/>
- <int value="4292595878" label="disable-display-list-2d-canvas"/>
</enum>
<enum name="LoginFailureReason" type="int">
diff --git a/tools/metrics/histograms/pretty_print.py b/tools/metrics/histograms/pretty_print.py
index 00e9ff5..d9e03279 100755
--- a/tools/metrics/histograms/pretty_print.py
+++ b/tools/metrics/histograms/pretty_print.py
@@ -80,14 +80,27 @@
# Put subnodes in a list of node,key pairs to allow for custom sorting.
subtag, key_function = ALPHABETIZATION_RULES[node.tagName]
subnodes = []
- last_key = -1
+ sort_key = -1
+ pending_node_indices = []
for c in node.childNodes:
if (c.nodeType == xml.dom.minidom.Node.ELEMENT_NODE and
c.tagName == subtag):
- last_key = key_function(c)
- # Subnodes that we don't want to rearrange use the last node's key,
- # so they stay in the same relative position.
- subnodes.append( (c, last_key) )
+ sort_key = key_function(c)
+ # Replace sort keys for delayed nodes.
+ for idx in pending_node_indices:
+ subnodes[idx][1] = sort_key
+ pending_node_indices = []
+ else:
+ # Subnodes that we don't want to rearrange use the next node's key,
+ # so they stay in the same relative position.
+ # Therefore we delay setting key until the next node is found.
+ pending_node_indices.append(len(subnodes))
+
+ subnodes.append( [c, sort_key] )
+
+ # Use last sort key for trailing unknown nodes.
+ for idx in pending_node_indices:
+ subnodes[idx][1] = sort_key
# Sort the subnode list.
subnodes.sort(key=lambda pair: pair[1])