<?xml version="1.0"?> <!-- This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> <!DOCTYPE bindings [ <!ENTITY % aboutPermissionsDTD SYSTEM "chrome://browser/locale/preferences/aboutPermissions.dtd" > %aboutPermissionsDTD; ]> <bindings xmlns="http://www.mozilla.org/xbl" xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:xbl="http://www.mozilla.org/xbl"> <binding id="site" extends="chrome://global/content/bindings/richlistbox.xml#richlistitem"> <content> <xul:hbox class="site-container" align="center" flex="1"> <xul:image xbl:inherits="src=favicon" class="site-favicon"/> <xul:label xbl:inherits="value,selected" class="site-domain" crop="end" flex="1"/> </xul:hbox> </content> </binding> <binding id="pluginPermission"> <content> <xul:hbox flex="1" align="baseline"> <xul:label xbl:inherits="value=label" class="plugins-label"/> <xul:label xbl:inherits="value=vulnerable" class="plugins-vulnerable"/> <xul:label xbl:inherits="value=default" anonid="plugins-default" class="plugins-default"/> <xul:spacer flex="1"/> <xul:menulist anonid="plugins-menulist" class="pref-menulist" oncommand="AboutPermissions.onPermissionCommand(event, false);"> <xul:menupopup> <xul:menuitem anonid="ask" value="0" label="&permission.alwaysAsk;"/> <xul:menuitem anonid="allow" value="1" label="&permission.allow;"/> <xul:menuitem anonid="block" value="2" label="&permission.block;"/> </xul:menupopup> </xul:menulist> <xul:button xbl:inherits="value=set-default" anonid="plugins-set-default" class="pref-set-default" label="&permission.default;" oncommand="AboutPermissions.onPermissionCommand(event, true);"/> </xul:hbox> </content> <implementation> <constructor><![CDATA[ let mimeType = this.getAttribute("mimeType"); let permString = this.getAttribute("permString"); let menulist = document.getAnonymousElementByAttribute(this, "anonid", "plugins-menulist"); menulist.setAttribute("id", permString + "-menulist"); menulist.setAttribute("mimeType", mimeType); menulist.setAttribute("type", permString); let askitem = document.getAnonymousElementByAttribute(this, "anonid", "ask"); askitem.setAttribute("id", permString + "-0"); let allowitem = document.getAnonymousElementByAttribute(this, "anonid", "allow"); allowitem.setAttribute("id", permString + "-1"); let blockitem = document.getAnonymousElementByAttribute(this, "anonid", "block"); blockitem.setAttribute("id", permString + "-2"); let _default = document.getAnonymousElementByAttribute(this, "anonid", "plugins-default"); this.setDefaultVisibility(false); _default.setAttribute("value", "*"); let _setDefault = document.getAnonymousElementByAttribute(this, "anonid", "plugins-set-default"); _setDefault.setAttribute("id", permString + "-set-default"); _setDefault.setAttribute("class", "pref-set-default"); _setDefault.setAttribute("type", permString); ]]> </constructor> <method name="setDefaultVisibility"> <parameter name="visibility" /> <body><![CDATA[ let _default = document.getAnonymousElementByAttribute(this, "anonid", "plugins-default"); if (visibility) { _default.style.visibility = "visible"; } else { _default.style.visibility = "hidden"; } ]]> </body> </method> <method name="isClickToPlay"> <body><![CDATA[ let pluginHost = Components.classes["@mozilla.org/plugin/host;1"] .getService(Components.interfaces.nsIPluginHost); let mimeType = this.getAttribute("mimeType"); return (pluginHost.getStateForType(mimeType) == Components.interfaces.nsIPluginTag.STATE_CLICKTOPLAY); ]]> </body> </method> <method name="isBlocklisted"> <body><![CDATA[ let pluginHost = Components.classes["@mozilla.org/plugin/host;1"] .getService(Components.interfaces.nsIPluginHost); let blocklistService = Components.classes["@mozilla.org/extensions/blocklist;1"] .getService(Components.interfaces.nsIBlocklistService); let mimeType = this.getAttribute("mimeType"); let tags = pluginHost.getPluginTags(); let blocklistState = Components.interfaces.nsIBlocklistService.STATE_NOT_BLOCKED; for (let plugin of tags) { if (plugin.getMimeTypes()[0] == mimeType) { blocklistState = blocklistService.getPluginBlocklistState(plugin); break; } } return (blocklistState == Components.interfaces.nsIBlocklistService.STATE_VULNERABLE_UPDATE_AVAILABLE || blocklistState == Components.interfaces.nsIBlocklistService.STATE_VULNERABLE_NO_UPDATE); ]]> </body> </method> </implementation> </binding> </bindings>