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

Unified Diff: content/public/android/java/src/org/chromium/content/browser/ContentVideoView.java

Issue 297773004: Add UMA to study the effect of defaulting fullscreen video to landscape mode (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months 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
Index: content/public/android/java/src/org/chromium/content/browser/ContentVideoView.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentVideoView.java b/content/public/android/java/src/org/chromium/content/browser/ContentVideoView.java
index 7cd3b6ef79fa2c87017696dbe3ac97b8fa42ea6c..f88c99dac2cf9d6c0cc8abd9842c45a22c7737c1 100644
--- a/content/public/android/java/src/org/chromium/content/browser/ContentVideoView.java
+++ b/content/public/android/java/src/org/chromium/content/browser/ContentVideoView.java
@@ -8,7 +8,9 @@ import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
+import android.graphics.Point;
import android.util.Log;
+import android.view.Display;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.Surface;
@@ -16,6 +18,7 @@ import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.ViewGroup;
+import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
@@ -92,6 +95,11 @@ public class ContentVideoView extends FrameLayout
private final ContentVideoViewClient mClient;
+ private boolean mInitialOrientation;
+ private boolean mUmaRecorded;
+ private long mOrientationChangedTime;
+ private long mPlaybackStartTime;
+
private class VideoSurfaceView extends SurfaceView {
public VideoSurfaceView(Context context) {
@@ -113,6 +121,11 @@ public class ContentVideoView extends FrameLayout
width = height * mVideoWidth / mVideoHeight;
}
}
+ if (mUmaRecorded && (mPlaybackStartTime == mOrientationChangedTime)) {
+ if (isOrientationPortrait() != mInitialOrientation) {
+ mOrientationChangedTime = System.currentTimeMillis();
+ }
+ }
setMeasuredDimension(width, height);
}
}
@@ -275,6 +288,13 @@ public class ContentVideoView extends FrameLayout
mProgressView.setVisibility(View.GONE);
mCurrentState = isPlaying() ? STATE_PLAYING : STATE_PAUSED;
onVideoSizeChanged(videoWidth, videoHeight);
+ if (mUmaRecorded) return;
+ mInitialOrientation = isOrientationPortrait();
+ mUmaRecorded = true;
+ mPlaybackStartTime = System.currentTimeMillis();
+ mOrientationChangedTime = mPlaybackStartTime;
+ nativeRecordFullscreenPlayback(
+ mNativeContentVideoView, videoHeight > videoWidth, mInitialOrientation);
}
@Override
@@ -404,6 +424,17 @@ public class ContentVideoView extends FrameLayout
public void exitFullscreen(boolean relaseMediaPlayer) {
destroyContentVideoView(false);
if (mNativeContentVideoView != 0) {
+ if (mUmaRecorded) {
+ long currentTime = System.currentTimeMillis();
+ long timeBeforeOrientationChange = mOrientationChangedTime - mPlaybackStartTime;
+ long timeAfterOrientationChange = currentTime - mOrientationChangedTime;
+ if (timeBeforeOrientationChange == 0) {
+ timeBeforeOrientationChange = timeAfterOrientationChange;
+ timeAfterOrientationChange = 0;
+ }
+ nativeRecordExitFullscreenPlayback(mNativeContentVideoView, mInitialOrientation,
+ timeBeforeOrientationChange, timeAfterOrientationChange);
+ }
nativeExitFullscreen(mNativeContentVideoView, relaseMediaPlayer);
mNativeContentVideoView = 0;
}
@@ -467,6 +498,18 @@ public class ContentVideoView extends FrameLayout
return mViewAndroid.getNativePointer();
}
+ private boolean isOrientationPortrait() {
+ Context context = getContext();
+ WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
+ Display display = manager.getDefaultDisplay();
+ Point outputSize = new Point(0, 0);
+ display.getSize(outputSize);
+ if (outputSize.x > outputSize.y) {
+ return false;
+ }
+ return true;
+ }
+
private static native ContentVideoView nativeGetSingletonJavaContentVideoView();
private native void nativeExitFullscreen(long nativeContentVideoView,
boolean relaseMediaPlayer);
@@ -480,4 +523,10 @@ public class ContentVideoView extends FrameLayout
private native void nativePlay(long nativeContentVideoView);
private native void nativeSeekTo(long nativeContentVideoView, int msec);
private native void nativeSetSurface(long nativeContentVideoView, Surface surface);
+ private native void nativeRecordFullscreenPlayback(
+ long nativeContentVideoView, boolean isVideoPortrait, boolean isOrientationPortrait);
+ private native void nativeRecordExitFullscreenPlayback(
+ long nativeContentVideoView, boolean isOrientationPortrait,
+ long playbackDurationBeforeOrientationChange,
+ long playbackDurationAfterOrientationChange);
}

Powered by Google App Engine
This is Rietveld 408576698