// 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/new_tab_callback_proxy.h" #include "base/trace_event/trace_event.h" #include "url/gurl.h" #include "weblayer/browser/java/jni/NewTabCallbackProxy_jni.h" #include "weblayer/browser/tab_impl.h" using base::android::AttachCurrentThread; using base::android::ScopedJavaLocalRef; namespace weblayer { NewTabCallbackProxy::NewTabCallbackProxy(JNIEnv* env, jobject obj, TabImpl* tab) : tab_(tab), java_impl_(env, obj) { DCHECK(!tab_->has_new_tab_delegate()); tab_->SetNewTabDelegate(this); } NewTabCallbackProxy::~NewTabCallbackProxy() { tab_->SetNewTabDelegate(nullptr); } void NewTabCallbackProxy::OnNewTab(Tab* tab, NewTabType type) { JNIEnv* env = AttachCurrentThread(); TRACE_EVENT0("weblayer", "Java_NewTabCallbackProxy_onNewTab"); Java_NewTabCallbackProxy_onNewTab(env, java_impl_, static_cast(tab)->GetJavaTab(), static_cast(type)); } static jlong JNI_NewTabCallbackProxy_CreateNewTabCallbackProxy( JNIEnv* env, const base::android::JavaParamRef& proxy, jlong tab) { return reinterpret_cast( new NewTabCallbackProxy(env, proxy, reinterpret_cast(tab))); } static void JNI_NewTabCallbackProxy_DeleteNewTabCallbackProxy(JNIEnv* env, jlong proxy) { delete reinterpret_cast(proxy); } } // namespace weblayer