Index: android_webview/native/external_video_surface_container_impl.cc |
diff --git a/android_webview/native/external_video_surface_container_impl.cc b/android_webview/native/external_video_surface_container_impl.cc |
index 84d5ad462651849de4e0f161217c9771d865f85c..64270ef2ac99c8597dec8897bfb6d552e5c5866c 100644 |
--- a/android_webview/native/external_video_surface_container_impl.cc |
+++ b/android_webview/native/external_video_surface_container_impl.cc |
@@ -14,15 +14,23 @@ using content::ContentViewCore; |
namespace android_webview { |
-ExternalVideoSurfaceContainerImpl::ExternalVideoSurfaceContainerImpl( |
+// static |
+ExternalVideoSurfaceContainerImpl* ExternalVideoSurfaceContainerImpl::Create( |
content::WebContents* web_contents) { |
ContentViewCore* cvc = ContentViewCore::FromWebContents(web_contents); |
- if (cvc) { |
- JNIEnv* env = AttachCurrentThread(); |
- jobject_.Reset( |
- Java_ExternalVideoSurfaceContainer_create( |
- env, reinterpret_cast<intptr_t>(this), cvc->GetJavaObject().obj())); |
- } |
+ if (!cvc) |
+ return nullptr; |
+ base::android::ScopedJavaLocalRef<jobject> jcvc = cvc->GetJavaObject(); |
+ if (jcvc.is_null()) |
+ return nullptr; |
+ return new ExternalVideoSurfaceContainerImpl(jcvc); |
+} |
+ |
+ExternalVideoSurfaceContainerImpl::ExternalVideoSurfaceContainerImpl( |
+ base::android::ScopedJavaLocalRef<jobject> java_content_view_core) { |
+ JNIEnv* env = AttachCurrentThread(); |
+ jobject_.Reset(Java_ExternalVideoSurfaceContainer_create( |
+ env, reinterpret_cast<intptr_t>(this), java_content_view_core.obj())); |
} |
ExternalVideoSurfaceContainerImpl::~ExternalVideoSurfaceContainerImpl() { |