blob: 1128d16f9828e4a340ac54db65fdab61a872214c [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.
package org.chromium.weblayer_private;
import android.os.RemoteException;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.weblayer_private.aidl.IBrowserControllerClient;
/**
* Owns the c++ BrowserObserverProxy class, which is responsible for forwarding all
* BrowserObserver calls to this class, which in turn forwards to the BrowserControllerClient.
* To avoid unnecessary IPC only one BrowserObserverProxy is created per BrowserController.
*/
@JNINamespace("weblayer")
public final class BrowserObserverProxy {
private long mNativeBrowserObserverProxy;
private IBrowserControllerClient mClient;
BrowserObserverProxy(long browserController, IBrowserControllerClient client) {
mClient = client;
mNativeBrowserObserverProxy =
BrowserObserverProxyJni.get().createBrowserObserverProxy(this, browserController);
}
public void destroy() {
BrowserObserverProxyJni.get().deleteBrowserObserverProxy(mNativeBrowserObserverProxy);
mNativeBrowserObserverProxy = 0;
}
@CalledByNative
private void visibleUrlChanged(String string) throws RemoteException {
mClient.visibleUrlChanged(string);
}
@NativeMethods
interface Natives {
long createBrowserObserverProxy(BrowserObserverProxy proxy, long browserController);
void deleteBrowserObserverProxy(long proxy);
}
}