- From: Shadow2531 <shadow2531@gmail.com>
- Date: Thu, 29 Mar 2007 18:40:43 -0400
On 3/29/07, Henri Sivonen <hsivonen at iki.fi> wrote: > On Mar 29, 2007, at 08:04, Boris Zbarsky wrote: > > > Laurens Holst wrote: > >> So, what do you think would be needed to fix this situation. > > > > In my dream world, IE would support dispatch by MIME type and > > authors who don't care about targeting a specific plug-in binary > > could just stop using the classid mess. > > I've asked about this before but I still don't understand it: Why > doesn't Gecko completely ignore the classid? (IIRC, Opera on Mac and > Mac IE 5 ignore the classid and dispatch on MIME.) Here's just one example of what Boris is referring to with different implementations. <object classid="clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6" type="application/x-mplayer2" data="file.wmv"> <param name="URL" value="file.wmv"> <param name="AutoStart" value="false"> <param name="Volume" value="50%"> </object> That classid invokes the Windows Media 7+ ActiveX control. If FF ignores the classid and uses type and data, FF will be using the Netscape WMP 6.4 plug-in. For the 6.4 plugin (which is older than dirt, but all there is netscape-wise because MS has abandoned it (and even broken compatibility with it in WMP11)), boolean values coming from params have to be 1 or 0. True or false are not understood. In this case, the video would still autostart. Also for the 6.4 plug-in, volume is different. It doesn't want a percentage, it wants -10000 to 0 (logarithmic scale). The 6.4 plugin also doesn't understand URL, it wants a filename param. There are also other params that only exist in one of the implementations. Now, for that to work, FF would have to convert false to 0 before passing to the 6.4 plugin. It would have to convert 50% to ~ -612 before passing to the plug-in. It would have to convert URL to a filename param before passing to the plugin. Since the plugin doesn't understand a data param, FF already has to map data to filename, so, in this case, that part at least is not a problem, but the rest of the compatibilities still are. Also, the codebase attribute in this case (if it was present) would have to be checked by FF first to make sure it wasn't a path to a .cab file (for IE) before it was used to resolve a path for file.wmv. Further, FF would have to do all these type of things on a per-plugin basis for every plug-in where the ActiveX version exposed a different api compared to the netscape version. Even more, the JS methods exposed on the object between the 2 APIs are very different. However, if the wmp classid of "clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" was used, that would invoke the WMP 6.4 ActiveX control where the author would be using 6.4-compatible params where param converting would not be needed. So, there's have to be a condition where converting would not happen. So, it's possible for FF to ignore classid and have things work fine, but I assume there'd be a lot of bloat going on behind the seen to make sure that it happens correctly. If other browsers ignore classid and things work out, there's most likely a bunch of converting going on to make it work, but it will still probably break in advanced situations. Now, if you want nested objects, IE7 will handle that. If you're worried about IE6, we can use downlevel-hidden IE conditional comments for that. -- burnout426
Received on Thursday, 29 March 2007 15:40:43 UTC