| // Copyright (c) 2010 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. |
| |
| // This class exists to interpret the response from the metrics server. |
| |
| #ifndef CHROME_BROWSER_METRICS_METRICS_RESPONSE_H_ |
| #define CHROME_BROWSER_METRICS_METRICS_RESPONSE_H_ |
| #pragma once |
| |
| #include <string> |
| |
| #include "base/basictypes.h" |
| |
| class MetricsResponse { |
| public: |
| // Parses metrics response XML into the information we care about |
| // (how often to send metrics info, which info to send). |
| explicit MetricsResponse(const std::string& response_xml); |
| |
| // True if the XML passed to the constructor was valid and parseable. |
| bool valid() { return valid_; } |
| |
| // Each flag (except NONE) defined here represents one type of metrics |
| // event that the server is interested in. |
| enum CollectorType { |
| COLLECTOR_NONE = 0x0, |
| COLLECTOR_PROFILE = 0x1, |
| COLLECTOR_WINDOW = 0x2, |
| COLLECTOR_DOCUMENT = 0x4, |
| COLLECTOR_UI = 0x8 |
| }; |
| |
| // This is the collection of CollectorTypes that are desired by the |
| // server, ORed together into one value. |
| int collectors() { return collectors_; } |
| |
| // Returns true if the given CollectorType is desired by the server. |
| bool collector_active(CollectorType type) { return !!(collectors_ & type); } |
| |
| // Returns the maximum number of event that the server wants in each |
| // metrics log sent. (If 0, no value was provided.) |
| int events() { return events_; } |
| |
| // Returns the size of the time interval that the server wants us to include |
| // in each log (in seconds). (If 0, no value was provided.) |
| int interval() { return interval_; } |
| |
| private: |
| bool valid_; |
| int collectors_; |
| int events_; |
| int interval_; |
| |
| DISALLOW_COPY_AND_ASSIGN(MetricsResponse); |
| }; |
| |
| #endif // CHROME_BROWSER_METRICS_METRICS_RESPONSE_H_ |