Suppose a page foo.com, where foo.com does not require a dedicated process, embeds an iframe and navigates it to a URL on isolated.com, which does require a dedicated process. This will create an OOPIF.
Next, suppose the page navigates that iframe to bar.com, which is cross-site from the parent page, but does not require a dedicated process. This should bring the bar.com navigation back to the parent process, but instead it keeps it in an OOPIF in a new process and a bar.com SiteInstance.
Repro steps for --isolate-extensions:
(1) Install oopif-demo extension from https://bugs.chromium.org/p/chromium/issues/detail?id=487872#c4
(2) Go to https://www.chromium.org. There should be an extension OOPIF on the bottom.
(3) From devtools, execute
document.querySelector('iframe').src = "https://www.asdf.com"
(4) Check task manager. The navigated iframe is left as an OOPIF for asdf.com, instead of being placed back into chromium.org's process.
This is probably not a huge problem for --isolate-extensions, where we don't expect many extensions iframes to be navigated to a (different) web site, but it will be more problematic for other OOPIF modes, leading to more OOPIFs than necessary.
Comment 1 by bugdroid1@chromium.org
, Apr 17 2017