You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: tr/algorithms/autoplay-detection.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@
12
12
"html": "If <code class=\"idl\"><a data-link-type=\"idl\" href=\"https://www.w3.org/TR/autoplay-detection/#dom-navigator-getautoplaypolicy-type-type\" id=\"ref-for-dom-navigator-getautoplaypolicy-type-type\">type</a></code> is <code class=\"idl\"><a data-link-type=\"idl\" href=\"https://www.w3.org/TR/autoplay-detection/#dom-autoplaypolicymediatype-mediaelement\" id=\"ref-for-dom-autoplaypolicymediatype-mediaelement①\">mediaelement</a></code>, return a\n result that represents the current status for <code class=\"idl\"><a data-link-type=\"idl\" href=\"https://html.spec.whatwg.org/multipage/media.html#htmlmediaelement\" id=\"ref-for-htmlmediaelement⑤\">HTMLMediaElement</a></code> and its extensions, such as <code class=\"idl\"><a data-link-type=\"idl\" href=\"https://html.spec.whatwg.org/multipage/media.html#htmlvideoelement\" id=\"ref-for-htmlvideoelement②\">HTMLVideoElement</a></code> and <code class=\"idl\"><a data-link-type=\"idl\" href=\"https://html.spec.whatwg.org/multipage/media.html#htmlaudioelement\" id=\"ref-for-htmlaudioelement②\">HTMLAudioElement</a></code>, which exist in the <code class=\"idl\"><a data-link-type=\"idl\" href=\"https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-document-2\" id=\"ref-for-dom-document-2②\">document</a></code> contained in the <code class=\"idl\"><a data-link-type=\"idl\" href=\"https://html.spec.whatwg.org/multipage/nav-history-apis.html#window\" id=\"ref-for-window②\">Window</a></code> object associated with the queried <code class=\"idl\"><a data-link-type=\"idl\" href=\"https://html.spec.whatwg.org/multipage/system-state.html#navigator\" id=\"ref-for-navigator④\">Navigator</a></code> object."
13
13
},
14
14
{
15
-
"html": "If <code class=\"idl\"><a data-link-type=\"idl\" href=\"https://www.w3.org/TR/autoplay-detection/#dom-navigator-getautoplaypolicy-type-type\" id=\"ref-for-dom-navigator-getautoplaypolicy-type-type①\">type</a></code> is <code class=\"idl\"><a data-link-type=\"idl\" href=\"https://www.w3.org/TR/autoplay-detection/#dom-autoplaypolicymediatype-audiocontext\" id=\"ref-for-dom-autoplaypolicymediatype-audiocontext①\">audiocontext</a></code>, return a\n result that represents the current status for <code class=\"idl\"><a data-link-type=\"idl\" href=\"https://www.w3.org/TR/webaudio/#audiocontext\" id=\"ref-for-audiocontext②\">AudioContext</a></code>,\n which exist in the <code class=\"idl\"><a data-link-type=\"idl\" href=\"https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-document-2\" id=\"ref-for-dom-document-2③\">document</a></code> contained in the <code class=\"idl\"><a data-link-type=\"idl\" href=\"https://html.spec.whatwg.org/multipage/nav-history-apis.html#window\" id=\"ref-for-window③\">Window</a></code> object\n associated with the queried <code class=\"idl\"><a data-link-type=\"idl\" href=\"https://html.spec.whatwg.org/multipage/system-state.html#navigator\" id=\"ref-for-navigator⑤\">Navigator</a></code> object."
15
+
"html": "If <code class=\"idl\"><a data-link-type=\"idl\" href=\"https://www.w3.org/TR/autoplay-detection/#dom-navigator-getautoplaypolicy-type-type\" id=\"ref-for-dom-navigator-getautoplaypolicy-type-type①\">type</a></code> is <code class=\"idl\"><a data-link-type=\"idl\" href=\"https://www.w3.org/TR/autoplay-detection/#dom-autoplaypolicymediatype-audiocontext\" id=\"ref-for-dom-autoplaypolicymediatype-audiocontext①\">audiocontext</a></code>, return a\n result that represents the current status for <code class=\"idl\"><a data-link-type=\"idl\" href=\"https://www.w3.org/TR/webaudio-1.0/#audiocontext\" id=\"ref-for-audiocontext②\">AudioContext</a></code>,\n which exist in the <code class=\"idl\"><a data-link-type=\"idl\" href=\"https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-document-2\" id=\"ref-for-dom-document-2③\">document</a></code> contained in the <code class=\"idl\"><a data-link-type=\"idl\" href=\"https://html.spec.whatwg.org/multipage/nav-history-apis.html#window\" id=\"ref-for-window③\">Window</a></code> object\n associated with the queried <code class=\"idl\"><a data-link-type=\"idl\" href=\"https://html.spec.whatwg.org/multipage/system-state.html#navigator\" id=\"ref-for-navigator⑤\">Navigator</a></code> object."
"html": "For additional terms and idioms specific to the <a data-link-type=\"biblio\" href=\"https://www.w3.org/TR/openscreen-application/#biblio-presentation-api\" title=\"Presentation API\">Presentation API</a> or <a data-link-type=\"biblio\" href=\"https://www.w3.org/TR/openscreen-application/#biblio-remote-playback\" title=\"Remote Playback API\">Remote Playback API</a>,\nplease consult the respective specifications.",
9
+
"rationale": "if",
10
+
"steps": [
11
+
{
12
+
"html": "<p>A <a data-link-type=\"dfn\" href=\"https://www.w3.org/TR/openscreen-application/#controller\" id=\"ref-for-controller①\">controller</a> must be able to determine if a <a data-link-type=\"dfn\" href=\"https://www.w3.org/TR/openscreen-application/#receiver\" id=\"ref-for-receiver①\">receiver</a> is reasonably\ncapable of rendering a specific <a data-link-type=\"dfn\" href=\"https://www.w3.org/TR/presentation-api/#dfn-presentation-request-url\" id=\"ref-for-dfn-presentation-request-url\">presentation request URL</a>.</p>"
13
+
},
14
+
{
15
+
"html": "<p>A controller must be able to start a new <a data-link-type=\"dfn\" href=\"https://www.w3.org/TR/presentation-api/#dfn-receiving-browsing-context\" id=\"ref-for-dfn-receiving-browsing-context①\">presentation</a> on a\nreceiver given a <a data-link-type=\"dfn\" href=\"https://www.w3.org/TR/presentation-api/#dfn-presentation-request-url\" id=\"ref-for-dfn-presentation-request-url①\">presentation request URL</a> and <a data-link-type=\"dfn\" href=\"https://www.w3.org/TR/presentation-api/#dfn-presentation-identifier\" id=\"ref-for-dfn-presentation-identifier\">presentation\nidentifier</a>.</p>"
16
+
},
17
+
{
18
+
"html": "<p>A controller must be able to create a new <code class=\"idl\"><a data-link-type=\"idl\" href=\"https://www.w3.org/TR/presentation-api/#dom-presentationconnection\" id=\"ref-for-dom-presentationconnection\">PresentationConnection</a></code> to an\nexisting presentation on the receiver, given its <a data-link-type=\"dfn\" href=\"https://www.w3.org/TR/presentation-api/#dfn-presentation-request-url\" id=\"ref-for-dfn-presentation-request-url②\">presentation request\nURL</a> and <a data-link-type=\"dfn\" href=\"https://www.w3.org/TR/presentation-api/#dfn-presentation-identifier\" id=\"ref-for-dfn-presentation-identifier①\">presentation identifier</a>.</p>"
19
+
},
20
+
{
21
+
"html": "<p>It must be possible to close a <code class=\"idl\"><a data-link-type=\"idl\" href=\"https://www.w3.org/TR/presentation-api/#dom-presentationconnection\" id=\"ref-for-dom-presentationconnection①\">PresentationConnection</a></code> between a\ncontroller and a presentation, and signal both parties with the reason why\nthe connection was closed.</p>"
22
+
},
23
+
{
24
+
"html": "<p>Multiple controllers must be able to connect to a single presentation\nsimultaneously.</p>"
25
+
},
26
+
{
27
+
"html": "<p>Messages sent by the controller must be delivered to the presentation (or\nvice versa) in a reliable and in-order fashion.</p>"
28
+
},
29
+
{
30
+
"html": "<p>If a message cannot be delivered, then the controller must be\nable to signal the receiver (or vice versa) that the connection should be\nclosed with reason <code>error</code>.</p>"
31
+
},
32
+
{
33
+
"html": "<p>The controller and presentation must be able to send and receive <code>DOMString</code> messages (represented as <code>string</code> type in ECMAScript).</p>"
34
+
},
35
+
{
36
+
"html": "<p>The controller and presentation must be able to send and receive binary\nmessages (represented as <code>Blob</code> objects in HTML5, or <code>ArrayBuffer</code> or <code>ArrayBufferView</code> types in ECMAScript).</p>"
37
+
},
38
+
{
39
+
"html": "<p>The controller must be able to signal to the receiver to\nterminate a presentation, given its <a data-link-type=\"dfn\" href=\"https://www.w3.org/TR/presentation-api/#dfn-presentation-request-url\" id=\"ref-for-dfn-presentation-request-url③\">presentation request URL</a> and <a data-link-type=\"dfn\" href=\"https://www.w3.org/TR/presentation-api/#dfn-presentation-identifier\" id=\"ref-for-dfn-presentation-identifier②\">presentation identifier</a>.</p>"
40
+
},
41
+
{
42
+
"html": "<p>The receiver must be able to signal all connected controllers\nwhen a presentation is terminated.</p>"
43
+
}
44
+
]
45
+
},
46
+
{
47
+
"html": "As messages are modified or extended over time, certain rules must be followed\nto maintain backwards compatibiilty with agents that understand older versions\nof messages.",
48
+
"rationale": "if",
49
+
"steps": [
50
+
{
51
+
"html": "<p>If a required field is added to or removed from a message (either to/from the\nmessage directly or indirectly through the field of a field), a new type key\nmust be assigned to the message. Is is effectively a new message and must not\nbe sent unless the receiving agent is known to understand the new type key.</p>"
52
+
},
53
+
{
54
+
"html": "<p>If an optional field is added to a message (either to the message directly\nor indirectly through the field of a field), the type key may remain unchanged\nif the behavior of older receiving agents that do not understand the added field\nis compatible with newer sending agents that include the field.\nOtherwise, a new type key must be assigned.</p>"
55
+
},
56
+
{
57
+
"html": "<p>If an optional field is removed from a message (either from the message\ndirectly or indirectly through the field of a field), the type key may remain\nunchanged if the behavior of newer receiving agents that do not understand the\nremoved field is compatible with older sending agents that include the field.\nOtherwise, a new type key must be assigned.</p>"
58
+
},
59
+
{
60
+
"html": "<p>Required fields may not be added or removed from array-based messages, such\nas audio-frame.</p>"
"html": "The <dfn class=\"dfn-paneled has-dfn-panel\" data-dfn-type=\"dfn\" data-noexport=\"\" id=\"agent-fingerprint\" role=\"button\" aria-expanded=\"false\" tabindex=\"0\">agent fingerprint</dfn> of an agent is computed by following these\nsteps:",
11
+
"rationale": "compute",
12
+
"steps": [
13
+
{
14
+
"html": "<p>Compute the <a href=\"https://www.rfc-editor.org/rfc/rfc7469#section-2.4\">SKPI Fingerprint</a> of the <a data-link-type=\"dfn\" href=\"https://www.w3.org/TR/openscreen-network/#agent-certificate\" id=\"ref-for-agent-certificate\">agent certificate</a> according to <a data-link-type=\"biblio\" href=\"https://www.w3.org/TR/openscreen-network/#biblio-rfc7469\" title=\"Public Key Pinning Extension for HTTP\">[RFC7469]</a> using <a data-link-type=\"biblio\" href=\"https://www.w3.org/TR/openscreen-network/#biblio-rfc6234\" title=\"US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)\">SHA-256</a> as the hash algorithm.</p>"
15
+
},
16
+
{
17
+
"html": "<p>base64 encode the result of Step 1 according to <a data-link-type=\"biblio\" href=\"https://www.w3.org/TR/openscreen-network/#biblio-rfc4648\" title=\"The Base16, Base32, and Base64 Data Encodings\">[RFC4648]</a>.</p>"
"html": "Let the <dfn class=\"dfn-paneled has-dfn-panel\" data-dfn-type=\"dfn\" data-noexport=\"\" id=\"certificate-serial-number\" role=\"button\" aria-expanded=\"false\" tabindex=\"0\">certificate serial number</dfn> be the result of the following\nsteps:",
25
+
"rationale": "if",
26
+
"steps": [
27
+
{
28
+
"html": "If the agent has never generated an agent certificate:",
29
+
"rationale": "let",
30
+
"steps": [
31
+
{
32
+
"html": "Let the <dfn class=\"dfn-paneled has-dfn-panel\" data-dfn-type=\"dfn\" data-noexport=\"\" id=\"certificate-serial-number-base\" role=\"button\" aria-expanded=\"false\" tabindex=\"0\">certificate serial number base</dfn> be a 128-bit <a data-link-type=\"dfn\" href=\"https://datatracker.ietf.org/doc/html/rfc4122#section-4.4\" id=\"ref-for-section-4.4\">UUID</a>."
33
+
},
34
+
{
35
+
"html": "Let the <dfn class=\"dfn-paneled has-dfn-panel\" data-dfn-type=\"dfn\" data-noexport=\"\" id=\"certificate-serial-number-counter\" role=\"button\" aria-expanded=\"false\" tabindex=\"0\">certificate serial number counter</dfn> be a 32-bit\n unsigned integer, initially set to 0."
36
+
}
37
+
]
38
+
},
39
+
{
40
+
"html": "Generate a 160-bit value as follows:",
41
+
"rationale": "increment",
42
+
"steps": [
43
+
{
44
+
"html": "Increment the <a data-link-type=\"dfn\" href=\"https://www.w3.org/TR/openscreen-network/#certificate-serial-number-counter\" id=\"ref-for-certificate-serial-number-counter\">certificate serial number counter</a> by one."
45
+
},
46
+
{
47
+
"html": "Assign the upper 128 bits to the <a data-link-type=\"dfn\" href=\"https://www.w3.org/TR/openscreen-network/#certificate-serial-number-base\" id=\"ref-for-certificate-serial-number-base\">certificate serial number base</a>."
48
+
},
49
+
{
50
+
"html": "Assign the lower 32 bits to the <a data-link-type=\"dfn\" href=\"https://www.w3.org/TR/openscreen-network/#certificate-serial-number-counter\" id=\"ref-for-certificate-serial-number-counter①\">certificate serial number counter</a>."
"html": "Each time the agent changes its DNS-SD <a data-link-type=\"dfn\" href=\"https://datatracker.ietf.org/doc/html/rfc6763#section-4.1\" id=\"ref-for-section-4.1\">Service Instance Name</a> or <a data-link-type=\"dfn\" href=\"https://www.w3.org/TR/openscreen-network/#certificate-serial-number\" id=\"ref-for-certificate-serial-number\">certificate serial number</a> it must compute an <dfn class=\"dfn-paneled has-dfn-panel\" data-dfn-type=\"dfn\" data-noexport=\"\" id=\"agent-hostname\" role=\"button\" aria-expanded=\"false\" tabindex=\"0\">agent hostname</dfn> as\nfollows.",
60
+
"rationale": "set",
61
+
"steps": [
62
+
{
63
+
"html": "<p>Set <var>hexSerialNumber</var> to the <a data-link-type=\"biblio\" href=\"https://www.w3.org/TR/openscreen-network/#biblio-rfc4648\" title=\"The Base16, Base32, and Base64 Data Encodings\">base64</a> encoded <a data-link-type=\"dfn\" href=\"https://www.w3.org/TR/openscreen-network/#certificate-serial-number\" id=\"ref-for-certificate-serial-number①\">certificate serial number</a>.</p>"
64
+
},
65
+
{
66
+
"html": "Set <var>encodedInstanceName</var> to the result of the following:",
67
+
"rationale": "replace",
68
+
"steps": [
69
+
{
70
+
"html": "<p>Replace any character in the DNS-SD Instance Name other\nthan <code>[A-Za-z0-9-]</code> with a hyphen <code>-</code>.</p>"
71
+
}
72
+
]
73
+
},
74
+
{
75
+
"html": "Set <var>encodedDomain</var> to the result of the following:",
76
+
"rationale": "replace",
77
+
"steps": [
78
+
{
79
+
"html": "<p>Replace any character in the DNS-SD Domain Name other\nthan <code>[A-Za-z0-9-]</code> with a hyphen <code>-</code>.</p>"
80
+
}
81
+
]
82
+
},
83
+
{
84
+
"html": "<p>Set the <a data-link-type=\"dfn\" href=\"https://www.w3.org/TR/openscreen-network/#agent-hostname\" id=\"ref-for-agent-hostname\">agent hostname</a> to the string <var>hexSerialNumber</var> + <code>.</code> + <var>encodedInstanceName</var> + <code>.</code> + <var>encodedDomain</var></p>"
85
+
}
86
+
]
87
+
},
88
+
{
89
+
"html": "To encode <code>P</code> into a numeric string, follow these steps:",
90
+
"rationale": "convert",
91
+
"steps": [
92
+
{
93
+
"html": "<p>Convert <code>P</code> to a base-10 integer <code>N</code>.</p>"
94
+
},
95
+
{
96
+
"html": "<p>If <code>N</code> has fewer than 9 digits:</p>\n <ul>\n <li data-md=\"\">\n <p>Zero-pad <code>N</code> on the left with <code>3 - len(N) mod 3</code> digits.</p>\n </li><li data-md=\"\">\n <p>Output <code>N</code> in groups of three digits separated by dashes.</p>\n </li></ul>"
97
+
},
98
+
{
99
+
"html": "<p>If <code>N</code> has more than 9 digits:</p>\n <ul>\n <li data-md=\"\">\n <p>Zero-pad <code>N</code> on the left with <code>4 - len(N) mod 4</code> digits.</p>\n </li><li data-md=\"\">\n <p>Output <code>N</code> in groups of four digits separated by dashes.</p>\n </li></ul>"
100
+
}
101
+
]
102
+
},
103
+
{
104
+
"html": "To decode a string <code>N</code> into a PSK <code>P</code>, follow these steps:",
105
+
"rationale": "remove",
106
+
"steps": [
107
+
{
108
+
"html": "<p>Remove dashes and leading zeros from <code>N</code>.</p>"
109
+
},
110
+
{
111
+
"html": "<p>Parse <code>N</code> as a base-10 decimal number to obtain <code>P</code>.</p>"
112
+
}
113
+
]
114
+
},
115
+
{
116
+
"html": "To encode a PSK into a QR code, follow these steps:",
117
+
"rationale": "set",
118
+
"steps": [
119
+
{
120
+
"html": "<p>Set <code>N</code> to the value of <code>P</code> converted to an ASCII-encoded, hexadecimal string.</p>"
121
+
},
122
+
{
123
+
"html": "<p>Construct a text <a data-link-type=\"dfn\" href=\"https://www.iso.org/standard/62021.html#\" id=\"ref-for-something②\">QR code</a> with the value of <code>N</code>.</p>"
124
+
}
125
+
]
126
+
},
127
+
{
128
+
"html": "To decode a PSK <code>P</code> given a QR code, follow these steps:",
129
+
"rationale": "parse",
130
+
"steps": [
131
+
{
132
+
"html": "<p>Obtain the string <code>N</code> by decoding the QR code.</p>"
133
+
},
134
+
{
135
+
"html": "<p>Parse <code>N</code> as a hexadecimal number to obtain <code>P</code>.</p>"
0 commit comments