|  | // Copyright 2018 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef BASE_TEST_METRICS_HISTOGRAM_ENUM_READER_H_ | 
|  | #define BASE_TEST_METRICS_HISTOGRAM_ENUM_READER_H_ | 
|  |  | 
|  | #include <map> | 
|  | #include <string> | 
|  |  | 
|  | #include "base/metrics/histogram_base.h" | 
|  | #include "base/optional.h" | 
|  |  | 
|  | namespace base { | 
|  |  | 
|  | using HistogramEnumEntryMap = std::map<HistogramBase::Sample, std::string>; | 
|  |  | 
|  | // Find and read the enum with the given |enum_name| (with integer values) from | 
|  | // tools/metrics/histograms/enums.xml. | 
|  | // | 
|  | // Returns map { value => label } so that: | 
|  | //   <int value="9" label="enable-pinch-virtual-viewport"/> | 
|  | // becomes: | 
|  | //   { 9 => "enable-pinch-virtual-viewport" } | 
|  | // Returns empty base::nullopt on failure. | 
|  | base::Optional<HistogramEnumEntryMap> ReadEnumFromEnumsXml( | 
|  | const std::string& enum_name); | 
|  |  | 
|  | }  // namespace base | 
|  |  | 
|  | #endif  // BASE_TEST_METRICS_HISTOGRAM_ENUM_READER_H_ |