blob: 7f6ce3cfd60f500bc9fddc6bbeb9a305af32781b [file] [log] [blame]
// Copyright 2019 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 "weblayer/browser/fullscreen_delegate_proxy.h"
#include "base/android/jni_string.h"
#include "url/gurl.h"
#include "weblayer/browser/browser_controller_impl.h"
#include "weblayer/browser/java/jni/FullscreenDelegateProxy_jni.h"
using base::android::AttachCurrentThread;
using base::android::ConvertUTF8ToJavaString;
using base::android::ScopedJavaLocalRef;
namespace weblayer {
FullscreenDelegateProxy::FullscreenDelegateProxy(
JNIEnv* env,
jobject obj,
BrowserController* browser_controller)
: browser_controller_(browser_controller), java_delegate_(env, obj) {
browser_controller_->SetFullscreenDelegate(this);
}
FullscreenDelegateProxy::~FullscreenDelegateProxy() {
browser_controller_->SetFullscreenDelegate(nullptr);
}
void FullscreenDelegateProxy::EnterFullscreen(base::OnceClosure exit_closure) {
exit_fullscreen_closure_ = std::move(exit_closure);
Java_FullscreenDelegateProxy_enterFullscreen(AttachCurrentThread(),
java_delegate_);
}
void FullscreenDelegateProxy::ExitFullscreen() {
Java_FullscreenDelegateProxy_exitFullscreen(AttachCurrentThread(),
java_delegate_);
}
void FullscreenDelegateProxy::DoExitFullscreen(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& caller) {
if (exit_fullscreen_closure_)
std::move(exit_fullscreen_closure_).Run();
}
static jlong JNI_FullscreenDelegateProxy_CreateFullscreenDelegateProxy(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& proxy,
jlong browser_controller) {
return reinterpret_cast<jlong>(new FullscreenDelegateProxy(
env, proxy,
reinterpret_cast<BrowserControllerImpl*>(browser_controller)));
}
static void JNI_FullscreenDelegateProxy_DeleteFullscreenDelegateProxy(
JNIEnv* env,
jlong proxy) {
delete reinterpret_cast<FullscreenDelegateProxy*>(proxy);
}
} // namespace weblayer