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 e0e1f6657bf19d9a7d1826b210ce17cb8a36e9c5..3829ef7ada1206c72700bab128d184e582056121 100644 |
--- a/android_webview/java/src/org/chromium/android_webview/ExternalVideoSurfaceContainer.java |
+++ b/android_webview/java/src/org/chromium/android_webview/ExternalVideoSurfaceContainer.java |
@@ -40,6 +40,7 @@ import java.lang.ref.WeakReference; |
@JNINamespace("android_webview") |
public class ExternalVideoSurfaceContainer implements SurfaceHolder.Callback { |
protected static final int INVALID_PLAYER_ID = -1; |
+ protected static final int ANY_PLAYER_ID = -2; |
// 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. |
@@ -132,11 +133,12 @@ public class ExternalVideoSurfaceContainer implements SurfaceHolder.Callback { |
*/ |
@CalledByNative |
protected void releaseExternalVideoSurface(int playerId) { |
- if (mPlayerId != playerId) return; |
+ if (playerId == ANY_PLAYER_ID || playerId == mPlayerId) { |
- releaseIfActiveContainer(this); |
+ releaseIfActiveContainer(this); |
- mPlayerId = INVALID_PLAYER_ID; |
+ mPlayerId = INVALID_PLAYER_ID; |
+ } |
} |
@CalledByNative |