Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1018)

Unified Diff: third_party/WebKit/Source/core/html/shadow/MediaControlsOrientationLockDelegate.cpp

Issue 2581603003: Media: add metrics for orientation lock when video goes fullscreen. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/html/shadow/MediaControlsOrientationLockDelegate.cpp
diff --git a/third_party/WebKit/Source/core/html/shadow/MediaControlsOrientationLockDelegate.cpp b/third_party/WebKit/Source/core/html/shadow/MediaControlsOrientationLockDelegate.cpp
index 868d9c8e37a3e20a08195362a2219dd4391770d4..624bb9d699665c15f24c9a04de2425fe35b4b8a1 100644
--- a/third_party/WebKit/Source/core/html/shadow/MediaControlsOrientationLockDelegate.cpp
+++ b/third_party/WebKit/Source/core/html/shadow/MediaControlsOrientationLockDelegate.cpp
@@ -8,6 +8,7 @@
#include "core/frame/ScreenOrientationController.h"
#include "core/html/HTMLVideoElement.h"
#include "core/page/ChromeClient.h"
+#include "platform/Histogram.h"
#include "public/platform/WebScreenInfo.h"
#include "public/platform/modules/screen_orientation/WebLockOrientationCallback.h"
@@ -15,6 +16,41 @@ namespace blink {
namespace {
+// These values are used for histograms. Do not reorder.
+enum class MetadataAvailabilityMetrics {
+ Available = 0, // Available when lock was attempted.
+ Missing = 1, // Missing when lock was attempted.
+ Received = 2, // Received after being missing in order to lock.
+
+ // Keep at the end.
+ Max = 3
+};
+
+// These values are used for histograms. Do not reorder.
+enum class LockResultMetrics {
+ AlreadyLocked = 0, // Frame already has a lock.
+ Portrait = 1, // Locked to portrait.
+ Landscape = 2, // Locked to landscape.
+
+ // Keep at the end.
+ Max = 3
+};
+
+void recordMetadataAvailability(MetadataAvailabilityMetrics metrics) {
+ DEFINE_STATIC_LOCAL(
+ EnumerationHistogram, metadataHistogram,
+ ("Media.Video.FullscreenOrientationLock.MetadataAvailability",
+ static_cast<int>(MetadataAvailabilityMetrics::Max)));
+ metadataHistogram.count(static_cast<int>(metrics));
+}
+
+void recordLockResult(LockResultMetrics metrics) {
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, lockResultHistogram,
+ ("Media.Video.FullscreenOrientationLock.LockResult",
+ static_cast<int>(LockResultMetrics::Max)));
+ lockResultHistogram.count(static_cast<int>(metrics));
+}
+
// WebLockOrientationCallback implementation that will not react to a success
// nor a failure.
class DummyScreenOrientationCallback : public WebLockOrientationCallback {
@@ -43,22 +79,36 @@ void MediaControlsOrientationLockDelegate::maybeLockOrientation() {
DCHECK(m_state != State::MaybeLockedFullscreen);
if (videoElement().getReadyState() == HTMLMediaElement::kHaveNothing) {
+ recordMetadataAvailability(MetadataAvailabilityMetrics::Missing);
m_state = State::PendingMetadata;
return;
}
+ if (m_state == State::PendingMetadata)
+ recordMetadataAvailability(MetadataAvailabilityMetrics::Received);
+ else
+ recordMetadataAvailability(MetadataAvailabilityMetrics::Available);
+
m_state = State::MaybeLockedFullscreen;
if (!document().frame())
return;
auto controller = ScreenOrientationController::from(*document().frame());
- if (controller->maybeHasActiveLock())
+ if (controller->maybeHasActiveLock()) {
+ recordLockResult(LockResultMetrics::AlreadyLocked);
return;
+ }
- controller->lock(computeOrientationLock(),
+ WebScreenOrientationLockType orientationLock = computeOrientationLock();
+ controller->lock(orientationLock,
WTF::wrapUnique(new DummyScreenOrientationCallback));
m_shouldUnlockOrientation = true;
+
+ if (orientationLock == WebScreenOrientationLockLandscape)
+ recordLockResult(LockResultMetrics::Landscape);
+ else
+ recordLockResult(LockResultMetrics::Portrait);
}
void MediaControlsOrientationLockDelegate::maybeUnlockOrientation() {
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698