Closed Bug 934108 Opened 11 years ago Closed 8 years ago

[] Remove use of plugin enumeration


(Web Compatibility :: Site Reports, defect)

Not set


(Not tracked)



(Reporter: BenB, Unassigned)




(Whiteboard: [country-all] [contactready] [video] [js])

See bug 934107 for purpose of this bug.

This bug is for

From bug 757726 comment 91 by Chris:

Here is Apple's QuickTime plugin detection script:

My QuickTime plugin's name is "QuickTime Plug-in 7.7.3". Apple's script enumerates navigator.plugins[] for a plugin matching `"QuickTime") > -1`.

If I whitelist MIME type "application/quicktime" to unhide the QuickTime plugin, then alternative plugins like "VLC Multimedia Plug-in" will also be unhidden. Unfortunately, Apple's script won't recognize the VLC plugin name without a "QuickTime" substring, so unhiding this uncommon plugin has a small downside and no upside for VLC plugin users.
Blocks: 934107
Here's the full, offending code:
            var qtInstalled = false;
            if (navigator.plugins && navigator.plugins.length) {
                for (var i = 0; i < navigator.plugins.length; i++) {
                    var plugin = navigator.plugins[i];
                    if ("QuickTime") > -1) {
                        qtInstalled = true;
            } else if (..[VBScript]...
To elaborate on Ben's example:

Because QuickTime's plugin name contains a version number ("QuickTime Plug-in 7.7.3"), a QuickTime detection script can't check `navigator.plugins["QuickTime Plug-in"]` or `navigator.plugins["QuickTime Plug-in 7.7.3"]`. Version numbers change and the installed version number is unknown.

A more robust QT plugin check:

    function getQuickTimePlugin() {
        var mimeTypes = navigator.mimeTypes;
        if (!mimeTypes) {
            return null;
        var quicktime = mimeTypes["video/quicktime"];
        if (!quicktime) {
            return null;
        return quicktime.enabledPlugin;

    var qtPlugin = getQuickTimePlugin();
    if (qtPlugin) {
        var qtInstalled = ("QuickTime") > -1); // e.g. "QuickTime Plug-in 7.7.3"
        var qtVersion = qtPlugin.version; // e.g. "7.7.3"
    } // else check VBScript or QT plugin not installed ...
Bad code still live on site. Moving to desktop component.
Assignee: english-us → nobody
Component: English US → Desktop
Whiteboard: [country-all]
Blocks: 114156
Whiteboard: [country-all] → [country-all] [contactready] [video] [js]
This evangelism bug will no longer be relevant after we drop support for all plugins (other than Flash) in Firefox 52 (bug 1269807).
Closed: 8 years ago
Resolution: --- → WONTFIX
Product: Tech Evangelism → Web Compatibility
You need to log in before you can comment on or make changes to this bug.