I read the localmess paper. Twice.
Chromium supports WICG File System Access. So that obliterates any concept of "cross-origin" isolation.
Anybody can write local files and directories to the actual file system, and read those files and directories from any other tab or window, or any other browser for that matter using <input type="file">.
Even if we're talking about WHATWG File System and the "Origin Private File System", it's possible to read the data stored in the Chromium configuration folder "out of band", from within Chromium, and using applications outside of Chromium, see
https://gist.github.com/guest271314/78372b8f3fabb1ecf95d492a028d10dd#file-createreadwritedirectoriesinbrowser-js-L118-L162 // Helper function for filesystem *development*
// Get directory in origin private file system from Chrome configuration folder.
// fetch() file: protocol with "file://*/*" or "<all_urls>" in "host_permissions"
// in browser extension manifest.json
async function parseChromeDefaultFileSystem(path) {
try {
const set = new Set([
32, 45, 46, 47, 48, 49, 50, 51, 52, 53,
54, 55, 56, 57, 58, 64, 65, 66, 67, 68,
69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
89, 90, 95, 97, 98, 99, 100, 101, 102,
103, 104, 105, 106, 107, 108, 109, 110,
111, 112, 113, 114, 115, 116, 117, 118,
119, 120, 121, 122,
]);
const request = await fetch(path);
const text = (await request.text()).replace(/./g, (s) => set.has(s.codePointAt()) ? s : "");
const files = [
...new Set(
text.match(
/00000\d+[A-Za-z-_.0-9\s]+\.crswap/g,
),
),
].map((s) => {
const dir = [...new Set(text.slice(0, text.indexOf(s)).match(/(?<=[@\s]|CHILD_OF:0:)([\w-_])+(?=Ux)/g).map((d) =>
d.split(/\d+|D140/)
))].flat().pop();
const re = /00000[\d\s]+|\.crswap/g;
const [key] = s.match(re);
return ({
[key]: s.replace(re, ""),
dir
})
});
return {
name: files[0].dir,
files
}
} catch (e) {
console.error(e);
}
}
// let paths = await parseChromeDefaultFileSystem("file:///home/user/.config/chromium/Default/File\ System/021/t/Paths/000003.log");
// console.log(JSON.stringify(paths, null, 2));
Further, all browsers support clipboard writing and reading. Clipboard data is stored at the system level. So we can already communicate across origins, and across browsers. For example, when I was asking for speakers to be captured by getUserMedia() and Media Capture and Stream folks said "No" in so many words, I created this to capture speakers on Firefox Nightly and stream audio to Chromium
https://gist.github.com/guest271314/04a539c00926e15905b86d05138c113c. I just re-tested today. Still works.
We can already communicate between arbitrary tabs and windows, and even browers. By exchanging SDP. Here's communicating between any arbitrary tab or window and an Isolated Web App
https://github.com/guest271314/sockets/tree/fetch-webrtc.
I always keep a few ways to break out of alleges sandboxes in my back pockets so if you folks can manage to close one loophole, I can use 2 or 3 other loopholes.
So the concept of cross-origin isolation is laudable in theory. Simply doesn't work in practice. There's too many ways to get around the *idea* with one of the many Web API's that spring out.
I try to disclose these things. Actually, I really just try to ask first for **user-defined** features. You folks say "No". Then I go about breaking your gear until I achieve my aims.
To me it makes sense for stakeholders to, perhaps, listen to developers in the field when they make feature requests, so they don't have to break your ideas and API's that are written out on paper, in reality.
I'm not malicious. I hack these browsers for sport.
Stakeholders and maintainers don't seem to listen. Perhaps become rigid, in their own circles. So, developers in the field simply get around "No" by making their use cases so, by any means necessary.
In summary, the *idea* of cross-origin isolation in these browsers is just an idea. In practice, it's simply IMPOSSIBLE. There's just too many ways for motivated, and non-malicious users to get around the *concept* on paper of "cross-origin" isolation.