OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012 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 CHROME_BROWSER_INTENTS_WEB_INTENTS_REPORTING_H_ | |
6 #define CHROME_BROWSER_INTENTS_WEB_INTENTS_REPORTING_H_ | |
7 | |
8 #include "base/string16.h" | |
9 #include "chrome/browser/intents/web_intents_util.h" | |
10 #include "webkit/glue/web_intent_reply_data.h" | |
11 | |
12 namespace base { | |
13 class TimeDelta; | |
14 } | |
15 | |
16 namespace webkit_glue { | |
17 struct WebIntentData; | |
18 } | |
19 | |
20 namespace web_intents { | |
21 | |
22 // primarily an implementation detail, but declared in this scope | |
23 // so they can be used in generating bucket ids | |
24 enum TypeId { | |
25 TYPE_ID_CUSTOM = 1, | |
26 TYPE_ID_APPLICATION, | |
27 TYPE_ID_AUDIO, | |
28 TYPE_ID_EXAMPLE, | |
29 TYPE_ID_IMAGE, | |
30 TYPE_ID_MESSAGE, | |
31 TYPE_ID_MODEL, | |
32 TYPE_ID_MULTIPART, | |
33 TYPE_ID_TEXT, | |
34 TYPE_ID_VIDEO, | |
35 }; | |
36 | |
37 #define INTENT_UMA_BUCKET(ACTION, TYPE) \ | |
38 (ACTION_ID_##ACTION << 8) | TYPE_ID_##TYPE | |
39 | |
40 // UMA buckets for reporting the Web Intent action and type. | |
41 enum UMABucket { | |
42 BUCKET_CUSTOM_CUSTOM = INTENT_UMA_BUCKET(CUSTOM, CUSTOM), | |
43 BUCKET_CUSTOM_APPLICATION = INTENT_UMA_BUCKET(CUSTOM, APPLICATION), | |
44 BUCKET_CUSTOM_AUDIO = INTENT_UMA_BUCKET(CUSTOM, AUDIO), | |
45 BUCKET_CUSTOM_EXAMPLE = INTENT_UMA_BUCKET(CUSTOM, EXAMPLE), | |
46 BUCKET_CUSTOM_IMAGE = INTENT_UMA_BUCKET(CUSTOM, IMAGE), | |
47 BUCKET_CUSTOM_MESSAGE = INTENT_UMA_BUCKET(CUSTOM, MESSAGE), | |
48 BUCKET_CUSTOM_MODEL = INTENT_UMA_BUCKET(CUSTOM, MODEL), | |
49 BUCKET_CUSTOM_MULTIPART = INTENT_UMA_BUCKET(CUSTOM, MULTIPART), | |
50 BUCKET_CUSTOM_TEXT = INTENT_UMA_BUCKET(CUSTOM, TEXT), | |
51 BUCKET_CUSTOM_VIDEO = INTENT_UMA_BUCKET(CUSTOM, VIDEO), | |
52 BUCKET_EDIT_CUSTOM = INTENT_UMA_BUCKET(EDIT, CUSTOM), | |
53 BUCKET_EDIT_APPLICATION = INTENT_UMA_BUCKET(EDIT, APPLICATION), | |
54 BUCKET_EDIT_AUDIO = INTENT_UMA_BUCKET(EDIT, AUDIO), | |
55 BUCKET_EDIT_EXAMPLE = INTENT_UMA_BUCKET(EDIT, EXAMPLE), | |
56 BUCKET_EDIT_IMAGE = INTENT_UMA_BUCKET(EDIT, IMAGE), | |
57 BUCKET_EDIT_MESSAGE = INTENT_UMA_BUCKET(EDIT, MESSAGE), | |
58 BUCKET_EDIT_MODEL = INTENT_UMA_BUCKET(EDIT, MODEL), | |
59 BUCKET_EDIT_MULTIPART = INTENT_UMA_BUCKET(EDIT, MULTIPART), | |
60 BUCKET_EDIT_TEXT = INTENT_UMA_BUCKET(EDIT, TEXT), | |
61 BUCKET_EDIT_VIDEO = INTENT_UMA_BUCKET(EDIT, VIDEO), | |
62 BUCKET_PICK_CUSTOM = INTENT_UMA_BUCKET(PICK, CUSTOM), | |
63 BUCKET_PICK_APPLICATION = INTENT_UMA_BUCKET(PICK, APPLICATION), | |
64 BUCKET_PICK_AUDIO = INTENT_UMA_BUCKET(PICK, AUDIO), | |
65 BUCKET_PICK_EXAMPLE = INTENT_UMA_BUCKET(PICK, EXAMPLE), | |
66 BUCKET_PICK_IMAGE = INTENT_UMA_BUCKET(PICK, IMAGE), | |
67 BUCKET_PICK_MESSAGE = INTENT_UMA_BUCKET(PICK, MESSAGE), | |
68 BUCKET_PICK_MODEL = INTENT_UMA_BUCKET(PICK, MODEL), | |
69 BUCKET_PICK_MULTIPART = INTENT_UMA_BUCKET(PICK, MULTIPART), | |
70 BUCKET_PICK_TEXT = INTENT_UMA_BUCKET(PICK, TEXT), | |
71 BUCKET_PICK_VIDEO = INTENT_UMA_BUCKET(PICK, VIDEO), | |
72 BUCKET_SAVE_CUSTOM = INTENT_UMA_BUCKET(SAVE, CUSTOM), | |
73 BUCKET_SAVE_APPLICATION = INTENT_UMA_BUCKET(SAVE, APPLICATION), | |
74 BUCKET_SAVE_AUDIO = INTENT_UMA_BUCKET(SAVE, AUDIO), | |
75 BUCKET_SAVE_EXAMPLE = INTENT_UMA_BUCKET(SAVE, EXAMPLE), | |
76 BUCKET_SAVE_IMAGE = INTENT_UMA_BUCKET(SAVE, IMAGE), | |
77 BUCKET_SAVE_MESSAGE = INTENT_UMA_BUCKET(SAVE, MESSAGE), | |
78 BUCKET_SAVE_MODEL = INTENT_UMA_BUCKET(SAVE, MODEL), | |
79 BUCKET_SAVE_MULTIPART = INTENT_UMA_BUCKET(SAVE, MULTIPART), | |
80 BUCKET_SAVE_TEXT = INTENT_UMA_BUCKET(SAVE, TEXT), | |
81 BUCKET_SAVE_VIDEO = INTENT_UMA_BUCKET(SAVE, VIDEO), | |
82 BUCKET_SHARE_CUSTOM = INTENT_UMA_BUCKET(SHARE, CUSTOM), | |
83 BUCKET_SHARE_APPLICATION = INTENT_UMA_BUCKET(SHARE, APPLICATION), | |
84 BUCKET_SHARE_AUDIO = INTENT_UMA_BUCKET(SHARE, AUDIO), | |
85 BUCKET_SHARE_EXAMPLE = INTENT_UMA_BUCKET(SHARE, EXAMPLE), | |
86 BUCKET_SHARE_IMAGE = INTENT_UMA_BUCKET(SHARE, IMAGE), | |
87 BUCKET_SHARE_MESSAGE = INTENT_UMA_BUCKET(SHARE, MESSAGE), | |
88 BUCKET_SHARE_MODEL = INTENT_UMA_BUCKET(SHARE, MODEL), | |
89 BUCKET_SHARE_MULTIPART = INTENT_UMA_BUCKET(SHARE, MULTIPART), | |
90 BUCKET_SHARE_TEXT = INTENT_UMA_BUCKET(SHARE, TEXT), | |
91 BUCKET_SHARE_VIDEO = INTENT_UMA_BUCKET(SHARE, VIDEO), | |
92 BUCKET_SUBSCRIBE_CUSTOM = INTENT_UMA_BUCKET(SUBSCRIBE, CUSTOM), | |
93 BUCKET_SUBSCRIBE_APPLICATION = INTENT_UMA_BUCKET(SUBSCRIBE, APPLICATION), | |
94 BUCKET_SUBSCRIBE_AUDIO = INTENT_UMA_BUCKET(SUBSCRIBE, AUDIO), | |
95 BUCKET_SUBSCRIBE_EXAMPLE = INTENT_UMA_BUCKET(SUBSCRIBE, EXAMPLE), | |
96 BUCKET_SUBSCRIBE_IMAGE = INTENT_UMA_BUCKET(SUBSCRIBE, IMAGE), | |
97 BUCKET_SUBSCRIBE_MESSAGE = INTENT_UMA_BUCKET(SUBSCRIBE, MESSAGE), | |
98 BUCKET_SUBSCRIBE_MODEL = INTENT_UMA_BUCKET(SUBSCRIBE, MODEL), | |
99 BUCKET_SUBSCRIBE_MULTIPART = INTENT_UMA_BUCKET(SUBSCRIBE, MULTIPART), | |
100 BUCKET_SUBSCRIBE_TEXT = INTENT_UMA_BUCKET(SUBSCRIBE, TEXT), | |
101 BUCKET_SUBSCRIBE_VIDEO = INTENT_UMA_BUCKET(SUBSCRIBE, VIDEO), | |
102 BUCKET_VIEW_CUSTOM = INTENT_UMA_BUCKET(VIEW, CUSTOM), | |
103 BUCKET_VIEW_APPLICATION = INTENT_UMA_BUCKET(VIEW, APPLICATION), | |
104 BUCKET_VIEW_AUDIO = INTENT_UMA_BUCKET(VIEW, AUDIO), | |
105 BUCKET_VIEW_EXAMPLE = INTENT_UMA_BUCKET(VIEW, EXAMPLE), | |
106 BUCKET_VIEW_IMAGE = INTENT_UMA_BUCKET(VIEW, IMAGE), | |
107 BUCKET_VIEW_MESSAGE = INTENT_UMA_BUCKET(VIEW, MESSAGE), | |
108 BUCKET_VIEW_MODEL = INTENT_UMA_BUCKET(VIEW, MODEL), | |
109 BUCKET_VIEW_MULTIPART = INTENT_UMA_BUCKET(VIEW, MULTIPART), | |
110 BUCKET_VIEW_TEXT = INTENT_UMA_BUCKET(VIEW, TEXT), | |
111 BUCKET_VIEW_VIDEO = INTENT_UMA_BUCKET(VIEW, VIDEO), | |
112 }; | |
113 | |
114 #undef INTENT_UMA_BUCKET | |
115 | |
116 UMABucket ToUMABucket(const string16& action, const string16& type); | |
117 void RecordIntentsDispatchDisabled(); | |
118 void RecordIntentDispatchRequested(); | |
119 void RecordIntentDispatched(const UMABucket bucket); | |
120 | |
121 // Records the fact that the picker was shown and records the | |
122 // number of services installed at the time the picker was shown | |
123 void RecordPickerShow(const UMABucket bucket, size_t installed); | |
124 void RecordPickerCancel(const UMABucket bucket); | |
125 void RecordServiceInvoke(const UMABucket bucket); | |
126 // Records the |duration| of time spent in the service. Uses |reply_type| to | |
127 // distinguish between failed and successful service usage. | |
128 void RecordServiceActiveDuration( | |
129 webkit_glue::WebIntentReplyType reply_type, | |
130 const base::TimeDelta& duration); | |
131 void RecordChooseAnotherService(const UMABucket bucket); | |
132 void RecordCWSExtensionInstalled(const UMABucket bucket); | |
133 } // namespace web_intents | |
134 | |
135 #endif // CHROME_BROWSER_INTENTS_WEB_INTENTS_REPORTING_H_ | |
OLD | NEW |