Bug 1261955 - Re-activate VIDEO_PLAY_TIME_MS telemetry probe. r=SingingTree,bsmedberg
Rename the VIDEO_MSE_PLAY_TIME_MS telemetry probe to just
VIDEO_PLAY_TIME_MS and make it active for all video playback.
We were using this to track MSE deployment success. Now we'd
like to do something similar for video playback in general,
regardless of the origin. This allows us to simplify the
collection code somewhat.
MozReview-Commit-ID: 7s8pOQWipf4
--- a/dom/html/HTMLMediaElement.cpp
+++ b/dom/html/HTMLMediaElement.cpp
@@ -2847,18 +2847,18 @@ HTMLMediaElement::ReportMSETelemetry()
Telemetry::Accumulate(Telemetry::VIDEO_DROPPED_FRAMES_PROPORTION,
percentage);
}
}
Telemetry::Accumulate(Telemetry::VIDEO_MSE_UNLOAD_STATE, state);
LOG(LogLevel::Debug, ("%p VIDEO_MSE_UNLOAD_STATE = %d", this, state));
- Telemetry::Accumulate(Telemetry::VIDEO_MSE_PLAY_TIME_MS, SECONDS_TO_MS(mPlayTime.Total()));
- LOG(LogLevel::Debug, ("%p VIDEO_MSE_PLAY_TIME_MS = %f", this, mPlayTime.Total()));
+ Telemetry::Accumulate(Telemetry::VIDEO_PLAY_TIME_MS, SECONDS_TO_MS(mPlayTime.Total()));
+ LOG(LogLevel::Debug, ("%p VIDEO_PLAY_TIME_MS = %f", this, mPlayTime.Total()));
}
void HTMLMediaElement::UnbindFromTree(bool aDeep,
bool aNullParent)
{
if (!mPaused && mNetworkState != nsIDOMHTMLMediaElement::NETWORK_EMPTY) {
Pause();
}
@@ -4315,21 +4315,16 @@ nsresult HTMLMediaElement::DispatchAsync
if (mEventDeliveryPaused) {
mPendingEvents.AppendElement(aName);
return NS_OK;
}
nsCOMPtr<nsIRunnable> event = new nsAsyncEventRunner(aName, this);
NS_DispatchToMainThread(event);
- // Only collect rebuffer and stall rate stats for MSE video.
- if (!mMediaSource) {
- return NS_OK;
- }
-
if ((aName.EqualsLiteral("play") || aName.EqualsLiteral("playing"))) {
mPlayTime.Start();
} else if (aName.EqualsLiteral("waiting")) {
mPlayTime.Pause();
} else if (aName.EqualsLiteral("pause")) {
mPlayTime.Pause();
}
--- a/dom/html/HTMLMediaElement.h
+++ b/dom/html/HTMLMediaElement.h
@@ -1593,17 +1593,17 @@ public:
return mCount;
}
private:
TimeStamp mStartTime;
TimeDuration mSum;
uint32_t mCount;
};
private:
- // Total time an MSE video has spent playing
+ // Total time a video has spent playing.
TimeDurationAccumulator mPlayTime;
// Indicates if user has interacted with the element.
// Used to block autoplay when disabled.
bool mHasUserInteraction;
// True if the first frame has been successfully loaded.
bool mFirstFrameLoaded;
--- a/toolkit/components/telemetry/Histograms.json
+++ b/toolkit/components/telemetry/Histograms.json
@@ -8943,22 +8943,24 @@
"n_buckets": 16,
"description": "The number of entries in persistent DataStorage (HSTS and HPKP data, basically)"
},
"VIDEO_EME_PLAY_SUCCESS": {
"expires_in_version": "45",
"kind": "boolean",
"description": "EME video playback success or failure"
},
- "VIDEO_MSE_PLAY_TIME_MS" : {
- "expires_in_version": "45",
- "description": "Total time spent playing MSE video",
+ "VIDEO_PLAY_TIME_MS" : {
+ "alert_emails": ["ajones@mozilla.com"],
+ "expires_in_version": "55",
+ "description": "Total time spent playing video in milliseconds. This reports the total play time for an HTML Media Element whenever it is suspended or resumed, such as when the page is unloaded, or when the mute status changes when the AudioChannelAPI pref is set.",
"kind": "exponential",
"high": 7200000,
- "n_buckets": 100
+ "n_buckets": 100,
+ "bug_numbers": [1261955, 1127646]
},
"VIDEO_MSE_UNLOAD_STATE": {
"expires_in_version": "45",
"kind": "enumerated",
"n_values": 5,
"description": "MSE video state when unloading. ended = 0, paused = 1, stalled = 2, seeking = 3, other = 4"
},
"VIDEO_ADOBE_GMP_DISAPPEARED": {
--- a/toolkit/components/telemetry/histogram-whitelists.json
+++ b/toolkit/components/telemetry/histogram-whitelists.json
@@ -1013,17 +1013,16 @@
"VIDEO_CANPLAYTYPE_H264_CONSTRAINT_SET_FLAG",
"VIDEO_CANPLAYTYPE_H264_LEVEL",
"VIDEO_CANPLAYTYPE_H264_PROFILE",
"VIDEO_DECODED_H264_SPS_CONSTRAINT_SET_FLAG",
"VIDEO_DECODED_H264_SPS_LEVEL",
"VIDEO_DECODED_H264_SPS_PROFILE",
"VIDEO_EME_PLAY_SUCCESS",
"VIDEO_H264_SPS_MAX_NUM_REF_FRAMES",
- "VIDEO_MSE_PLAY_TIME_MS",
"VIDEO_MSE_UNLOAD_STATE",
"WEAVE_COMPLETE_SUCCESS_COUNT",
"WEAVE_CONFIGURED",
"WEAVE_CONFIGURED_MASTER_PASSWORD",
"WEAVE_START_COUNT",
"WEBCRYPTO_ALG",
"WEBCRYPTO_EXTRACTABLE_ENC",
"WEBCRYPTO_EXTRACTABLE_GENERATE",
@@ -2379,17 +2378,16 @@
"VIDEO_DECODED_H264_SPS_PROFILE",
"VIDEO_EME_ADOBE_HIDDEN_REASON",
"VIDEO_EME_ADOBE_INSTALL_FAILED_REASON",
"VIDEO_EME_ADOBE_UNSUPPORTED_REASON",
"VIDEO_EME_PLAY_SUCCESS",
"VIDEO_EME_REQUEST_FAILURE_LATENCY_MS",
"VIDEO_EME_REQUEST_SUCCESS_LATENCY_MS",
"VIDEO_H264_SPS_MAX_NUM_REF_FRAMES",
- "VIDEO_MSE_PLAY_TIME_MS",
"VIDEO_MSE_UNLOAD_STATE",
"VIDEO_OPENH264_GMP_DISAPPEARED",
"VIDEO_OPENH264_GMP_MISSING_FILES",
"VIEW_SOURCE_EXTERNAL_RESULT_BOOLEAN",
"VIEW_SOURCE_IN_BROWSER_OPENED_BOOLEAN",
"VIEW_SOURCE_IN_WINDOW_OPENED_BOOLEAN",
"WEAVE_COMPLETE_SUCCESS_COUNT",
"WEAVE_CONFIGURED",