| 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 |