Something quite intriguing is happening with Firefox 3.5.

When loading directly a local swf, Firefox creates an HTML document wrapper around it. So far, so good: you get (are supposed to get) exactly the same thing you would get from a regular web page embedding your swf.

Technically, the generated document looks like:

<html>
<head><title>ChromelessBrowser.swf (Objet application/x-shockwave-flash)</title></head>
<body marginwidth="0" marginheight="0">
<embed height="100%" width="100%" name="plugin" src="file:///Users/dmp/var/zoom/zoomorama2/trunk/build/debug/chromelessbrowser/ChromelessBrowser.swf" type="application/x-shockwave-flash"/>
</body>
</html>

Now, try something ridiculously simple, from ActionScript: inject the following javascript code snippet into the window scope:

alert(document.body.style.border);

Well, that is (for you AS nerds):

      ExternalInterfaceNG.call(
<script>
<![CDATA[
function( ){ alert(document.body.style.border); }
]]>
</script>
);

Witness the abominable crash: "TypeError: Error #1083: The prefix "file" for element "file:/" is not bound."

Now, switch back to Firefox 3. All is fine.

Admittedly, I'm totally comfloused about what's happening here. I guess something has changed in the way Firefox builds the fake wrapper document, and the Adobe evil injection into javascript land (__flash_*) gets lost.

Anyone?

Update

There may as well be a security problem. Calling focus on the embed (again, from a js injection) ends-up denied:

Erreur : Permission refusée à <file://> d'appeler la méthode HTMLEmbedElement.focus de <>.

This definitely sounds like a ffox regression of some sort, although admittedly the use case is rather marginal...

Update 2

You also get denied when trying to fullscreen. Obviously, the sandbox got squeezed...