blob: ab9da9fdbbf9e79dc1c9df2e0f660f178bcc7dfe [file] [log] [blame]
// 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_