├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE.md
├── README.md
├── explainer.md
├── html-output
├── .htaccess
├── 404.html
├── demos
│ ├── canvas
│ │ └── blue-robot
│ │ │ ├── blue-robot.png
│ │ │ ├── index-idle.html
│ │ │ └── index.html
│ ├── offline
│ │ └── clock
│ │ │ ├── clock.appcache
│ │ │ ├── clock.css
│ │ │ ├── clock.js
│ │ │ ├── clock1.html
│ │ │ └── clock2.html
│ └── workers
│ │ ├── crypto
│ │ ├── libcrypto-v1.js
│ │ ├── libcrypto-v2-decryptor.js
│ │ ├── libcrypto-v2-encryptor.js
│ │ ├── libcrypto-v2-generator.js
│ │ ├── libcrypto-v2.js
│ │ └── page.html
│ │ ├── modules
│ │ ├── filters.js
│ │ ├── page.html
│ │ └── worker.js
│ │ ├── multicore
│ │ ├── core.js
│ │ ├── page.html
│ │ └── worker.js
│ │ ├── multiviewer
│ │ ├── page.html
│ │ ├── viewer.html
│ │ └── worker.js
│ │ ├── primes
│ │ ├── page.html
│ │ └── worker.js
│ │ ├── shared
│ │ ├── 001
│ │ │ ├── test.html
│ │ │ └── test.js
│ │ ├── 002
│ │ │ ├── test.html
│ │ │ └── test.js
│ │ └── 003
│ │ │ ├── inner.html
│ │ │ ├── test.html
│ │ │ └── test.js
│ │ └── stocks
│ │ ├── io.js
│ │ ├── page.html
│ │ ├── search.cgi
│ │ ├── searcher.js
│ │ ├── stock.cgi
│ │ └── ticker.js
├── entities.json
├── fonts
│ ├── .htaccess
│ ├── Essays1743-Bold.ttf
│ ├── Essays1743-BoldItalic.ttf
│ ├── Essays1743-Italic.ttf
│ └── Essays1743.ttf
├── images
│ ├── .htaccess
│ ├── abstract.jpeg
│ ├── abstract.png
│ ├── arc1.png
│ ├── arcTo1.png
│ ├── arcTo2.png
│ ├── arcTo3.png
│ ├── asyncdefer.svg
│ ├── baselines.png
│ ├── bidiselect.png
│ ├── content-venn.svg
│ ├── contextmenu-collapsed.png
│ ├── contextmenu-expanded.png
│ ├── custom-element-reactions.svg
│ ├── drawImage.png
│ ├── fingerprint.png
│ ├── focus-tree.png
│ ├── im.png
│ ├── kettlebell.jpg
│ ├── media-stream-1.png
│ ├── media-stream-2.png
│ ├── outline.svg
│ ├── parsing-model-overview.svg
│ ├── robots.jpeg
│ ├── sample-bdi.png
│ ├── sample-calendar.png
│ ├── sample-card.png
│ ├── sample-content-handler-registration.png
│ ├── sample-content-handler.png
│ ├── sample-datalist.svg
│ ├── sample-details-1.png
│ ├── sample-details-2.png
│ ├── sample-email-1.svg
│ ├── sample-email-2.svg
│ ├── sample-makeapp.png
│ ├── sample-meter.png
│ ├── sample-not-bdi.png
│ ├── sample-progress.png
│ ├── sample-range-2a.png
│ ├── sample-range-2b.png
│ ├── sample-range-labels.png
│ ├── sample-range-multiple.png
│ ├── sample-range.png
│ ├── sample-ruby-bopomofo.png
│ ├── sample-ruby-ja.png
│ ├── sample-ruby-pinyin.png
│ ├── sample-url.svg
│ ├── sample-usemap.png
│ ├── select-country-1.png
│ ├── select-country-2.png
│ ├── table-scope-diagram.png
│ ├── websocket-protocol-diagram.txt
│ └── wolf.jpg
├── index.html
├── link-fixup.js
└── multipage
│ ├── acknowledgements.html
│ ├── browsers.html
│ ├── comms.html
│ ├── dom.html
│ ├── embedded-content.html
│ ├── forms.html
│ ├── fragment-links.json
│ ├── iana.html
│ ├── index.html
│ ├── indices.html
│ ├── infrastructure.html
│ ├── interaction.html
│ ├── introduction.html
│ ├── microdata.html
│ ├── obsolete.html
│ ├── references.html
│ ├── rendering.html
│ ├── scripting.html
│ ├── semantics.html
│ ├── syntax.html
│ ├── tables.html
│ ├── webappapis.html
│ ├── webstorage.html
│ ├── workers.html
│ └── xhtml.html
├── security-privacy-questionnaire.md
└── w3c.json
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Code of Conduct
2 |
3 | All documentation, code and communication under this repository are covered by the [W3C Code of Ethics and Professional Conduct](https://www.w3.org/Consortium/cepc/).
4 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # controls-list
2 |
3 | Contributions to this repository are intended to become part of Recommendation-track documents
4 | governed by the [W3C Patent Policy](http://www.w3.org/Consortium/Patent-Policy-20040205/) and
5 | [Document License](http://www.w3.org/Consortium/Legal/copyright-documents). To contribute, you must
6 | either participate in the relevant W3C Working Group or make a non-member patent licensing
7 | commitment.
8 |
9 | If you are not the sole contributor to a contribution (pull request), please identify all
10 | contributors in the pull request's body or in subsequent comments.
11 |
12 | To add a contributor (other than yourself, that's automatic), mark them one per line as follows:
13 |
14 | ```
15 | +@github_username
16 | ```
17 |
18 | If you added a contributor by mistake, you can remove them in a comment with:
19 |
20 | ```
21 | -@github_username
22 | ```
23 |
24 | If you are making a pull request on behalf of someone else but you had no part in designing the
25 | feature, you can remove yourself with the above syntax.
26 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | All documents in this Repository are licensed by contributors under the [W3C Document
2 | License](http://www.w3.org/Consortium/Legal/copyright-documents).
3 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Controls List API
2 |
3 | ## Problem Statement
4 |
5 | The Web platform offers two solutions for websites with regards to media controls:
6 | * use the browser provided ones (aka. native controls) without any control of the available features, user experience or UI;
7 | * implement custom controls which creates complexity, maintainance burden and isn't future forward.
8 |
9 | This situation pushes websites to extreme: they have to either not care about their media controls experience or have to fully commit to it. This lack of middle ground pushes websites to use custom controls as soon as they have one need that isn't compatible with the default browser experience. This is harming the ecosystem because custom controls can often offer lower quality implementation and prevents the browser from creating a homogenious experience for its users or integrate new system features into the website controls.
10 |
11 | # Main Requirements
12 |
13 | This API is intended to help solve part of this problem by providing a solution for websites not interested to implement their own media controls but still interested to tailor the experience for their users. It will not offer an API for websites to customise the look and feel of the control but will allow them to pick which components of the controls should be available to the users.
14 |
15 | ## Solution outline
16 |
17 | The solution is described in details in the [explainer](explainer.md).
18 |
19 | It is introducing a new attribute, `controlslist` that allows websites to blacklist or whitelist controls that should appear. The solution is meant to be incremental and start by only blacklisting of a few components and add more as requirements emerge.
20 |
21 | ## Proposed spec change
22 |
23 | There's a [pull request](https://github.com/whatwg/html/pull/6715) to the WHATWG HTML spec and the [build](https://wicg.github.io/controls-list/html-output/multipage/embedded-content.html#attr-media-controlslist) of the spec with the change.
24 |
--------------------------------------------------------------------------------
/explainer.md:
--------------------------------------------------------------------------------
1 | # HTMLMediaElement controlsList explained
2 |
3 | ## [Pull request to whatwg/html](https://github.com/whatwg/html/pull/2426)
4 |
5 | ## Objective
6 |
7 | Offers a way to control the native controls elements/buttons that are being
8 | shown by the user agent in order to be able to remove some features that do not
9 | make sense or are not part of the expected user experience or only allowlist a
10 | limited amount of features.
11 |
12 | ## Background
13 |
14 | The current control web developers have over the `HTMLMediaElement` controls is
15 | via the `controls` attribute which is a boolean attribute. In other words, web
16 | developers can tell the user agent whether controls should be shown.
17 | Historically, specific use cases have been handled with "custom controls" which
18 | are implemented by having no native controls a set of elements added on top of
19 | the video.
20 |
21 | With the media experience on the web getting richer, more controls are being
22 | added to the native user agent controls. These controls sometimes can look out
23 | of place or not work properly. For example, fullscreen and remote playback
24 | buttons might not always make sense. Similarly, browser adding download buttons
25 | have to implement heuristics that might sometimes fail, thus add a button that
26 | will not download usable content. Switching to custom controls can be a hard
27 | change for websites and their users, requiring user experience analysis,
28 | cross-browser implementation and accessibility considerations. Furthermore,
29 | native controls help user agents to build a tailored experience to their users
30 | based on their environment, their device and their habits in a way that custom
31 | controls can’t always achieve.
32 |
33 | ## Design
34 |
35 | The proposed design is to have a allowlist/blocklist ability on native controls
36 | with the ability to set them directly from HTML content. A new content attribute
37 | `controlslist` is to be added as a space separated list of keywords being
38 | reflected as `controlsList`, having an effect only if the `controls` attribute
39 | is set.
40 |
41 | ### Blocklisting
42 |
43 | The main use case is to able to remove some features/elements from the native
44 | controls. Blocklisting elements could be done with keywords starting with `no`
45 | such as `nofullscreen` or `nodownload`. For example, `controlslist="nofullscreen
46 | nodownload"`. It would tell the user agent to show the usual native control
47 | without a fullscreen nor a download button.
48 |
49 | ### Allowlisting
50 |
51 | A less common use case that could be resolved within the scope of this API
52 | change would be to allow a website to specify the exhaustive list of controls to
53 | show. In order to do so, the list of keywords will have to only contain
54 | allowlisted elements (without a no prefix). For example, `controlslist="play
55 | timeline volume"` would allow a website to request the user agent to show native
56 | controls with only a play button, a timeline, and a volume control.
57 |
58 | The allowlisting proposal is here for completeness. The feature can be
59 | implemented and specified incrementally, allowing only for blocklisting of some
60 | elements to be supported first.
61 |
62 | ### Edge cases
63 |
64 | Blocklisting could be done such as no button would be visible. The specification
65 | should disallow this by either enforcing the play/pause button to always be
66 | available or by adding a play/pause button if all the elements have been
67 | removed.
68 |
69 | Blocklist and allowlists can technically be put together (ie.
70 | `controlslist="play nodownload"`). In the spirit of blocklisting being the main
71 | feature of this proposal, blocklisting should always be used if one element is
72 | blocklisted, thus ignoring all allowlist keywords.
73 |
74 | ### Backward compatibility
75 |
76 | The backward compatibility will be preserved given that a user agent that does
77 | not support the `controlsList` feature will just ignore
78 | `controlslist="foo bar"`.
79 |
80 | ### Keywords and feature detection
81 |
82 | The available keywords should be defined per spec. The `controlsList` will
83 | reflect the controls attribute as a `DOMTokenList` for which the supported
84 | tokens will be the keywords (eg. `nodownload`). The available keywords should be
85 | defined in the specification but some user agents might not support some of
86 | them. For example, a remote feature might not be implemented by all user agents.
87 | Looking at the `controlsList` tokens will allow authors to do feature detection.
88 |
89 | ### Incremental
90 |
91 | The feature is meant to be implemented and designed incrementally. The ability
92 | to blocklist buttons is the main focus of this proposal and should be able to
93 | work independently of the allowlist approach. In addition, all buttons are not
94 | supposed to be supported initially. The spirit being that keywords should be
95 | added to the specification with user agents implementing support for
96 | blocklisting of new parts of the native controls.
97 |
98 | ### IDL and attribute reflection
99 |
100 | ```javascript
101 | partial interface HTMLMediaElement {
102 | [SameObject, PutForwards=value] readonly attribute DOMTokenList controlsList;
103 | };
104 | ```
105 |
106 | The `controlsList` property will [reflect](https://html.spec.whatwg.org/multipage/infrastructure.html#reflect)
107 | the `controlslist` attribute as a `DOMTokenList` with a list of [supported
108 | tokens](https://dom.spec.whatwg.org/#concept-supported-tokens).
109 |
110 | ### Examples
111 |
112 | Usage in HTML:
113 | ```html
114 |
115 | ```
116 |
117 | Usage in Javascript:
118 | ```javascript
119 | var video = document.querySelector('video');
120 | video.controls; // true
121 | video.controlsList; // "nofullscreen nodownload noremoteplayback noplaybackrate" - "foobar" not present
122 | video.controlsList.remove('noremoteplayback');
123 | video.controlsList; // "nofullscreen nodownload noplaybackrate" - "noremoteplayback" not present
124 | video.getAttribute('controlslist'); // "nofullscreen nodownload noplaybackrate"
125 | ```
126 |
--------------------------------------------------------------------------------
/html-output/.htaccess:
--------------------------------------------------------------------------------
1 | AddDefaultCharset utf-8
2 | AddCharset utf-8 .css .js .json
3 | Redirect 301 /complete.html /
4 | Redirect 301 /complete /
5 | Redirect 301 /index /
6 | Redirect 301 /C /multipage/
7 | Redirect 301 /multipage/entities.json /entities.json
8 | Redirect 301 /multipage/images/ /images/
9 | Redirect 301 /multipage/link-fixup.js /link-fixup.js
10 | ErrorDocument 404 /404.html
11 |
12 |
Loading...
12 |The page you are looking for is no longer available at this URL.
16 |Links to the multipage version of the specification are 17 | unfortunately likely to break over time. You might be able to find 18 | what you want from the contents page.
19 |If you have found a broken link on the WHATWG site itself, please 20 | e-mail Ian Hickson. If you found a 21 | broken link from another site pointing to the WHATWG site, please 22 | let that site know of the problem instead. Thanks!
23 |The time is:
12 | 13 | 14 | -------------------------------------------------------------------------------- /html-output/demos/offline/clock/clock2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |The time is:
12 | 13 | 14 | -------------------------------------------------------------------------------- /html-output/demos/workers/crypto/libcrypto-v1.js: -------------------------------------------------------------------------------- 1 | function handleMessage(e) { 2 | if (e.data == "genkeys") 3 | genkeys(e.ports[0]); 4 | else if (e.data == "encrypt") 5 | encrypt(e.ports[0]); 6 | else if (e.data == "decrypt") 7 | decrypt(e.ports[0]); 8 | } 9 | 10 | function genkeys(p) { 11 | var keys = _generateKeyPair(); 12 | p.postMessage(keys[0]); 13 | p.postMessage(keys[1]); 14 | } 15 | 16 | function encrypt(p) { 17 | var key, state = 0; 18 | p.onmessage = function (e) { 19 | if (state == 0) { 20 | key = e.data; 21 | state = 1; 22 | } else { 23 | p.postMessage(_encrypt(key, e.data)); 24 | } 25 | }; 26 | } 27 | 28 | function decrypt(p) { 29 | var key, state = 0; 30 | p.onmessage = function (e) { 31 | if (state == 0) { 32 | key = e.data; 33 | state = 1; 34 | } else { 35 | p.postMessage(_decrypt(key, e.data)); 36 | } 37 | }; 38 | } 39 | 40 | // support being used as a shared worker as well as a dedicated worker 41 | if ('onmessage' in this) // dedicated worker 42 | onmessage = handleMessage; 43 | else // shared worker 44 | onconnect = function (e) { e.port.onmessage = handleMessage; } 45 | 46 | 47 | // the "crypto" functions: 48 | 49 | function _generateKeyPair() { 50 | return [Math.random(), Math.random()]; 51 | } 52 | 53 | function _encrypt(k, s) { 54 | return 'encrypted-' + k + ' ' + s; 55 | } 56 | 57 | function _decrypt(k, s) { 58 | return s.substr(s.indexOf(' ')+1); 59 | } 60 | -------------------------------------------------------------------------------- /html-output/demos/workers/crypto/libcrypto-v2-decryptor.js: -------------------------------------------------------------------------------- 1 | onmessage = function (e) { 2 | var key = e.data; 3 | e.ports[0].onmessage = function (e) { 4 | var s = e.data; 5 | postMessage(_decrypt(key, s)); 6 | } 7 | } 8 | 9 | function _decrypt(k, s) { 10 | return s.substr(s.indexOf(' ')+1); 11 | } 12 | -------------------------------------------------------------------------------- /html-output/demos/workers/crypto/libcrypto-v2-encryptor.js: -------------------------------------------------------------------------------- 1 | onmessage = function (e) { 2 | var key = e.data; 3 | e.ports[0].onmessage = function (e) { 4 | var s = e.data; 5 | postMessage(_encrypt(key, s)); 6 | } 7 | } 8 | 9 | function _encrypt(k, s) { 10 | return 'encrypted-' + k + ' ' + s; 11 | } 12 | -------------------------------------------------------------------------------- /html-output/demos/workers/crypto/libcrypto-v2-generator.js: -------------------------------------------------------------------------------- 1 | onmessage = function (e) { 2 | var k = _generateKeyPair(); 3 | e.ports[0].postMessage(k[0]); 4 | e.ports[0].postMessage(k[1]); 5 | close(); 6 | } 7 | 8 | function _generateKeyPair() { 9 | return [Math.random(), Math.random()]; 10 | } 11 | -------------------------------------------------------------------------------- /html-output/demos/workers/crypto/libcrypto-v2.js: -------------------------------------------------------------------------------- 1 | function handleMessage(e) { 2 | if (e.data == "genkeys") 3 | genkeys(e.ports[0]); 4 | else if (e.data == "encrypt") 5 | encrypt(e.ports[0]); 6 | else if (e.data == "decrypt") 7 | decrypt(e.ports[0]); 8 | } 9 | 10 | function genkeys(p) { 11 | var generator = new Worker('libcrypto-v2-generator.js'); 12 | generator.postMessage('', [p]); 13 | } 14 | 15 | function encrypt(p) { 16 | p.onmessage = function (e) { 17 | var key = e.data; 18 | var encryptor = new Worker('libcrypto-v2-encryptor.js'); 19 | encryptor.postMessage(key, [p]); 20 | }; 21 | } 22 | 23 | function encrypt(p) { 24 | p.onmessage = function (e) { 25 | var key = e.data; 26 | var decryptor = new Worker('libcrypto-v2-decryptor.js'); 27 | decryptor.postMessage(key, [p]); 28 | }; 29 | } 30 | 31 | // support being used as a shared worker as well as a dedicated worker 32 | if ('onmessage' in this) // dedicated worker 33 | onmessage = handleMessage; 34 | else // shared worker 35 | onconnect = function (e) { e.ports[0].onmessage = handleMessage }; 36 | -------------------------------------------------------------------------------- /html-output/demos/workers/crypto/page.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |49 | 50 | 51 | -------------------------------------------------------------------------------- /html-output/demos/workers/modules/filters.js: -------------------------------------------------------------------------------- 1 | export function none() {} 2 | 3 | export function grayscale({ data: d }) { 4 | for (let i = 0; i < d.length; i += 4) { 5 | const [r, g, b] = [d[i], d[i + 1], d[i + 2]]; 6 | 7 | // CIE luminance for the RGB 8 | // The human eye is bad at seeing red and blue, so we de-emphasize them. 9 | d[i] = d[i + 1] = d[i + 2] = 0.2126 * r + 0.7152 * g + 0.0722 * b; 10 | } 11 | }; 12 | 13 | export function brighten({ data: d }) { 14 | for (let i = 0; i < d.length; ++i) { 15 | d[i] *= 1.2; 16 | } 17 | }; 18 | -------------------------------------------------------------------------------- /html-output/demos/workers/modules/page.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
Result:
9 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /html-output/demos/workers/multicore/worker.js: -------------------------------------------------------------------------------- 1 | // settings 2 | var num_workers = 10; 3 | var items_per_worker = 1000000; 4 | 5 | // start the workers 6 | var result = 0; 7 | var pending_workers = num_workers; 8 | for (var i = 0; i < num_workers; i += 1) { 9 | var worker = new Worker('core.js'); 10 | worker.postMessage(i * items_per_worker); 11 | worker.postMessage((i+1) * items_per_worker); 12 | worker.onmessage = storeResult; 13 | } 14 | 15 | // handle the results 16 | function storeResult(event) { 17 | result += 1*event.data; 18 | pending_workers -= 1; 19 | if (pending_workers <= 0) 20 | postMessage(result); // finished! 21 | } 22 | -------------------------------------------------------------------------------- /html-output/demos/workers/multiviewer/page.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |Each viewer opens in a new window. You can have as many viewers 16 | as you like, they all view the same data.
17 | 18 | 19 | -------------------------------------------------------------------------------- /html-output/demos/workers/multiviewer/viewer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |114 | 115 | 116 | 117 | 118 | 119 | 120 |
121 |The highest prime number discovered so far is:
9 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /html-output/demos/workers/primes/worker.js: -------------------------------------------------------------------------------- 1 | var n = 1; 2 | search: while (true) { 3 | n += 1; 4 | for (var i = 2; i <= Math.sqrt(n); i += 1) 5 | if (n % i == 0) 6 | continue search; 7 | // found a prime! 8 | postMessage(n); 9 | } 10 | -------------------------------------------------------------------------------- /html-output/demos/workers/shared/001/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |Log:5 | 12 | -------------------------------------------------------------------------------- /html-output/demos/workers/shared/001/test.js: -------------------------------------------------------------------------------- 1 | onconnect = function(e) { 2 | var port = e.ports[0]; 3 | port.postMessage('Hello World!'); 4 | } 5 | -------------------------------------------------------------------------------- /html-output/demos/workers/shared/002/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
Log:5 | 14 | -------------------------------------------------------------------------------- /html-output/demos/workers/shared/002/test.js: -------------------------------------------------------------------------------- 1 | onconnect = function(e) { 2 | var port = e.ports[0]; 3 | port.postMessage('Hello World!'); 4 | port.onmessage = function(e) { 5 | port.postMessage('pong'); // not e.ports[0].postMessage! 6 | // e.target.postMessage('pong'); would work also 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /html-output/demos/workers/shared/003/inner.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
Inner log:5 | 12 | -------------------------------------------------------------------------------- /html-output/demos/workers/shared/003/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
Log:5 | 14 | 15 | -------------------------------------------------------------------------------- /html-output/demos/workers/shared/003/test.js: -------------------------------------------------------------------------------- 1 | var count = 0; 2 | onconnect = function(e) { 3 | count += 1; 4 | var port = e.ports[0]; 5 | port.postMessage('Hello World! You are connection #' + count); 6 | port.onmessage = function(e) { 7 | port.postMessage('pong'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /html-output/demos/workers/stocks/io.js: -------------------------------------------------------------------------------- 1 | function get(url) { 2 | try { 3 | var xhr = new XMLHttpRequest(); 4 | xhr.open('GET', url, false); 5 | xhr.send(); 6 | return xhr.responseText; 7 | } catch (e) { 8 | return ''; // turn all errors into empty results 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /html-output/demos/workers/stocks/page.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
27 | 35 | 36 |
(The data in this example is not real. Try searching for "Google" or "Apple".)
57 | 58 | 59 | -------------------------------------------------------------------------------- /html-output/demos/workers/stocks/search.cgi: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl -wT 2 | use strict; 3 | my $query = $ENV{QUERY_STRING}; 4 | 5 | print "Content-Type: text/plain\r\n\r\n"; 6 | 7 | my $symbols = { 8 | 'Goodger' => 'GOAT', 9 | 'Google' => 'GOOG', 10 | 'Go' => 'GO', 11 | 'Activision' => 'ATVI', 12 | 'Apple' => 'AAPL', 13 | 'Applications' => 'APLS', 14 | 'Cats' => 'MOWMOW', 15 | }; 16 | 17 | foreach my $key (values %$symbols) { 18 | $symbols->{$key} = $key; 19 | } 20 | 21 | my $results = {}; 22 | 23 | # 'GOAT' matches 'GOO' because it actually matches 'Goodger' 24 | 25 | foreach my $key (keys %$symbols) { 26 | if (lc substr($key, 0, length($query)) eq lc $query) { 27 | $results->{$symbols->{$key}} = 1; 28 | } 29 | } 30 | 31 | my @results = sort keys %$results; 32 | 33 | print join(' ', @results); 34 | -------------------------------------------------------------------------------- /html-output/demos/workers/stocks/searcher.js: -------------------------------------------------------------------------------- 1 | importScripts('io.js'); 2 | onmessage = function (event) { 3 | postMessage(get('search.cgi?' + event.data)); 4 | }; 5 | -------------------------------------------------------------------------------- /html-output/demos/workers/stocks/stock.cgi: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl -wT 2 | use strict; 3 | my $stock = $ENV{QUERY_STRING}; 4 | 5 | print "Content-Type: text/plain\r\n\r\n"; 6 | 7 | my $data = { 8 | 'GOAT' => 1000, 9 | 'GOOG' => 600, 10 | 'GO' => 300, 11 | 'ATVI' => 100, 12 | 'AAPL' => 200, 13 | 'APLS' => 1, 14 | 'MOWMOW' => 10000, 15 | }; 16 | 17 | if (exists($data->{$stock})) { 18 | print $data->{$stock} * (rand()+0.5); 19 | } else { 20 | print 0; 21 | } 22 | -------------------------------------------------------------------------------- /html-output/demos/workers/stocks/ticker.js: -------------------------------------------------------------------------------- 1 | importScripts('io.js'); 2 | var timer; 3 | var symbol; 4 | function update() { 5 | postMessage(symbol + ' ' + get('stock.cgi?' + symbol)); 6 | timer = setTimeout(update, 10000); 7 | } 8 | onmessage = function (event) { 9 | if (timer) 10 | clearTimeout(timer); 11 | symbol = event.data; 12 | update(); 13 | }; 14 | -------------------------------------------------------------------------------- /html-output/fonts/.htaccess: -------------------------------------------------------------------------------- 1 | ExpiresActive on 2 | ExpiresDefault A6048000 3 | Header set Cache-Control "public" 4 | -------------------------------------------------------------------------------- /html-output/fonts/Essays1743-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/fonts/Essays1743-Bold.ttf -------------------------------------------------------------------------------- /html-output/fonts/Essays1743-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/fonts/Essays1743-BoldItalic.ttf -------------------------------------------------------------------------------- /html-output/fonts/Essays1743-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/fonts/Essays1743-Italic.ttf -------------------------------------------------------------------------------- /html-output/fonts/Essays1743.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/fonts/Essays1743.ttf -------------------------------------------------------------------------------- /html-output/images/.htaccess: -------------------------------------------------------------------------------- 1 | ExpiresActive on 2 | ExpiresDefault A604800 3 | Header set Cache-Control "public" 4 | -------------------------------------------------------------------------------- /html-output/images/abstract.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/abstract.jpeg -------------------------------------------------------------------------------- /html-output/images/abstract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/abstract.png -------------------------------------------------------------------------------- /html-output/images/arc1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/arc1.png -------------------------------------------------------------------------------- /html-output/images/arcTo1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/arcTo1.png -------------------------------------------------------------------------------- /html-output/images/arcTo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/arcTo2.png -------------------------------------------------------------------------------- /html-output/images/arcTo3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/arcTo3.png -------------------------------------------------------------------------------- /html-output/images/asyncdefer.svg: -------------------------------------------------------------------------------- 1 | 190 | -------------------------------------------------------------------------------- /html-output/images/baselines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/baselines.png -------------------------------------------------------------------------------- /html-output/images/bidiselect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/bidiselect.png -------------------------------------------------------------------------------- /html-output/images/content-venn.svg: -------------------------------------------------------------------------------- 1 | 291 | -------------------------------------------------------------------------------- /html-output/images/contextmenu-collapsed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/contextmenu-collapsed.png -------------------------------------------------------------------------------- /html-output/images/contextmenu-expanded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/contextmenu-expanded.png -------------------------------------------------------------------------------- /html-output/images/custom-element-reactions.svg: -------------------------------------------------------------------------------- 1 | 150 | -------------------------------------------------------------------------------- /html-output/images/drawImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/drawImage.png -------------------------------------------------------------------------------- /html-output/images/fingerprint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/fingerprint.png -------------------------------------------------------------------------------- /html-output/images/focus-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/focus-tree.png -------------------------------------------------------------------------------- /html-output/images/im.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/im.png -------------------------------------------------------------------------------- /html-output/images/kettlebell.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/kettlebell.jpg -------------------------------------------------------------------------------- /html-output/images/media-stream-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/media-stream-1.png -------------------------------------------------------------------------------- /html-output/images/media-stream-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/media-stream-2.png -------------------------------------------------------------------------------- /html-output/images/outline.svg: -------------------------------------------------------------------------------- 1 | 23 | -------------------------------------------------------------------------------- /html-output/images/parsing-model-overview.svg: -------------------------------------------------------------------------------- 1 | 78 | -------------------------------------------------------------------------------- /html-output/images/robots.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/robots.jpeg -------------------------------------------------------------------------------- /html-output/images/sample-bdi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/sample-bdi.png -------------------------------------------------------------------------------- /html-output/images/sample-calendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/sample-calendar.png -------------------------------------------------------------------------------- /html-output/images/sample-card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/sample-card.png -------------------------------------------------------------------------------- /html-output/images/sample-content-handler-registration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/sample-content-handler-registration.png -------------------------------------------------------------------------------- /html-output/images/sample-content-handler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/sample-content-handler.png -------------------------------------------------------------------------------- /html-output/images/sample-datalist.svg: -------------------------------------------------------------------------------- 1 | 39 | -------------------------------------------------------------------------------- /html-output/images/sample-details-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/sample-details-1.png -------------------------------------------------------------------------------- /html-output/images/sample-details-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/sample-details-2.png -------------------------------------------------------------------------------- /html-output/images/sample-email-1.svg: -------------------------------------------------------------------------------- 1 | 67 | -------------------------------------------------------------------------------- /html-output/images/sample-email-2.svg: -------------------------------------------------------------------------------- 1 | 69 | -------------------------------------------------------------------------------- /html-output/images/sample-makeapp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/sample-makeapp.png -------------------------------------------------------------------------------- /html-output/images/sample-meter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/sample-meter.png -------------------------------------------------------------------------------- /html-output/images/sample-not-bdi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/sample-not-bdi.png -------------------------------------------------------------------------------- /html-output/images/sample-progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/sample-progress.png -------------------------------------------------------------------------------- /html-output/images/sample-range-2a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/sample-range-2a.png -------------------------------------------------------------------------------- /html-output/images/sample-range-2b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/sample-range-2b.png -------------------------------------------------------------------------------- /html-output/images/sample-range-labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/sample-range-labels.png -------------------------------------------------------------------------------- /html-output/images/sample-range-multiple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/sample-range-multiple.png -------------------------------------------------------------------------------- /html-output/images/sample-range.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/sample-range.png -------------------------------------------------------------------------------- /html-output/images/sample-ruby-bopomofo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/sample-ruby-bopomofo.png -------------------------------------------------------------------------------- /html-output/images/sample-ruby-ja.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/sample-ruby-ja.png -------------------------------------------------------------------------------- /html-output/images/sample-ruby-pinyin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/sample-ruby-pinyin.png -------------------------------------------------------------------------------- /html-output/images/sample-url.svg: -------------------------------------------------------------------------------- 1 | 43 | -------------------------------------------------------------------------------- /html-output/images/sample-usemap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/sample-usemap.png -------------------------------------------------------------------------------- /html-output/images/select-country-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/select-country-1.png -------------------------------------------------------------------------------- /html-output/images/select-country-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/select-country-2.png -------------------------------------------------------------------------------- /html-output/images/table-scope-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/table-scope-diagram.png -------------------------------------------------------------------------------- /html-output/images/websocket-protocol-diagram.txt: -------------------------------------------------------------------------------- 1 | +-----------+ 2 | | Handshake | 3 | +-----+-----+ 4 | | 5 | | 6 | v 7 | +-----+-----------+ 8 | | Frame type byte |<----------------------------------------------+ 9 | +-----+-----------+ | 10 | | | 11 | | 0x00 to 0x7F +-----------+ +------+ | 12 | +------------------------------>| UTF-8... |--->| 0xFF |---+ 13 | | +-----------+ +------+ | 14 | | | 15 | | 0x00 to 0x7F +--------+ +-----------+ | 16 | +---------------->| Length |--->| Binary... |---------------+ 17 | +--------+ +-----------+ 18 | 19 | 20 | http://ditaa.org/ditaa/frames.html 21 | 22 | http://ditaa.org/ditaa/render?grid=%0D%0A+++++%2B-----------%2B%0D%0A+++++%7C+Handshake+%7C%0D%0A+++++%2B-----%2B-----%2B%0D%0A+++++++++++%7C%0D%0A+++++++++++%7C%0D%0A+++++++++++v%0D%0A+++++%2B-----%2B-----------%2B%0D%0A+++++%7C+Frame+type+byte+%7C%3C----------------------------------------------%2B%0D%0A+++++%2B-----%2B-----------%2B+++++++++++++++++++++++++++++++++++++++++++++++%7C%0D%0A+++++++++++%7C+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%7C%0D%0A+++++++++++%7C+0x00+to+0x7F++++++++++++++++++%2B-----------%2B++++%2B------%2B+++%7C%0D%0A+++++++++++%2B------------------------------%3E%7C+UTF-8...++%7C---%3E%7C+0xFF+%7C---%2B%0D%0A+++++++++++%7C+++++++++++++++++++++++++++++++%2B-----------%2B++++%2B------%2B+++%7C%0D%0A+++++++++++%7C+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%7C%0D%0A+++++++++++%7C+0x00+to+0x7F++++%2B--------%2B++++%2B-----------%2B+++++++++++++++%7C%0D%0A+++++++++++%2B----------------%3E%7C+Length+%7C---%3E%7C+Binary...+%7C---------------%2B%0D%0A+++++++++++++++++++++++++++++%2B--------%2B++++%2B-----------%2B%0D%0A%0D%0A&S=on&scale=1 23 | -------------------------------------------------------------------------------- /html-output/images/wolf.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WICG/controls-list/55744005155547ae381f92f87f094562ac513daf/html-output/images/wolf.jpg -------------------------------------------------------------------------------- /html-output/link-fixup.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | 'use strict'; 3 | if (window.location.hash.length < 1) { 4 | return; 5 | } 6 | 7 | var fragid = window.location.hash.substr(1); 8 | 9 | if (fragid && document.getElementById(fragid)) { 10 | return; 11 | } 12 | 13 | var xhr = new XMLHttpRequest(); 14 | xhr.responseType = 'json'; 15 | xhr.open('GET', '/multipage/fragment-links.json'); 16 | xhr.onload = function() { 17 | var fragmentLinks = xhr.response; 18 | 19 | // handle section-foo.html links from the old old multipage version, 20 | // and broken foo.html from the new version 21 | if (!fragid || !(fragid in fragmentLinks)) { 22 | var m = window.location.pathname.match(/\/(?:section-)?([\w\-]+)\.html/); 23 | if (m) { 24 | fragid = m[1]; 25 | } 26 | } 27 | 28 | var page = fragmentLinks[fragid]; 29 | if (page) { 30 | window.location.replace(page + '.html#' + fragid); 31 | } 32 | }; 33 | xhr.send(); 34 | })(); 35 | -------------------------------------------------------------------------------- /html-output/multipage/iana.html: -------------------------------------------------------------------------------- 1 |text/html
This registration is for community review and will be submitted to the IESG for review, 205 | approval, and registration with IANA.
206 | 207 | 208 | 209 | 210 | 211 |charset
The charset
parameter may be provided to specify the
215 | document's character encoding, overriding any character encoding declarations in the document other than a Byte Order Mark (BOM). The parameter's value
216 | must be one of the labels of the character encoding used to serialize the file. [ENCODING]
Entire novels have been written about the security considerations that apply to HTML 227 | documents. Many are listed in this document, to which the reader is referred for more details. 228 | Some general concerns bear mentioning here, however:
229 | 230 |HTML is scripted language, and has a large number of APIs (some of which are described in 231 | this document). Script can expose the user to potential risks of information leakage, credential 232 | leakage, cross-site scripting attacks, cross-site request forgeries, and a host of other 233 | problems. While the designs in this specification are intended to be safe if implemented 234 | correctly, a full implementation is a massive undertaking and, as with any software, user agents 235 | are likely to have security bugs.
236 | 237 |Even without scripting, there are specific features in HTML which, for historical reasons,
238 | are required for broad compatibility with legacy content but that expose the user to unfortunate
239 | security problems. In particular, the img
element can be used in conjunction with
240 | some other features as a way to effect a port scan from the user's location on the Internet.
241 | This can expose local network topologies that the attacker would otherwise not be able to
242 | determine.
HTML relies on a compartmentalization scheme sometimes known as the same-origin 245 | policy. An origin in most cases consists of all the pages served from the same 246 | host, on the same port, using the same protocol.
247 | 248 |It is critical, therefore, to ensure that any untrusted content that forms part of a site be 249 | hosted on a different origin than any sensitive content on that site. Untrusted 250 | content can easily spoof any other page on the same origin, read data from that origin, cause 251 | scripts in that origin to execute, submit forms to and from that origin even if they are 252 | protected from cross-site request forgery attacks by unique tokens, and make use of any 253 | third-party resources exposed to or rights granted to that origin.
254 | 255 |html
" and "htm
"
270 | are commonly, but certainly not exclusively, used as the
271 | extension for HTML documents.TEXT
Fragments used with text/html
resources
275 | either refer to the indicated part of the document or provide state information for
276 | in-page scripts.
multipart/x-mixed-replace
This registration is for community review and will be submitted to the IESG for review, 284 | approval, and registration with IANA.
285 | 286 | 287 | 288 |boundary
(defined in RFC2046) [RFC2046]
290 | multipart/x-mixed-replace
293 | resource can be of any type, including types with non-trivial
294 | security implications such as text/html
.
295 | multipart/mixed
. [RFC2046]
300 | multipart/x-mixed-replace
resource.Fragments used with
307 | multipart/x-mixed-replace
resources apply to each body part as defined by the type
308 | used by that body part.
application/xhtml+xml
This registration is for community review and will be submitted to the IESG for review, 314 | approval, and registration with IANA.
315 | 316 | 317 | 318 | 319 | 320 |application/xml
[RFC7303]application/xml
[RFC7303]application/xml
[RFC7303]application/xml
[RFC7303]application/xml
[RFC7303]application/xhtml+xml
type asserts that the
321 | resource is an XML document that likely has a document element from the HTML
322 | namespace. Thus, the relevant specifications are the XML specification, the Namespaces in
323 | XML specification, and this specification. [XML] [XMLNS]application/xml
[RFC7303]application/xml
[RFC7303]xhtml
" and "xht
" are sometimes used as
325 | extensions for XML resources that have a document element from the HTML
326 | namespace.TEXT
Fragments used with
330 | application/xhtml+xml
resources have the same semantics as with any
331 | XML MIME type. [RFC7303]
text/cache-manifest
This registration is for community review and will be submitted 337 | to the IESG for review, approval, and registration with IANA.
338 | 339 | 340 | 341 |charset
The charset
parameter may be provided. The parameter's value must be
345 | "utf-8
". This parameter serves no purpose; it is only allowed for
346 | compatibility with legacy servers.
Cache manifests themselves pose no immediate risk unless 351 | sensitive information is included within the 352 | manifest. Implementations, however, are required to follow 353 | specific rules when populating a cache based on a cache manifest, 354 | to ensure that certain origin-based restrictions are 355 | honored. Failure to correctly implement these rules can result in 356 | information leakage, cross-site scripting attacks, and the 357 | like.
358 |CACHE
367 | MANIFEST
", followed by either a U+0020 SPACE character, a
368 | U+0009 CHARACTER TABULATION (tab) character, a U+000A LINE FEED
369 | (LF) character, or a U+000D CARRIAGE RETURN (CR) character.appcache
"Fragments have no meaning with
373 | text/cache-manifest
resources.
text/ping
This registration is for community review and will be submitted to the IESG for review, 379 | approval, and registration with IANA.
380 | 381 | 382 | 383 |charset
The charset
parameter may be provided. The parameter's value must be
387 | "utf-8
". This parameter serves no purpose; it is only allowed for
388 | compatibility with legacy servers.
If used exclusively in the fashion described in the context of 393 | hyperlink auditing, this type introduces no new 394 | security concerns.
395 |text/ping
resources always consist of the four
403 | bytes 0x50 0x49 0x4E 0x47 (ASCII 'PING').ping
attribute.Fragments have no meaning with
408 | text/ping
resources.
application/microdata+json
This registration is for community review and will be submitted to the IESG for review, 415 | approval, and registration with IANA.
416 | 417 | 418 | 419 |application/json
[JSON]application/json
[JSON]application/json
[JSON]application/json
[JSON]application/microdata+json
type asserts that the
422 | resource is a JSON text that consists of an object with a single entry called "items
" consisting of an array of entries, each of which consists of an object
423 | with an entry called "id
" whose value is a string, an entry called "type
" whose value is another string, and an entry called "properties
" whose value is an object whose entries each have a value consisting
424 | of an array of either objects or strings, the objects being of the same form as the objects in
425 | the aforementioned "items
" entry. Thus, the relevant specifications are
426 | the JSON specification and this specification. [JSON]
427 |
428 | Applications that transfer data intended for use with HTML's microdata feature, especially in 431 | the context of drag-and-drop, are the primary application class for this type.
432 | 433 |application/json
[JSON]application/json
[JSON]application/json
[JSON]Fragments used with
438 | application/microdata+json
resources have the same semantics as when used with
439 | application/json
(namely, at the time of writing, no semantics at all).
440 | [JSON]
text/event-stream
This registration is for community review and will be submitted to the IESG for review, 446 | approval, and registration with IANA.
447 | 448 | 449 | 450 |charset
The charset
parameter may be provided. The parameter's value must be
454 | "utf-8
". This parameter serves no purpose; it is only allowed for
455 | compatibility with legacy servers.
An event stream from an origin distinct from the origin of the content consuming the event 461 | stream can result in information leakage. To avoid this, user agents are required to apply CORS 462 | semantics. [FETCH]
463 | 464 |Event streams can overwhelm a user agent; a user agent is expected to apply suitable 465 | restrictions to avoid depleting local resources because of an overabundance of information from 466 | an event stream.
467 | 468 |Servers can be overwhelmed if a situation develops in which the server is causing clients to 469 | reconnect rapidly. Servers should use a 5xx status code to indicate capacity problems, as this 470 | will prevent conforming clients from reconnecting automatically.
471 | 472 |Fragments have no meaning with
485 | text/event-stream
resources.
Ping-From
`This section describes a header for registration in the Permanent Message Header Field 492 | Registry. [RFC3864]
493 | 494 |Ping-To
`This section describes a header for registration in the Permanent Message Header Field 502 | Registry. [RFC3864]
503 | 504 |Last-Event-ID
`This section describes a header for registration in the Permanent Message Header Field 512 | Registry. [RFC3864]
513 | 514 |web+
scheme prefixThis section describes a convention for use with the IANA URI scheme registry. It does not 522 | itself register a specific scheme. [RFC7595]
523 | 524 |web+
" followed by one or more letters in the range
526 | a
-z
.
527 | web+
" schemes should use UTF-8 encodings where relevant.web+
" schemes. As
530 | such, these schemes must not be used for features intended to be core platform features (e.g.
531 | network transfer protocols like HTTP or FTP). Similarly, such schemes must not store
532 | confidential information in their URLs, such as usernames, passwords, personal information, or
533 | confidential project names.
534 |
535 | All references are normative unless marked "Non-normative".
200 | 201 | 202 | 203 |XMLHttpRequest
, A. van Kesteren. WHATWG.