Index: chromecast/browser/android/cast_web_contents_activity.cc |
diff --git a/chromecast/browser/android/cast_web_contents_activity.cc b/chromecast/browser/android/cast_web_contents_activity.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c8e897ba268578138850810226de43c3dc035259 |
--- /dev/null |
+++ b/chromecast/browser/android/cast_web_contents_activity.cc |
@@ -0,0 +1,71 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chromecast/browser/android/cast_web_contents_activity.h" |
+ |
+#include "content/public/browser/web_contents.h" |
+#include "jni/CastWebContentsActivity_jni.h" |
+ |
+namespace chromecast { |
+namespace shell { |
+ |
+namespace { |
+const void* kCastWebContentsActivityData; |
+const void* kCastWebContentsActivityKey = |
+ static_cast<const void*>(&kCastWebContentsActivityData); |
+} // namespace |
+ |
+// static |
+void SetContentVideoViewEmbedder( |
+ JNIEnv* env, |
+ const base::android::JavaParamRef<jobject>& jcaller, |
+ const base::android::JavaParamRef<jobject>& webContents, |
+ const base::android::JavaParamRef<jobject>& embedder) { |
+ content::WebContents* web_contents = |
+ content::WebContents::FromJavaWebContents(webContents); |
+ DCHECK(web_contents); |
+ CastWebContentsActivity* activity = |
+ CastWebContentsActivity::Get(web_contents); |
+ activity->SetContentVideoViewEmbedder(embedder); |
+} |
+ |
+// static |
+bool CastWebContentsActivity::RegisterJni(JNIEnv* env) { |
+ return RegisterNativesImpl(env); |
+} |
+ |
+// static |
+CastWebContentsActivity* CastWebContentsActivity::Get( |
+ content::WebContents* web_contents) { |
+ DCHECK(web_contents); |
+ CastWebContentsActivity* instance = static_cast<CastWebContentsActivity*>( |
+ web_contents->GetUserData(kCastWebContentsActivityKey)); |
+ if (!instance) { |
+ instance = new CastWebContentsActivity(web_contents); |
+ web_contents->SetUserData(kCastWebContentsActivityKey, instance); |
+ } |
+ return instance; |
+} |
+ |
+CastWebContentsActivity::CastWebContentsActivity( |
+ content::WebContents* web_contents) |
+ : content_video_view_embedder_( |
+ base::android::ScopedJavaLocalRef<jobject>()) {} |
+ |
+CastWebContentsActivity::~CastWebContentsActivity() {} |
+ |
+base::android::ScopedJavaLocalRef<jobject> |
+CastWebContentsActivity::GetContentVideoViewEmbedder() { |
+ return base::android::ScopedJavaLocalRef<jobject>( |
+ content_video_view_embedder_); |
+} |
+ |
+void CastWebContentsActivity::SetContentVideoViewEmbedder( |
+ const base::android::JavaRef<jobject>& content_video_view_embedder) { |
+ content_video_view_embedder_ = |
+ base::android::ScopedJavaGlobalRef<jobject>(content_video_view_embedder); |
+} |
+ |
+} // namespace shell |
+} // namespace chromecast |