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

Unified Diff: android_webview/java/src/org/chromium/android_webview/ExternalVideoSurfaceContainer.java

Issue 250483002: [Android WebView] Add tests to check whether the hole punching works. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 8 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
« no previous file with comments | « no previous file | android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: android_webview/java/src/org/chromium/android_webview/ExternalVideoSurfaceContainer.java
diff --git a/android_webview/java/src/org/chromium/android_webview/ExternalVideoSurfaceContainer.java b/android_webview/java/src/org/chromium/android_webview/ExternalVideoSurfaceContainer.java
index 7bc1e11ca878ef4e01e9997fd544f206f89aa43c..985fc42ba648666591bfffbebc1eda7a5902e357 100644
--- a/android_webview/java/src/org/chromium/android_webview/ExternalVideoSurfaceContainer.java
+++ b/android_webview/java/src/org/chromium/android_webview/ExternalVideoSurfaceContainer.java
@@ -11,6 +11,8 @@ import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.ViewGroup;
+import com.google.common.annotations.VisibleForTesting;
+
import org.chromium.base.CalledByNative;
import org.chromium.base.JNINamespace;
import org.chromium.content.browser.ContentViewCore;
@@ -38,7 +40,7 @@ import java.lang.ref.WeakReference;
*/
@JNINamespace("android_webview")
public class ExternalVideoSurfaceContainer implements SurfaceHolder.Callback {
- private static final int INVALID_PLAYER_ID = -1;
+ protected static final int INVALID_PLAYER_ID = -1;
// Because WebView does hole-punching by itself, instead, the hole-punching logic
// in SurfaceView can clear out some web elements like media control or subtitle.
@@ -78,14 +80,30 @@ public class ExternalVideoSurfaceContainer implements SurfaceHolder.Callback {
private int mWidth;
private int mHeight;
+ /**
+ * Factory class to facilitate dependency injection.
+ */
+ public static class Factory {
+ public ExternalVideoSurfaceContainer create(
+ int nativeExternalVideoSurfaceContainer, ContentViewCore contentViewCore) {
+ return new ExternalVideoSurfaceContainer(
+ nativeExternalVideoSurfaceContainer, contentViewCore);
+ }
+ }
+ private static Factory sFactory = new Factory();
+
+ @VisibleForTesting
+ public static void setFactory(Factory factory) {
+ sFactory = factory;
+ }
+
@CalledByNative
private static ExternalVideoSurfaceContainer create(
int nativeExternalVideoSurfaceContainer, ContentViewCore contentViewCore) {
- return new ExternalVideoSurfaceContainer(
- nativeExternalVideoSurfaceContainer, contentViewCore);
+ return sFactory.create(nativeExternalVideoSurfaceContainer, contentViewCore);
}
- private ExternalVideoSurfaceContainer(
+ protected ExternalVideoSurfaceContainer(
int nativeExternalVideoSurfaceContainer, ContentViewCore contentViewCore) {
assert contentViewCore != null;
mNativeExternalVideoSurfaceContainer = nativeExternalVideoSurfaceContainer;
@@ -98,7 +116,7 @@ public class ExternalVideoSurfaceContainer implements SurfaceHolder.Callback {
* @param playerId The ID of the media player.
*/
@CalledByNative
- private void requestExternalVideoSurface(int playerId) {
+ protected void requestExternalVideoSurface(int playerId) {
if (mPlayerId == playerId) return;
if (mPlayerId == INVALID_PLAYER_ID) {
@@ -116,7 +134,7 @@ public class ExternalVideoSurfaceContainer implements SurfaceHolder.Callback {
* @param playerId The ID of the media player.
*/
@CalledByNative
- private void releaseExternalVideoSurface(int playerId) {
+ protected void releaseExternalVideoSurface(int playerId) {
if (mPlayerId != playerId) return;
releaseIfActiveContainer(this);
@@ -125,7 +143,7 @@ public class ExternalVideoSurfaceContainer implements SurfaceHolder.Callback {
}
@CalledByNative
- private void destroy() {
+ protected void destroy() {
releaseExternalVideoSurface(mPlayerId);
}
@@ -176,7 +194,7 @@ public class ExternalVideoSurfaceContainer implements SurfaceHolder.Callback {
* @param bottom The absolute CSS Y coordinate of the bottom side of the video element.
*/
@CalledByNative
- private void onExternalVideoSurfacePositionChanged(
+ protected void onExternalVideoSurfacePositionChanged(
int playerId, float left, float top, float right, float bottom) {
if (mPlayerId != playerId) return;
@@ -192,7 +210,7 @@ public class ExternalVideoSurfaceContainer implements SurfaceHolder.Callback {
* Called when the page that contains the video element is scrolled or zoomed.
*/
@CalledByNative
- private void onFrameInfoUpdated() {
+ protected void onFrameInfoUpdated() {
if (mPlayerId == INVALID_PLAYER_ID) return;
layOutSurfaceView();
« no previous file with comments | « no previous file | android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698