java/com/jetbrains/cef/remote/callback/RemoteMediaAccessCallback.java (25 lines of code) (raw):
package com.jetbrains.cef.remote.callback;
import com.jetbrains.cef.remote.RemoteServerObject;
import com.jetbrains.cef.remote.RpcContext;
import com.jetbrains.cef.remote.thrift_codegen.RObject;
import org.cef.callback.CefMediaAccessCallback;
// 1. Represent remote java peer for native server object (CefMediaAccessCallback) that is
// valid in any context (destroyed on server manually, via rpc from java side).
// 2. Created on java side (with use of native peer id) when processing some server request.
// 3. Lifetime of remote native peer:
// a) it will be destroyed directly after Continue/Cancel invocations.
// b) it will be destroyed via dispose-rpc (see disposeOnServerImpl, will be invoked from GC::Finalize), if Continue/Cancel wasn't invoked.
public class RemoteMediaAccessCallback extends RemoteServerObject implements CefMediaAccessCallback {
public RemoteMediaAccessCallback(RpcContext rpcContext, RObject robj) {
super(rpcContext, robj);
}
@Override
public void Continue(int allowed_permissions) {
// NOTE: server object will be disposed after this call
myRpc.exec((s)-> s.MediaAccessCallback_Continue(thriftId(), allowed_permissions));
}
@Override
public void Cancel() {
// NOTE: server object will be disposed after this call
myRpc.exec((s)-> s.MediaAccessCallback_Cancel(thriftId()));
}
@Override
public void flush() {}
@Override
protected void disposeOnServerImpl() {
// NOTE: server object will be disposed after Continue or Cancel invocations.
// But if callback wasn't used we should dispose server object here
final RObject id = thriftId();
myRpc.invokeLater(s -> s.MediaAccessCallback_Dispose(id));
}
}