diff --git a/source b/source index e4c174919c6..569387f093d 100644 --- a/source +++ b/source @@ -94282,451 +94282,6 @@ interface Navigator { - -
Plugins
- -
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;
-};
- -
- -
window . 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.

- -
- -
window . navigator . plugins . length
-
-

Returns the number of plugins, represented by Plugin objects, that the user agent reports.

-
- -
plugin = window . navigator . plugins . item(index)
-
window . navigator . plugins[index]
-
-

Returns the specified Plugin object.

-
- -
plugin = window . navigator . plugins . item(name)
-
window . navigator . plugins[name]
-
-

Returns the Plugin object for the plugin with the given name.

-
- -
window . navigator . mimeTypes . length
-
-

Returns the number of MIME types, represented by MimeType objects, supported by the plugins that the user agent reports.

-
- -
mimeType = window . navigator . mimeTypes . item(index)
-
window . navigator . mimeTypes[index]
-
-

Returns the specified MimeType object.

-
- -
mimeType = window . navigator . mimeTypes . item(name)
-
window . navigator . mimeTypes[name]
-
-

Returns the MimeType object for the given MIME type.

-
- -
plugin . name -
-

Returns the plugin's name.

-
- -
plugin . description -
-

Returns the plugin's description.

-
- -
plugin . filename -
-

Returns the plugin library's filename, if applicable on the current platform.

-
- -
plugin . length
-
-

Returns the number of MIME types, represented by MimeType objects, supported by the plugin.

-
- -
mimeType = plugin . item(index)
-
plugin[index]
-
-

Returns the specified MimeType object.

-
- -
mimeType = plugin . item(name)
-
plugin[name]
-
-

Returns the MimeType object for the given MIME type.

-
- -
mimeType . type -
-

Returns the MIME type.

-
- -
mimeType . description -
-

Returns the MIME type's description.

-
- -
mimeType . suffixes -
-

Returns the MIME type's typical file extensions, in a comma-separated list.

-
- -
mimeType . enabledPlugin -
-

Returns the Plugin object that implements this MIME type.

-
- -
window . 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:

- -
    -
  1. Let list be the Plugin objects - representing the non-hidden plugins represented by the PluginArray object.

  2. - -
  3. Sort list alphabetically by the name of each Plugin.

  4. - -
  5. Return the indexth entry in list.

  6. -
- -

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:

- -
    -
  1. Let list be the MimeType objects representing the MIME types explicitly supported by non-hidden plugins represented by the corresponding - PluginArray object, if any.

  2. - -
  3. Sort list alphabetically by the type of each MimeType.

  4. - -
  5. Return the indexth entry in list.

  6. -
- -

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:

- -
    -
  1. Let list be the MimeType objects representing the - reported MIME types.

  2. - -
  3. Sort list alphabetically by the type of each MimeType.

  4. - -
  5. Return the indexth entry in list.

  6. -
- -

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.

- -
- - -

Images

[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's plugins getter steps are to return this's + plugins array.

+ +

The NavigatorPlugins mixin's mimeTypes getter steps are to return + this's mime types array.

+ +

The NavigatorPlugins mixin's javaEnabled() method steps are to return + false.

+ +

The PluginArray interface's length getter steps are to return 0.

+ +

The PluginArray interface's item() and namedItem() method steps are to return null.

+ +

The PluginArray interface's refresh() method steps are to do nothing.

+ +

The MimeTypeArray interface's length getter steps are to return 0.

+ +

The MimeTypeArray interface's item() and namedItem() method steps are to return null.

+ +

The Plugin interface's name, description, filename, and length getter steps are to return undefined.

+ +

The Plugin interface's item() and namedItem() method steps are to do nothing.

+ +

The MimeType interface's type, description, suffixes, and enabledPlugin getter steps are to return + undefined.

+