123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- // 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<TabImpl*>(tab)->GetJavaTab(),
- static_cast<int>(type));
- }
- static jlong JNI_NewTabCallbackProxy_CreateNewTabCallbackProxy(
- JNIEnv* env,
- const base::android::JavaParamRef<jobject>& proxy,
- jlong tab) {
- return reinterpret_cast<jlong>(
- new NewTabCallbackProxy(env, proxy, reinterpret_cast<TabImpl*>(tab)));
- }
- static void JNI_NewTabCallbackProxy_DeleteNewTabCallbackProxy(JNIEnv* env,
- jlong proxy) {
- delete reinterpret_cast<NewTabCallbackProxy*>(proxy);
- }
- } // namespace weblayer
|