// Copyright (c) 2012 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 CHROME_BROWSER_PERFORMANCE_MONITOR_METRIC_H_ #define CHROME_BROWSER_PERFORMANCE_MONITOR_METRIC_H_ #include <string> #include "base/time/time.h" namespace performance_monitor { // IMPORTANT: To add new metrics, please // - Place the new metric above METRIC_NUMBER_OF_METRICS. // - Add a member to the MetricKeyChar enum in key_builder.cc. // - Add the appropriate messages in generated_resources.grd. // - Add the appropriate functions in // chrome/browser/ui/webui/performance_monitor/performance_monitor_l10n.h. enum MetricType { METRIC_UNDEFINED, // CPU and memory usage are combined for all Chrome-related processes. METRIC_CPU_USAGE, METRIC_PRIVATE_MEMORY_USAGE, METRIC_SHARED_MEMORY_USAGE, // Timing measurements; these are all independent metrics (e.g., session // restore time is independent of startup time, even though they may happen // in sequence). Test startup time refers to any non-normal startup time, e.g. // when we run test suites. METRIC_STARTUP_TIME, METRIC_TEST_STARTUP_TIME, METRIC_SESSION_RESTORE_TIME, METRIC_PAGE_LOAD_TIME, // Total number of bytes read since PerformanceMonitor first started running. METRIC_NETWORK_BYTES_READ, METRIC_NUMBER_OF_METRICS }; struct Metric { public: Metric(); Metric(MetricType metric_type, const base::Time& metric_time, const double metric_value); Metric(MetricType metric_type, const std::string& metric_time, const std::string& metric_value); ~Metric(); // Check the value in the metric to make sure that it is reasonable. Since // some metric-gathering methods will fail and return incorrect values, we // need to try to weed these out as best we can. bool IsValid() const; // This converts the double stored in value to a string format. This will // not perform any checking on the validity of the metric, and only makes // sense if the metric IsValid(). std::string ValueAsString() const; MetricType type; base::Time time; double value; }; } // namespace performance_monitor #endif // CHROME_BROWSER_PERFORMANCE_MONITOR_METRIC_H_