Index: chromecast/browser/android/external_video_surface_container_impl.cc |
diff --git a/chromecast/browser/android/external_video_surface_container_impl.cc b/chromecast/browser/android/external_video_surface_container_impl.cc |
index e1f7e8bdab0e85916d16b713f9e89060a6ff6aa4..e830575e1ac79a47e60d57a06c63843702e59fd0 100644 |
--- a/chromecast/browser/android/external_video_surface_container_impl.cc |
+++ b/chromecast/browser/android/external_video_surface_container_impl.cc |
@@ -11,17 +11,24 @@ |
namespace chromecast { |
namespace shell { |
- |
-ExternalVideoSurfaceContainerImpl::ExternalVideoSurfaceContainerImpl( |
+// static |
+ExternalVideoSurfaceContainerImpl* ExternalVideoSurfaceContainerImpl::Create( |
content::WebContents* web_contents) { |
content::ContentViewCore* cvc = |
content::ContentViewCore::FromWebContents(web_contents); |
- if (cvc) { |
- JNIEnv* env = base::android::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 = base::android::AttachCurrentThread(); |
+ jobject_.Reset(Java_ExternalVideoSurfaceContainer_create( |
+ env, reinterpret_cast<intptr_t>(this), java_content_view_core.obj())); |
} |
ExternalVideoSurfaceContainerImpl::~ExternalVideoSurfaceContainerImpl() { |