OLD | NEW |
| (Empty) |
1 // Copyright 2013 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 #ifndef MEDIA_BASE_KEY_SYSTEMS_SUPPORT_UMA_H_ | |
6 #define MEDIA_BASE_KEY_SYSTEMS_SUPPORT_UMA_H_ | |
7 | |
8 #include <string> | |
9 | |
10 #include "base/containers/scoped_ptr_hash_map.h" | |
11 | |
12 namespace media { | |
13 | |
14 // Key system support UMA statistics for queried key systems. | |
15 // 1. The key system is queried (with or without a MIME type). | |
16 // 2. The key system is queried with a MIME type. | |
17 // 3. The queried key system is supported (with or without a MIME type). This is | |
18 // reported when the key system is supported when queried, regardless of | |
19 // whether a MIME type is specified. | |
20 // 4. The queried key system is supported with a MIME type. This is reported | |
21 // when the key system is supported when queried without a MIME type | |
22 // specified. | |
23 // Note: All 4 stats are only reported once per renderer process per key system. | |
24 class KeySystemsSupportUMA { | |
25 public: | |
26 KeySystemsSupportUMA(); | |
27 ~KeySystemsSupportUMA(); | |
28 | |
29 // Adds a |key_system| for which query/support statistics are reported. | |
30 // If you use this function to add key system to report, make sure to update | |
31 // AddKeySystemSupportActions() in tools/metrics/actions/extract_actions.py. | |
32 void AddKeySystemToReport(const std::string& key_system); | |
33 | |
34 // Reports that the |key_system| is queried. When |has_type|, also reports | |
35 // that the |key_system| with a MIME type is queried. | |
36 void ReportKeySystemQuery(const std::string& key_system, bool has_type); | |
37 | |
38 // Reports that the queried |key_system| is supported. When |has_type| (a | |
39 // a MIME type is specified in the query), also reports that the queried | |
40 // |key_system| is supported with that MIME type. | |
41 void ReportKeySystemSupport(const std::string& key_system, bool has_type); | |
42 | |
43 private: | |
44 class Reporter; | |
45 | |
46 // Returns the Reporter for |key_system|. Returns NULL if |key_system| was not | |
47 // added for UMA reporting. | |
48 Reporter* GetReporter(const std::string& key_system); | |
49 | |
50 // Key system <-> Reporter map. | |
51 typedef base::ScopedPtrHashMap<std::string, scoped_ptr<Reporter>> Reporters; | |
52 Reporters reporters_; | |
53 }; | |
54 | |
55 } // namespace media | |
56 | |
57 #endif // MEDIA_BASE_KEY_SYSTEMS_SUPPORT_UMA_H_ | |
OLD | NEW |