diff --git a/source b/source index e4c174919c6..569387f093d 100644 --- a/source +++ b/source @@ -94282,451 +94282,6 @@ interface Navigator { - -
interface mixin NavigatorPlugins {
- [SameObject] readonly attribute PluginArray plugins;
- [SameObject] readonly attribute MimeTypeArray mimeTypes;
- boolean javaEnabled();
-};
-
-[Exposed=Window,
- LegacyUnenumerableNamedProperties]
-interface PluginArray {
- undefined refresh(optional boolean reload = false);
- readonly attribute unsigned long length;
- getter Plugin? item(unsigned long index);
- getter Plugin? namedItem(DOMString name);
-};
-
-[Exposed=Window,
- LegacyUnenumerableNamedProperties]
-interface MimeTypeArray {
- readonly attribute unsigned long length;
- getter MimeType? item(unsigned long index);
- getter MimeType? namedItem(DOMString name);
-};
-
-[Exposed=Window,
- LegacyUnenumerableNamedProperties]
-interface Plugin {
- readonly attribute DOMString name;
- readonly attribute DOMString description;
- readonly attribute DOMString filename;
- readonly attribute unsigned long length;
- getter MimeType? item(unsigned long index);
- getter MimeType? namedItem(DOMString name);
-};
-
-[Exposed=Window]
-interface MimeType {
- readonly attribute DOMString type;
- readonly attribute DOMString description;
- readonly attribute DOMString suffixes; // comma-separated
- readonly attribute Plugin enabledPlugin;
-};
-
- navigator
. plugins
. refresh
( [ refresh ] )Updates the lists of supported plugins and MIME types for this page, and reloads the page if the lists have changed.
- -navigator
. plugins
. length
Returns the number of plugins, represented by Plugin
objects, that the user agent reports.
navigator
. plugins
. item
(index)navigator
. plugins
[index]Returns the specified Plugin
object.
navigator
. plugins
. item
(name)navigator
. plugins
[name]Returns the Plugin
object for the plugin with the given name.
navigator
. mimeTypes
. length
Returns the number of MIME types, represented by MimeType
objects, supported by the plugins that the user agent reports.
navigator
. mimeTypes
. item
(index)navigator
. mimeTypes
[index]Returns the specified MimeType
object.
navigator
. mimeTypes
. item
(name)navigator
. mimeTypes
[name]Returns the MimeType
object for the given MIME type.
name
- Returns the plugin's name.
-description
- Returns the plugin's description.
-filename
- Returns the plugin library's filename, if applicable on the current platform.
-length
Returns the number of MIME types, represented by MimeType
objects, supported by the plugin.
item
(index)Returns the specified MimeType
object.
item
(name)Returns the MimeType
object for the given MIME type.
type
- Returns the MIME type.
-description
- Returns the MIME type's description.
-suffixes
- Returns the MIME type's typical file extensions, in a comma-separated list.
-enabledPlugin
- Returns the Plugin
object that implements this MIME type.
navigator
. javaEnabled()
Returns true if there's a plugin that supports the MIME type "application/x-java-vm
".
The navigator.plugins
attribute must return a
- PluginArray
object.
The navigator.mimeTypes
attribute must
- return a MimeTypeArray
object.
A PluginArray
object represents none, some, or all of the plugins supported by the user agent, each of which is represented by a Plugin
object. Each of these Plugin
- objects may be hidden plugins. A hidden plugin can't
- be enumerated, but can still be inspected by using its name.
The fewer plugins are represented by the
- PluginArray
object, and of those, the more that are hidden, the more the user's privacy will be protected. Each exposed plugin
- increases the number of bits that can be derived for fingerprinting. Hiding a plugin helps, but
- unless it is an extremely rare plugin, it is likely that a site attempting to derive the list of
- plugins can still determine whether the plugin is supported or not by probing for it by name (the
- names of popular plugins are widely known). Therefore not exposing a plugin at all is preferred.
- Unfortunately, many legacy sites use this feature to determine, for example, which plugin to use
- to play video. Not exposing any plugins at all might therefore not be entirely plausible.
The PluginArray
objects created by a user agent must not be live. The
- set of plugins represented by the objects must not change once an object is created, except when
- it is updated by the refresh()
method.
Each plugin represented by a PluginArray
can support a number of
- MIME types. For each such plugin, the user agent must
- pick one or more of these MIME types to be those that are
- explicitly supported.
The explicitly supported MIME types of
- a plugin are those that are exposed through the Plugin
and MimeTypeArray
interfaces. As with plugins themselves, any variation between users regarding what is exposed
- allows sites to fingerprint users. User agents are therefore encouraged to expose the same MIME types for all users of a plugin, regardless of the
- actual types supported... at least, within the constraints imposed by compatibility with legacy
- content.
-
- The supported property indices of a PluginArray
object are the numbers
- from zero to the number of non-hidden plugins represented by the object, if any.
-
- The length
attribute must return the
- number of non-hidden plugins
- represented by the object.
The item()
method of a
- PluginArray
object must return null if the argument is not one of the object's
- supported property indices, and otherwise must return the result of running the
- following steps, using the method's argument as index:
Let list be the Plugin
objects
- representing the non-hidden plugins represented by the PluginArray
object.
Sort list alphabetically by the name
of each Plugin
.
Return the indexth entry in list.
It is important for - privacy that the order of plugins not leak additional information, e.g., the order in which - plugins were installed.
- -
-
- The supported property names of a PluginArray
object are the values of
- the name
attributes of all the Plugin
objects represented by the PluginArray
object.
The namedItem()
method of a
- PluginArray
object must return null if the argument is not one of the object's
- supported property names, and otherwise must return the Plugin
object, of those represented by the PluginArray
- object, that has a name
equal to the method's argument.
The refresh()
method of the
- PluginArray
object of a Navigator
object, when invoked, must check to
- see if any plugins have been installed or reconfigured since the user
- agent created the PluginArray
object. If so, and the method's argument is true, then
- the user agent must act as if the location.reload()
- method was called instead. Otherwise, the user agent must update the PluginArray
- object and MimeTypeArray
object created for attributes of that Navigator
- object, and the Plugin
and MimeType
objects created
- for those PluginArray
and MimeTypeArray
objects, using the same Plugin
objects for cases where the name
is the same, and the same MimeType
objects for
- cases where the type
is the same, and creating new objects
- for cases where there were no matching objects immediately prior to the refresh()
call. Old Plugin
- and MimeType
objects must continue to return the same values that they had prior to
- the update, though naturally now the data is stale and may appear inconsistent (for example, an
- old MimeType
entry might list as its enabledPlugin
a Plugin
- object that no longer lists that MimeType
as a supported MimeType
).
A MimeTypeArray
object represents the MIME types
- explicitly supported by plugins supported by the user
- agent, each of which is represented by a MimeType
object.
The MimeTypeArray
objects created by a user agent must not be live.
- The set of MIME types represented by the objects must not change once an object is created, except
- when it is updated by the PluginArray
object's refresh()
method.
-
- The supported property indices of a MimeTypeArray
object are the numbers
- from zero to the number of MIME types explicitly
- supported by non-hidden plugins represented by the corresponding PluginArray
object,
- if any.
-
- The length
attribute must return the
- number of MIME types explicitly supported by
- non-hidden plugins represented by
- the corresponding PluginArray
object, if any.
The item()
method of a
- MimeTypeArray
object must return null if the argument is not one of the object's
- supported property indices, and otherwise must return the result of running the
- following steps, using the method's argument as index:
Let list be the MimeType
objects representing the MIME types explicitly supported by non-hidden plugins represented by the corresponding
- PluginArray
object, if any.
Sort list alphabetically by the type
of each MimeType
.
Return the indexth entry in list.
It is important for - privacy that the order of MIME types not leak additional information, e.g., the order in - which plugins were installed.
- -
-
- The supported property names of a MimeTypeArray
object are the values of
- the type
attributes of all the MimeType
- objects represented by the MimeTypeArray
object.
The namedItem()
method of a
- MimeTypeArray
object must return null if the argument is not one of the object's
- supported property names, and otherwise must return the MimeType
object
- that has a type
equal to the method's argument.
A Plugin
object represents a plugin. It has
- several attributes to provide details about the plugin, and can be enumerated to obtain the list
- of MIME types that it explicitly
- supports.
The Plugin
objects created by a user agent must not be
- live. The set of MIME types represented by the objects, and the values of the
- objects' attributes, must not change once an object is created, except when updated by the
- PluginArray
object's refresh()
- method.
The reported MIME types for a Plugin
object are the
- MIME types explicitly supported by the corresponding
- plugin when this object was last created or updated by refresh()
, whichever happened most
- recently.
-
- The supported property indices of a Plugin
object
- are the numbers from zero to the number of reported MIME types.
-
- The length
attribute must return the number of
- reported MIME types.
The item()
method of a Plugin
object must return null if the argument is not one of the
- object's supported property indices, and otherwise must return the result of running
- the following steps, using the method's argument as index:
Let list be the MimeType
objects representing the
- reported MIME types.
Sort list alphabetically by the type
of each MimeType
.
Return the indexth entry in list.
It is important for - privacy that the order of MIME types not leak additional information, e.g., the order in - which plugins were installed.
- -
-
- The supported property names of a Plugin
object are
- the values of the type
attributes of the
- MimeType
objects representing the reported MIME types.
The namedItem()
method of a Plugin
object must return null if the argument is not one of the
- object's supported property names, and otherwise must return the
- MimeType
object that has a type
equal to the
- method's argument.
The name
attribute must return the
- plugin's name.
The description
and filename
attributes must return
- implementation-defined (in all likelihood, plugin-defined) strings. In
- each case, the same string must be returned each time, except that the strings returned may change
- when the refresh()
method updates the object.
-
- If the values returned by the description
or filename
attributes vary between versions of a
- plugin, they can be used both as a fingerprinting vector and, even more importantly,
- as a trivial way to determine what security vulnerabilities a plugin (and thus a
- browser) may have. It is thus highly recommended that the description
attribute just return the same value as the
- name
attribute, and that the filename
attribute return the empty string.
A MimeType
object represents a MIME type that is, or was,
- explicitly supported by a plugin.
The MimeType
objects created by a user agent must not be live. The
- values of the objects' attributes must not change once an object is created, except when updated
- by the PluginArray
object's refresh()
- method.
The type
attribute must return the
- valid MIME type string with no parameters describing the MIME type.
The description
and suffixes
attributes must return
- implementation-defined (in all likelihood, plugin-defined) strings. In
- each case, the same string must be returned each time, except that the strings returned may change
- when the refresh()
method updates the object.
-
- If the values returned by the description
or suffixes
attributes vary between versions of a
- plugin, they can be used both as a fingerprinting vector and, even more importantly,
- as a trivial way to determine what security vulnerabilities a plugin (and thus a
- browser) may have. It is thus highly recommended that the description
attribute just return the same value as the
- type
attribute, and that the suffixes
attribute return the empty string.
Commas in the suffixes
attribute are
- interpreted as separating subsequent filename extensions, as in "htm,html
".
The enabledPlugin
attribute must
- return the Plugin
object that represents the plugin
- that explicitly supported the MIME type that this MimeType
- object represents when this object was last created or updated by refresh()
, whichever happened most
- recently.
-
- The navigator.javaEnabled()
method must
- return true if the user agent supports a plugin that supports the MIME
- type "application/x-java-vm
"; otherwise it must return false.
[Exposed=(Window,Worker), Serializable, Transferable] @@ -117221,6 +116776,97 @@ interface External { data-x="dom-external-IsSearchProviderInstalled">IsSearchProviderInstalled()
methods must do nothing. +
+ ++ +interface mixin NavigatorPlugins { + [SameObject] readonly attribute PluginArray plugins; + [SameObject] readonly attribute MimeTypeArray mimeTypes; + boolean javaEnabled(); +}; + +[Exposed=Window] +interface PluginArray { + undefined refresh(); + readonly attribute unsigned long length; + object? item(unsigned long index); + object? namedItem(DOMString name); +}; + +[Exposed=Window] +interface MimeTypeArray { + readonly attribute unsigned long length; + object? item(unsigned long index); + object? namedItem(DOMString name); +}; + +[Exposed=Window] +interface Plugin { + readonly attribute undefined name; + readonly attribute undefined description; + readonly attribute undefined filename; + readonly attribute undefined length; + undefined item(unsigned long index); + undefined namedItem(DOMString name); +}; + +[Exposed=Window] +interface MimeType { + readonly attribute undefined type; + readonly attribute undefined description; + readonly attribute undefined suffixes; + readonly attribute undefined enabledPlugin; +};
Each
+ +NavigatorPlugins
object has a plugins array, which is a new +PluginArray
object, and a mime types array, which is a new +MimeTypeArray
object.The
+ +NavigatorPlugins
mixin'splugins
getter steps are to return this's + plugins array.The
+ +NavigatorPlugins
mixin'smimeTypes
getter steps are to return + this's mime types array.The
+ +NavigatorPlugins
mixin'sjavaEnabled()
method steps are to return + false.The
+ +PluginArray
interface'slength
getter steps are to return 0.The
+ +PluginArray
interface'sitem()
andnamedItem()
method steps are to return null.The
+ +PluginArray
interface'srefresh()
method steps are to do nothing.The
+ +MimeTypeArray
interface'slength
getter steps are to return 0.The
+ +MimeTypeArray
interface'sitem()
andnamedItem()
method steps are to return null.The
+ +Plugin
interface'sname
,description
,filename
, andlength
getter steps are to return undefined.The
+ +Plugin
interface'sitem()
andnamedItem()
method steps are to do nothing.The
+MimeType
interface'stype
,description
,suffixes
, andenabledPlugin
getter steps are to return + undefined.