| 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
|
|
|