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..6113a087d19ff0c0bac3150518786db2510507af 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 |
@@ -7,6 +7,7 @@ package org.chromium.content.browser; |
import android.app.Activity; |
import android.app.AlertDialog; |
import android.content.Context; |
+import android.content.ContextWrapper; |
import android.content.DialogInterface; |
import android.util.Log; |
import android.view.Gravity; |
@@ -377,8 +378,8 @@ public class ContentVideoView extends FrameLayout |
boolean legacy) { |
ThreadUtils.assertOnUiThread(); |
// The context needs be Activity to create the ContentVideoView correctly. |
- if (!(context instanceof Activity)) { |
- Log.w(TAG, "Wrong type of context, can't create fullscreen video"); |
+ if (!isActivityContext(context)) { |
+ Log.e(TAG, "Wrong type of context, can't create fullscreen video"); |
return null; |
} |
ContentVideoView videoView = null; |
@@ -394,6 +395,15 @@ public class ContentVideoView extends FrameLayout |
return null; |
} |
+ private static boolean isActivityContext(Context context) { |
+ // Only retrieve the base context if the supplied context is a ContextWrapper but not |
+ // an Activity, given that Activity is already a subclass of ContextWrapper. |
+ if (context instanceof ContextWrapper && !(context instanceof Activity)) { |
+ context = ((ContextWrapper) context).getBaseContext(); |
+ } |
+ return context instanceof Activity; |
+ } |
+ |
public void removeSurfaceView() { |
removeView(mVideoSurfaceView); |
removeView(mProgressView); |