1 // Copyright 2017 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 #include "media/base/watch_time_keys.h" 6 7 #include "base/notreached.h" 8 9 namespace media { 10 11 // TODO(dalecurtis): Key strings aren't really necessary anymore, so instead 12 // of hard coding these, switch to generating them. 13 14 // Audio+video watch time metrics. 15 static const char kWatchTimeAudioVideoAll[] = "Media.WatchTime.AudioVideo.All"; 16 static const char kWatchTimeAudioVideoMse[] = "Media.WatchTime.AudioVideo.MSE"; 17 static const char kWatchTimeAudioVideoEme[] = "Media.WatchTime.AudioVideo.EME"; 18 static const char kWatchTimeAudioVideoSrc[] = "Media.WatchTime.AudioVideo.SRC"; 19 static const char kWatchTimeAudioVideoBattery[] = 20 "Media.WatchTime.AudioVideo.Battery"; 21 static const char kWatchTimeAudioVideoAc[] = "Media.WatchTime.AudioVideo.AC"; 22 static const char kWatchTimeAudioVideoDisplayFullscreen[] = 23 "Media.WatchTime.AudioVideo.DisplayFullscreen"; 24 static const char kWatchTimeAudioVideoDisplayInline[] = 25 "Media.WatchTime.AudioVideo.DisplayInline"; 26 static const char kWatchTimeAudioVideoDisplayPictureInPicture[] = 27 "Media.WatchTime.AudioVideo.DisplayPictureInPicture"; 28 static const char kWatchTimeAudioVideoEmbeddedExperience[] = 29 "Media.WatchTime.AudioVideo.EmbeddedExperience"; 30 static const char kWatchTimeAudioVideoNativeControlsOn[] = 31 "Media.WatchTime.AudioVideo.NativeControlsOn"; 32 static const char kWatchTimeAudioVideoNativeControlsOff[] = 33 "Media.WatchTime.AudioVideo.NativeControlsOff"; 34 35 // Audio only "watch time" metrics. 36 static const char kWatchTimeAudioAll[] = "Media.WatchTime.Audio.All"; 37 static const char kWatchTimeAudioMse[] = "Media.WatchTime.Audio.MSE"; 38 static const char kWatchTimeAudioEme[] = "Media.WatchTime.Audio.EME"; 39 static const char kWatchTimeAudioSrc[] = "Media.WatchTime.Audio.SRC"; 40 static const char kWatchTimeAudioBattery[] = "Media.WatchTime.Audio.Battery"; 41 static const char kWatchTimeAudioAc[] = "Media.WatchTime.Audio.AC"; 42 static const char kWatchTimeAudioEmbeddedExperience[] = 43 "Media.WatchTime.Audio.EmbeddedExperience"; 44 static const char kWatchTimeAudioNativeControlsOn[] = 45 "Media.WatchTime.Audio.NativeControlsOn"; 46 static const char kWatchTimeAudioNativeControlsOff[] = 47 "Media.WatchTime.Audio.NativeControlsOff"; 48 49 static const char kWatchTimeAudioBackgroundAll[] = 50 "Media.WatchTime.Audio.Background.All"; 51 static const char kWatchTimeAudioBackgroundMse[] = 52 "Media.WatchTime.Audio.Background.MSE"; 53 static const char kWatchTimeAudioBackgroundEme[] = 54 "Media.WatchTime.Audio.Background.EME"; 55 static const char kWatchTimeAudioBackgroundSrc[] = 56 "Media.WatchTime.Audio.Background.SRC"; 57 static const char kWatchTimeAudioBackgroundBattery[] = 58 "Media.WatchTime.Audio.Background.Battery"; 59 static const char kWatchTimeAudioBackgroundAc[] = 60 "Media.WatchTime.Audio.Background.AC"; 61 static const char kWatchTimeAudioBackgroundEmbeddedExperience[] = 62 "Media.WatchTime.Audio.Background.EmbeddedExperience"; 63 64 // Audio+video background watch time metrics. 65 static const char kWatchTimeAudioVideoBackgroundAll[] = 66 "Media.WatchTime.AudioVideo.Background.All"; 67 static const char kWatchTimeAudioVideoBackgroundMse[] = 68 "Media.WatchTime.AudioVideo.Background.MSE"; 69 static const char kWatchTimeAudioVideoBackgroundEme[] = 70 "Media.WatchTime.AudioVideo.Background.EME"; 71 static const char kWatchTimeAudioVideoBackgroundSrc[] = 72 "Media.WatchTime.AudioVideo.Background.SRC"; 73 static const char kWatchTimeAudioVideoBackgroundBattery[] = 74 "Media.WatchTime.AudioVideo.Background.Battery"; 75 static const char kWatchTimeAudioVideoBackgroundAc[] = 76 "Media.WatchTime.AudioVideo.Background.AC"; 77 static const char kWatchTimeAudioVideoBackgroundEmbeddedExperience[] = 78 "Media.WatchTime.AudioVideo.Background.EmbeddedExperience"; 79 80 // Audio+video muted watch time metrics. 81 static const char kWatchTimeAudioVideoMutedAll[] = 82 "Media.WatchTime.AudioVideo.Muted.All"; 83 static const char kWatchTimeAudioVideoMutedMse[] = 84 "Media.WatchTime.AudioVideo.Muted.MSE"; 85 static const char kWatchTimeAudioVideoMutedEme[] = 86 "Media.WatchTime.AudioVideo.Muted.EME"; 87 static const char kWatchTimeAudioVideoMutedSrc[] = 88 "Media.WatchTime.AudioVideo.Muted.SRC"; 89 90 const char kWatchTimeUnderflowCount[] = "UnderflowCount"; 91 92 const char kMeanTimeBetweenRebuffersAudioSrc[] = 93 "Media.MeanTimeBetweenRebuffers.Audio.SRC"; 94 const char kMeanTimeBetweenRebuffersAudioMse[] = 95 "Media.MeanTimeBetweenRebuffers.Audio.MSE"; 96 const char kMeanTimeBetweenRebuffersAudioEme[] = 97 "Media.MeanTimeBetweenRebuffers.Audio.EME"; 98 const char kMeanTimeBetweenRebuffersAudioVideoSrc[] = 99 "Media.MeanTimeBetweenRebuffers.AudioVideo.SRC"; 100 const char kMeanTimeBetweenRebuffersAudioVideoMse[] = 101 "Media.MeanTimeBetweenRebuffers.AudioVideo.MSE"; 102 const char kMeanTimeBetweenRebuffersAudioVideoEme[] = 103 "Media.MeanTimeBetweenRebuffers.AudioVideo.EME"; 104 105 const char kRebuffersCountAudioSrc[] = "Media.RebuffersCount.Audio.SRC"; 106 const char kRebuffersCountAudioMse[] = "Media.RebuffersCount.Audio.MSE"; 107 const char kRebuffersCountAudioEme[] = "Media.RebuffersCount.Audio.EME"; 108 const char kRebuffersCountAudioVideoSrc[] = 109 "Media.RebuffersCount.AudioVideo.SRC"; 110 const char kRebuffersCountAudioVideoMse[] = 111 "Media.RebuffersCount.AudioVideo.MSE"; 112 const char kRebuffersCountAudioVideoEme[] = 113 "Media.RebuffersCount.AudioVideo.EME"; 114 115 const char kDiscardedWatchTimeAudioSrc[] = 116 "Media.WatchTime.Audio.Discarded.SRC"; 117 const char kDiscardedWatchTimeAudioMse[] = 118 "Media.WatchTime.Audio.Discarded.MSE"; 119 const char kDiscardedWatchTimeAudioEme[] = 120 "Media.WatchTime.Audio.Discarded.EME"; 121 const char kDiscardedWatchTimeAudioVideoSrc[] = 122 "Media.WatchTime.AudioVideo.Discarded.SRC"; 123 const char kDiscardedWatchTimeAudioVideoMse[] = 124 "Media.WatchTime.AudioVideo.Discarded.MSE"; 125 const char kDiscardedWatchTimeAudioVideoEme[] = 126 "Media.WatchTime.AudioVideo.Discarded.EME"; 127 ConvertWatchTimeKeyToStringForUma(WatchTimeKey key)128base::StringPiece ConvertWatchTimeKeyToStringForUma(WatchTimeKey key) { 129 // WARNING: Returning a non-empty value will log the key to UMA. 130 switch (key) { 131 case WatchTimeKey::kAudioAll: 132 return kWatchTimeAudioAll; 133 case WatchTimeKey::kAudioMse: 134 return kWatchTimeAudioMse; 135 case WatchTimeKey::kAudioEme: 136 return kWatchTimeAudioEme; 137 case WatchTimeKey::kAudioSrc: 138 return kWatchTimeAudioSrc; 139 case WatchTimeKey::kAudioBattery: 140 return kWatchTimeAudioBattery; 141 case WatchTimeKey::kAudioAc: 142 return kWatchTimeAudioAc; 143 case WatchTimeKey::kAudioEmbeddedExperience: 144 return kWatchTimeAudioEmbeddedExperience; 145 case WatchTimeKey::kAudioNativeControlsOn: 146 return kWatchTimeAudioNativeControlsOn; 147 case WatchTimeKey::kAudioNativeControlsOff: 148 return kWatchTimeAudioNativeControlsOff; 149 case WatchTimeKey::kAudioBackgroundAll: 150 return kWatchTimeAudioBackgroundAll; 151 case WatchTimeKey::kAudioBackgroundMse: 152 return kWatchTimeAudioBackgroundMse; 153 case WatchTimeKey::kAudioBackgroundEme: 154 return kWatchTimeAudioBackgroundEme; 155 case WatchTimeKey::kAudioBackgroundSrc: 156 return kWatchTimeAudioBackgroundSrc; 157 case WatchTimeKey::kAudioBackgroundBattery: 158 return kWatchTimeAudioBackgroundBattery; 159 case WatchTimeKey::kAudioBackgroundAc: 160 return kWatchTimeAudioBackgroundAc; 161 case WatchTimeKey::kAudioBackgroundEmbeddedExperience: 162 return kWatchTimeAudioBackgroundEmbeddedExperience; 163 case WatchTimeKey::kAudioVideoAll: 164 return kWatchTimeAudioVideoAll; 165 case WatchTimeKey::kAudioVideoMse: 166 return kWatchTimeAudioVideoMse; 167 case WatchTimeKey::kAudioVideoEme: 168 return kWatchTimeAudioVideoEme; 169 case WatchTimeKey::kAudioVideoSrc: 170 return kWatchTimeAudioVideoSrc; 171 case WatchTimeKey::kAudioVideoBattery: 172 return kWatchTimeAudioVideoBattery; 173 case WatchTimeKey::kAudioVideoAc: 174 return kWatchTimeAudioVideoAc; 175 case WatchTimeKey::kAudioVideoDisplayFullscreen: 176 return kWatchTimeAudioVideoDisplayFullscreen; 177 case WatchTimeKey::kAudioVideoDisplayInline: 178 return kWatchTimeAudioVideoDisplayInline; 179 case WatchTimeKey::kAudioVideoDisplayPictureInPicture: 180 return kWatchTimeAudioVideoDisplayPictureInPicture; 181 case WatchTimeKey::kAudioVideoEmbeddedExperience: 182 return kWatchTimeAudioVideoEmbeddedExperience; 183 case WatchTimeKey::kAudioVideoNativeControlsOn: 184 return kWatchTimeAudioVideoNativeControlsOn; 185 case WatchTimeKey::kAudioVideoNativeControlsOff: 186 return kWatchTimeAudioVideoNativeControlsOff; 187 case WatchTimeKey::kAudioVideoBackgroundAll: 188 return kWatchTimeAudioVideoBackgroundAll; 189 case WatchTimeKey::kAudioVideoBackgroundMse: 190 return kWatchTimeAudioVideoBackgroundMse; 191 case WatchTimeKey::kAudioVideoBackgroundEme: 192 return kWatchTimeAudioVideoBackgroundEme; 193 case WatchTimeKey::kAudioVideoBackgroundSrc: 194 return kWatchTimeAudioVideoBackgroundSrc; 195 case WatchTimeKey::kAudioVideoBackgroundBattery: 196 return kWatchTimeAudioVideoBackgroundBattery; 197 case WatchTimeKey::kAudioVideoBackgroundAc: 198 return kWatchTimeAudioVideoBackgroundAc; 199 case WatchTimeKey::kAudioVideoBackgroundEmbeddedExperience: 200 return kWatchTimeAudioVideoBackgroundEmbeddedExperience; 201 case WatchTimeKey::kAudioVideoMutedAll: 202 return kWatchTimeAudioVideoMutedAll; 203 case WatchTimeKey::kAudioVideoMutedMse: 204 return kWatchTimeAudioVideoMutedMse; 205 case WatchTimeKey::kAudioVideoMutedEme: 206 return kWatchTimeAudioVideoMutedEme; 207 case WatchTimeKey::kAudioVideoMutedSrc: 208 return kWatchTimeAudioVideoMutedSrc; 209 // WARNING: Returning a non-empty value will log the key to UMA. 210 211 // The following keys are not reported to UMA and thus have no conversion. 212 // We don't report keys to UMA that we don't have a strong use case for 213 // since UMA requires us to break out each state manually (ac, inline, etc). 214 case WatchTimeKey::kAudioVideoMutedBattery: 215 case WatchTimeKey::kAudioVideoMutedAc: 216 case WatchTimeKey::kAudioVideoMutedEmbeddedExperience: 217 case WatchTimeKey::kAudioVideoMutedDisplayFullscreen: 218 case WatchTimeKey::kAudioVideoMutedDisplayInline: 219 case WatchTimeKey::kAudioVideoMutedDisplayPictureInPicture: 220 case WatchTimeKey::kAudioVideoMutedNativeControlsOn: 221 case WatchTimeKey::kAudioVideoMutedNativeControlsOff: 222 case WatchTimeKey::kVideoAll: 223 case WatchTimeKey::kVideoMse: 224 case WatchTimeKey::kVideoEme: 225 case WatchTimeKey::kVideoSrc: 226 case WatchTimeKey::kVideoBattery: 227 case WatchTimeKey::kVideoAc: 228 case WatchTimeKey::kVideoDisplayFullscreen: 229 case WatchTimeKey::kVideoDisplayInline: 230 case WatchTimeKey::kVideoDisplayPictureInPicture: 231 case WatchTimeKey::kVideoEmbeddedExperience: 232 case WatchTimeKey::kVideoNativeControlsOn: 233 case WatchTimeKey::kVideoNativeControlsOff: 234 case WatchTimeKey::kVideoBackgroundAll: 235 case WatchTimeKey::kVideoBackgroundMse: 236 case WatchTimeKey::kVideoBackgroundEme: 237 case WatchTimeKey::kVideoBackgroundSrc: 238 case WatchTimeKey::kVideoBackgroundBattery: 239 case WatchTimeKey::kVideoBackgroundAc: 240 case WatchTimeKey::kVideoBackgroundEmbeddedExperience: 241 return base::StringPiece(); 242 }; 243 244 NOTREACHED(); 245 return base::StringPiece(); 246 } 247 248 } // namespace media 249