This is an unfortunate consequence of nsPluginHostImpl registering itself with
two different CIDs. As a result, you get two instances of it floating around.
nsObjectFrame stops the plugin on the instance that's gotten via the plugin
manager CID and contract, while presshell (for bfcache) uses the plugin host
contract, which means the plugins are not fully stopped...
The upshot is that we stop the plugin itself, but the plugin manager still
thinks the plugin is running, which breaks things like trying to unload the
plugin if plugin reload happens.
Created attachment 200416 [details] [diff] [review]
Brian, if you can't get to this in time for it to make 1.8, please let me know
ASAP so I can ask someone else for review Sunday morning. If you do get to
this tomorrow, could you go ahead and check it in?
I think this is something we should really fix on branch -- we don't want to be
creating a second instance of the plugin host (which is effectively what this
codepath does), since that makes it very unclear which one of them is actually
responsible for the running plugins. This fix is very very safe, and I'm hoping
I'll get review by Sunday... :(
checked in on trunk.
checked in on branch.