|
3 | 3 | <head>
|
4 | 4 | <title>Web MIDI API</title>
|
5 | 5 | <meta charset="utf-8" />
|
6 |
| - <script src='https://www.w3.org/Tools/respec/respec-w3c-common' class='remove'></script> |
| 6 | + <script src='https://www.w3.org/Tools/respec/respec-w3c' class='remove'></script> |
7 | 7 | <script class='remove'>
|
8 | 8 | var respecConfig = {
|
9 | 9 | shortName: "webmidi",
|
10 | 10 | specStatus: "ED",
|
11 | 11 | copyrightStart: "2015",
|
12 |
| - edDraftURI: "https://webaudio.github.io/web-midi-api/", |
13 | 12 | editors: [
|
14 | 13 | { name: "Chris Wilson",
|
15 | 14 | url: "mailto:cwilso@google.com",
|
|
22 | 21 | w3cid: "45545"
|
23 | 22 | },
|
24 | 23 | ],
|
25 |
| - github: "https://github.com/WebAudio/web-midi-api/", |
| 24 | + github: "WebAudio/web-midi-api", |
26 | 25 | wg: "Audio Working Group",
|
27 | 26 | wgURI: "https://www.w3.org/2011/audio/",
|
28 | 27 | wgPublicList: "public-audio",
|
@@ -122,7 +121,8 @@ <h2>Extensions to the <dfn>Navigator</dfn> interface</h2>
|
122 | 121 |
|
123 | 122 | <pre class="idl">
|
124 | 123 | partial interface Navigator {
|
125 |
| - [SecureContext] Promise <MIDIAccess> requestMIDIAccess(optional MIDIOptions options = {}); |
| 124 | + [SecureContext] |
| 125 | + Promise <MIDIAccess> requestMIDIAccess(optional MIDIOptions options = {}); |
126 | 126 | };
|
127 | 127 | </pre>
|
128 | 128 | <dl>
|
@@ -795,8 +795,9 @@ <h2><dfn>MIDIPortConnectionState</dfn> Enum</h2>
|
795 | 795 | <h2 id="MIDIMessageEvent"><dfn>MIDIMessageEvent</dfn> Interface</h2>
|
796 | 796 | <p>An event object implementing this interface is passed to a MIDIInput's onmidimessage handler when MIDI messages are received. Note that the DOM {{Event}} <code>timeStamp</code> attribute is defined as a {{DOMHighResTimeStamp}}, and represents the high-resolution time of when the event was received or is to be sent.</p>
|
797 | 797 | <pre class="idl">
|
798 |
| - [SecureContext, Exposed=Window, Constructor(DOMString type, optional MIDIMessageEventInit eventInitDict = {})] |
| 798 | + [SecureContext, Exposed=Window] |
799 | 799 | interface MIDIMessageEvent : Event {
|
| 800 | + constructor(DOMString type, optional MIDIMessageEventInit eventInitDict = {}); |
800 | 801 | readonly attribute Uint8Array data;
|
801 | 802 | };
|
802 | 803 | </pre>
|
@@ -849,8 +850,9 @@ <h2 id="MIDIConnectionEvent"><dfn>MIDIConnectionEvent</dfn> Interface</h2>
|
849 | 850 | for new devices infrequently. As such, it is suggested that heavy
|
850 | 851 | reliance on connection events not be used.</p>
|
851 | 852 | <pre class="idl">
|
852 |
| - [SecureContext, Exposed=Window, Constructor(DOMString type, optional MIDIConnectionEventInit eventInitDict = {})] |
| 853 | + [SecureContext, Exposed=Window] |
853 | 854 | interface MIDIConnectionEvent : Event {
|
| 855 | + constructor(DOMString type, optional MIDIConnectionEventInit eventInitDict = {}); |
854 | 856 | readonly attribute MIDIPort port;
|
855 | 857 | };
|
856 | 858 | </pre>
|
@@ -1117,7 +1119,7 @@ <h2>Security and Privacy Considerations of MIDI</h2>
|
1117 | 1119 | <p>In short: the additional fingerprinting exposure of enumerating MIDI devices is directly analogous to the Gamepad API’s additional fingerprinting exposure through gamepad enumeration; typical users will only have at most a few devices connected, their configuration may change, and the information exposed is about the interface itself (i.e., no user-configured data).
|
1118 | 1120 | <p>The additional security concern for receiving short messages is also small - it’s analogous to listening to keyboard, mouse, mobile/laptop accelerometer, touch input or gamepad events; there is no additional information exposed, and all messages other than clock signals must be initiated by the user.
|
1119 | 1121 | <p>The additional concerns about sending short messages are analogous to any audio output - you cannot overwrite user information or expose use information, but you can make sounds happen, change patches, or (in rare configurations) toggle lights - but non-destructively, and not persistently.
|
1120 |
| - <p>System Exclusive, on the other hand, has a much less bounded potential, and it seems that distinguishing requests for SysEx separately in the API is a good idea, in order to more carefully provide user security hooks. The <a data-lt="navigator.requestMIDIAccess">suggested security model</a> explicitly allows user agents to require the user's approval before giving access to MIDI devices, although it is not currently required to prompt the user for this approval - but it also detailed that system exclusive support must be requested as part of that request. |
| 1122 | + <p>System Exclusive, on the other hand, has a much less bounded potential, and it seems that distinguishing requests for SysEx separately in the API is a good idea, in order to more carefully provide user security hooks. The <a data-lt="Navigator.requestMIDIAccess">suggested security model</a> explicitly allows user agents to require the user's approval before giving access to MIDI devices, although it is not currently required to prompt the user for this approval - but it also detailed that system exclusive support must be requested as part of that request. |
1121 | 1123 | </p>
|
1122 | 1124 | </section>
|
1123 | 1125 |
|
|
0 commit comments