Thanks for the answer. Let me ask one clarifying question:
If I have to use an iframe, how can I then transfer this file from the iframe to the actual (client's) web page?
I'll give an example:
There is a test.html web page that has an "upload file" control.
Previously (in manifest 2) I could pass a file from the background page to the content script (using URL.createObjectURL) and pass that file into an upload control:
const dT = new ClipboardEvent('').clipboardData || newDataTransfer();
dT.items.add(new File([blob], fileName, { type: type }));
fileInput.files = dT.files;
Now (in manifest 3) I'm doing the same but using readAsDataURL, but due to the large file size I need to split the file.
Question: can I transfer this file from the iframe to test.html web page?
Thank you!