Thank you for your reply.
Do you mean that all the open syscalls in renderer will be replaced with the mojo operation?
Yes, but not automatically. The code needs to explicitly call a Mojo method.
Does the descriptor sent by mojo is opened by the broker process? If it is, there will not be a corresponding file descriptor table entry in the renderer process. So how does the renderer use this fd to operate that file?
If you are referring to the browser process as the broker, then yes. The file descriptor will be transferred to the renderer using a Unix socket (see SCM_RIGHTS), so there will be a corresponding entry in the file descriptor table of the renderer process (note it will likely have a different file descriptor number).
Separately, utility processes also cannot access the filesystem, but since those are also used for third-party code, we have a "broker process" per utility process, and our seccomp-bpf code transparently rewrites open(...) syscalls into IPCs over to the broker process. However, this is separate from the renderer; renderer processes are not utility processes and vice-versa.