| // Copyright (c) 2012 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. |
| |
| #ifndef CHROME_BROWSER_INTENTS_WEB_INTENTS_REPORTING_H_ |
| #define CHROME_BROWSER_INTENTS_WEB_INTENTS_REPORTING_H_ |
| |
| #include "base/string16.h" |
| #include "chrome/browser/intents/web_intents_util.h" |
| #include "webkit/glue/web_intent_reply_data.h" |
| |
| namespace base { |
| class TimeDelta; |
| } |
| |
| namespace webkit_glue { |
| struct WebIntentData; |
| } |
| |
| namespace web_intents { |
| |
| // primarily an implementation detail, but declared in this scope |
| // so they can be used in generating bucket ids |
| enum TypeId { |
| TYPE_ID_CUSTOM = 1, |
| TYPE_ID_APPLICATION, |
| TYPE_ID_AUDIO, |
| TYPE_ID_EXAMPLE, |
| TYPE_ID_IMAGE, |
| TYPE_ID_MESSAGE, |
| TYPE_ID_MODEL, |
| TYPE_ID_MULTIPART, |
| TYPE_ID_TEXT, |
| TYPE_ID_VIDEO, |
| }; |
| |
| #define INTENT_UMA_BUCKET(ACTION, TYPE) \ |
| (ACTION_ID_##ACTION << 8) | TYPE_ID_##TYPE |
| |
| // NOTE: Adding new values in the middle of a UMA histogram will basically |
| // mess up reporting. It is then advised that when adding entries here, |
| // you update the related UMA histogram keys in |web_intents_reporting.cc|. |
| // If new buckets are added in the middle, please update the ".v#" suffix |
| // on histogram names in |web_intents_reporting.cc|. |
| enum UMABucket { |
| BUCKET_CUSTOM_CUSTOM = INTENT_UMA_BUCKET(CUSTOM, CUSTOM), |
| BUCKET_CUSTOM_APPLICATION = INTENT_UMA_BUCKET(CUSTOM, APPLICATION), |
| BUCKET_CUSTOM_AUDIO = INTENT_UMA_BUCKET(CUSTOM, AUDIO), |
| BUCKET_CUSTOM_EXAMPLE = INTENT_UMA_BUCKET(CUSTOM, EXAMPLE), |
| BUCKET_CUSTOM_IMAGE = INTENT_UMA_BUCKET(CUSTOM, IMAGE), |
| BUCKET_CUSTOM_MESSAGE = INTENT_UMA_BUCKET(CUSTOM, MESSAGE), |
| BUCKET_CUSTOM_MODEL = INTENT_UMA_BUCKET(CUSTOM, MODEL), |
| BUCKET_CUSTOM_MULTIPART = INTENT_UMA_BUCKET(CUSTOM, MULTIPART), |
| BUCKET_CUSTOM_TEXT = INTENT_UMA_BUCKET(CUSTOM, TEXT), |
| BUCKET_CUSTOM_VIDEO = INTENT_UMA_BUCKET(CUSTOM, VIDEO), |
| BUCKET_EDIT_CUSTOM = INTENT_UMA_BUCKET(EDIT, CUSTOM), |
| BUCKET_EDIT_APPLICATION = INTENT_UMA_BUCKET(EDIT, APPLICATION), |
| BUCKET_EDIT_AUDIO = INTENT_UMA_BUCKET(EDIT, AUDIO), |
| BUCKET_EDIT_EXAMPLE = INTENT_UMA_BUCKET(EDIT, EXAMPLE), |
| BUCKET_EDIT_IMAGE = INTENT_UMA_BUCKET(EDIT, IMAGE), |
| BUCKET_EDIT_MESSAGE = INTENT_UMA_BUCKET(EDIT, MESSAGE), |
| BUCKET_EDIT_MODEL = INTENT_UMA_BUCKET(EDIT, MODEL), |
| BUCKET_EDIT_MULTIPART = INTENT_UMA_BUCKET(EDIT, MULTIPART), |
| BUCKET_EDIT_TEXT = INTENT_UMA_BUCKET(EDIT, TEXT), |
| BUCKET_EDIT_VIDEO = INTENT_UMA_BUCKET(EDIT, VIDEO), |
| BUCKET_PICK_CUSTOM = INTENT_UMA_BUCKET(PICK, CUSTOM), |
| BUCKET_PICK_APPLICATION = INTENT_UMA_BUCKET(PICK, APPLICATION), |
| BUCKET_PICK_AUDIO = INTENT_UMA_BUCKET(PICK, AUDIO), |
| BUCKET_PICK_EXAMPLE = INTENT_UMA_BUCKET(PICK, EXAMPLE), |
| BUCKET_PICK_IMAGE = INTENT_UMA_BUCKET(PICK, IMAGE), |
| BUCKET_PICK_MESSAGE = INTENT_UMA_BUCKET(PICK, MESSAGE), |
| BUCKET_PICK_MODEL = INTENT_UMA_BUCKET(PICK, MODEL), |
| BUCKET_PICK_MULTIPART = INTENT_UMA_BUCKET(PICK, MULTIPART), |
| BUCKET_PICK_TEXT = INTENT_UMA_BUCKET(PICK, TEXT), |
| BUCKET_PICK_VIDEO = INTENT_UMA_BUCKET(PICK, VIDEO), |
| BUCKET_SAVE_CUSTOM = INTENT_UMA_BUCKET(SAVE, CUSTOM), |
| BUCKET_SAVE_APPLICATION = INTENT_UMA_BUCKET(SAVE, APPLICATION), |
| BUCKET_SAVE_AUDIO = INTENT_UMA_BUCKET(SAVE, AUDIO), |
| BUCKET_SAVE_EXAMPLE = INTENT_UMA_BUCKET(SAVE, EXAMPLE), |
| BUCKET_SAVE_IMAGE = INTENT_UMA_BUCKET(SAVE, IMAGE), |
| BUCKET_SAVE_MESSAGE = INTENT_UMA_BUCKET(SAVE, MESSAGE), |
| BUCKET_SAVE_MODEL = INTENT_UMA_BUCKET(SAVE, MODEL), |
| BUCKET_SAVE_MULTIPART = INTENT_UMA_BUCKET(SAVE, MULTIPART), |
| BUCKET_SAVE_TEXT = INTENT_UMA_BUCKET(SAVE, TEXT), |
| BUCKET_SAVE_VIDEO = INTENT_UMA_BUCKET(SAVE, VIDEO), |
| BUCKET_SHARE_CUSTOM = INTENT_UMA_BUCKET(SHARE, CUSTOM), |
| BUCKET_SHARE_APPLICATION = INTENT_UMA_BUCKET(SHARE, APPLICATION), |
| BUCKET_SHARE_AUDIO = INTENT_UMA_BUCKET(SHARE, AUDIO), |
| BUCKET_SHARE_EXAMPLE = INTENT_UMA_BUCKET(SHARE, EXAMPLE), |
| BUCKET_SHARE_IMAGE = INTENT_UMA_BUCKET(SHARE, IMAGE), |
| BUCKET_SHARE_MESSAGE = INTENT_UMA_BUCKET(SHARE, MESSAGE), |
| BUCKET_SHARE_MODEL = INTENT_UMA_BUCKET(SHARE, MODEL), |
| BUCKET_SHARE_MULTIPART = INTENT_UMA_BUCKET(SHARE, MULTIPART), |
| BUCKET_SHARE_TEXT = INTENT_UMA_BUCKET(SHARE, TEXT), |
| BUCKET_SHARE_VIDEO = INTENT_UMA_BUCKET(SHARE, VIDEO), |
| BUCKET_SUBSCRIBE_CUSTOM = INTENT_UMA_BUCKET(SUBSCRIBE, CUSTOM), |
| BUCKET_SUBSCRIBE_APPLICATION = INTENT_UMA_BUCKET(SUBSCRIBE, APPLICATION), |
| BUCKET_SUBSCRIBE_AUDIO = INTENT_UMA_BUCKET(SUBSCRIBE, AUDIO), |
| BUCKET_SUBSCRIBE_EXAMPLE = INTENT_UMA_BUCKET(SUBSCRIBE, EXAMPLE), |
| BUCKET_SUBSCRIBE_IMAGE = INTENT_UMA_BUCKET(SUBSCRIBE, IMAGE), |
| BUCKET_SUBSCRIBE_MESSAGE = INTENT_UMA_BUCKET(SUBSCRIBE, MESSAGE), |
| BUCKET_SUBSCRIBE_MODEL = INTENT_UMA_BUCKET(SUBSCRIBE, MODEL), |
| BUCKET_SUBSCRIBE_MULTIPART = INTENT_UMA_BUCKET(SUBSCRIBE, MULTIPART), |
| BUCKET_SUBSCRIBE_TEXT = INTENT_UMA_BUCKET(SUBSCRIBE, TEXT), |
| BUCKET_SUBSCRIBE_VIDEO = INTENT_UMA_BUCKET(SUBSCRIBE, VIDEO), |
| BUCKET_VIEW_CUSTOM = INTENT_UMA_BUCKET(VIEW, CUSTOM), |
| BUCKET_VIEW_APPLICATION = INTENT_UMA_BUCKET(VIEW, APPLICATION), |
| BUCKET_VIEW_AUDIO = INTENT_UMA_BUCKET(VIEW, AUDIO), |
| BUCKET_VIEW_EXAMPLE = INTENT_UMA_BUCKET(VIEW, EXAMPLE), |
| BUCKET_VIEW_IMAGE = INTENT_UMA_BUCKET(VIEW, IMAGE), |
| BUCKET_VIEW_MESSAGE = INTENT_UMA_BUCKET(VIEW, MESSAGE), |
| BUCKET_VIEW_MODEL = INTENT_UMA_BUCKET(VIEW, MODEL), |
| BUCKET_VIEW_MULTIPART = INTENT_UMA_BUCKET(VIEW, MULTIPART), |
| BUCKET_VIEW_TEXT = INTENT_UMA_BUCKET(VIEW, TEXT), |
| BUCKET_VIEW_VIDEO = INTENT_UMA_BUCKET(VIEW, VIDEO), |
| }; |
| |
| #undef INTENT_UMA_BUCKET |
| |
| // Please update if new higher values are added to Bucket. |
| const int kMaxActionTypeHistogramValue = BUCKET_VIEW_VIDEO; |
| |
| UMABucket ToUMABucket(const string16& action, const string16& type); |
| void RecordIntentsDispatchDisabled(); |
| void RecordIntentDispatchRequested(); |
| void RecordIntentDispatched(const UMABucket bucket); |
| |
| // Records the fact that the picker was shown and records the |
| // number of services installed at the time the picker was shown |
| void RecordPickerShow(const UMABucket bucket, size_t installed); |
| void RecordPickerCancel(const UMABucket bucket); |
| void RecordServiceInvoke(const UMABucket bucket); |
| // Records the |duration| of time spent in the service. Uses |reply_type| to |
| // distinguish between failed and successful service usage. |
| void RecordServiceActiveDuration( |
| webkit_glue::WebIntentReplyType reply_type, |
| const base::TimeDelta& duration); |
| void RecordChooseAnotherService(const UMABucket bucket); |
| void RecordCWSExtensionInstalled(const UMABucket bucket); |
| } // namespace web_intents |
| |
| #endif // CHROME_BROWSER_INTENTS_WEB_INTENTS_REPORTING_H_ |