1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // This class exists to interpret the response from the metrics server. 6 7 #ifndef CHROME_BROWSER_METRICS_METRICS_RESPONSE_H_ 8 #define CHROME_BROWSER_METRICS_METRICS_RESPONSE_H_ 9 #pragma once 10 11 #include <string> 12 13 #include "base/basictypes.h" 14 15 class MetricsResponse { 16 public: 17 // Parses metrics response XML into the information we care about 18 // (how often to send metrics info, which info to send). 19 explicit MetricsResponse(const std::string& response_xml); 20 21 // True if the XML passed to the constructor was valid and parseable. 22 bool valid() { return valid_; } 23 24 // Each flag (except NONE) defined here represents one type of metrics 25 // event that the server is interested in. 26 enum CollectorType { 27 COLLECTOR_NONE = 0x0, 28 COLLECTOR_PROFILE = 0x1, 29 COLLECTOR_WINDOW = 0x2, 30 COLLECTOR_DOCUMENT = 0x4, 31 COLLECTOR_UI = 0x8 32 }; 33 34 // This is the collection of CollectorTypes that are desired by the 35 // server, ORed together into one value. 36 int collectors() { return collectors_; } 37 38 // Returns true if the given CollectorType is desired by the server. 39 bool collector_active(CollectorType type) { return !!(collectors_ & type); } 40 41 // Returns the maximum number of event that the server wants in each 42 // metrics log sent. (If 0, no value was provided.) 43 int events() { return events_; } 44 45 // Returns the size of the time interval that the server wants us to include 46 // in each log (in seconds). (If 0, no value was provided.) 47 int interval() { return interval_; } 48 49 private: 50 bool valid_; 51 int collectors_; 52 int events_; 53 int interval_; 54 55 DISALLOW_COPY_AND_ASSIGN(MetricsResponse); 56 }; 57 58 #endif // CHROME_BROWSER_METRICS_METRICS_RESPONSE_H_ 59