- From: Daniel Murphy <notifications@github.com>
- Date: Wed, 29 Sep 2021 16:14:50 -0700
- To: w3c/manifest <manifest@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/manifest/pull/1005/review/767240164@github.com>
@dmurph commented on this pull request. Thanks! > + How file handlers are registered and disambiguated is at the + discretion of the operating system. I like it. Done. > + without the explicit knowledge of the user. To protect against + possible mis-use, user agents MAY require explicit user consent to + begin with the process to [=execute a file handler launch=]. If + consent is denied, the user agent MAY remove the web application's + OS registration as a file handling entity. + </p> + </section> + <section> + <h3> + Privacy consideration: Name and icon. + </h3> + <p> + The name and icon of each file handler can be sensitive to privacy + and security, as there isn't a specified way for the user to see + and confirm these. Due to this, user agents MAY choose to replace + these with name and icon derived from the application's icon and Done. > + OS registration as a file handling entity. + </p> + </section> + <section> + <h3> + Privacy consideration: Name and icon. + </h3> + <p> + The name and icon of each file handler can be sensitive to privacy + and security, as there isn't a specified way for the user to see + and confirm these. Due to this, user agents MAY choose to replace + these with name and icon derived from the application's icon and + name in the [=process a file handler item=] algorithm. + </p> + </section> + <aside class="example"> You are right - I made this a section. > + The [=file handler=]'s <code><dfn data-dfn-for= + "file handler">accept</dfn></code> member is a <a>dictionary</a> + mapping [=MIME types=] to a list of extensions. Extensions have to be + strings that start with a "." and only contain [=valid suffix code + points=]. Additionally extensions are limited to a length of 16 code + points. + </p> + <p> + In addition to complete [=MIME types=], "*" can be used as the + subtype of a MIME type to match, for example, all image formats with + "image/*". However, the top-level type MUST be defined in [[rfc2046]] + and listed in [[IANA_MEDIA_TYPES]]. + </p> + <p> + Websites MUST always provide both [=MIME types=] and file extensions + for each [=file handler/accept=] entry. This format is required by On linux we use both - we associate with the mime-type, and we restrict the matches to the extension. I tried to update this to be a little clearer... let me know what you think. > + </p> + </section> + <section data-cite="MIMETYPE"> + <h3> + `accept` member + </h3> + <p> + The [=file handler=]'s <code><dfn data-dfn-for= + "file handler">accept</dfn></code> member is a <a>dictionary</a> + mapping [=MIME types=] to a list of extensions. Extensions have to be + strings that start with a "." and only contain [=valid suffix code + points=]. Additionally extensions are limited to a length of 16 code + points. + </p> + <p> + In addition to complete [=MIME types=], "*" can be used as the The enforcement for them having to do with each other, at least on Linux, is that we use both [1], where the mime-type is specified, but the extension is also specified as a glob entry. Example [2] as well (not great). But I think I understand what you're saying. I'll try to update this to match the behavior better - let me know what you think. [1] https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/shell_integration_linux.cc;l=731;drc=9d70e034c6a4c2b1ed56c94aace3f3c8d2b1f771;bpv=1;bpt=1 [2] https://wiki.archlinux.org/title/XDG_MIME_Applications > + "name": "Comma-separated Value", + "accept": { + "text/csv": [ ".csv" ] + }, + "icons": [ + { + "src": "/csv-file.png", + "sizes": "144x144" + } + ] + }, + { + "action": "/open-svg", + "name": "Image", + "accept": { + "image/svg+xml": ".svg" Done. > + "name": "Comma-separated Value", + "accept": { + "text/csv": [ ".csv" ] + }, + "icons": [ + { + "src": "/csv-file.png", + "sizes": "144x144" + } + ] + }, + { + "action": "/open-svg", + "name": "Image", + "accept": { + "image/svg+xml": ".svg" Done. > + </ul> + </li> + <li>Let |url:URL| be the result of [=URL Parser|parsing=] + |item|["action"] with |start_url URL| as the base URL. + </li> + <li>If |url| is failure, return failure. + </li> + <li>If |url| is not [=manifest/within scope=] of |scope|, return + failure. + </li> + <li>Let |accept:ordered map| be an [=ordered map=]. + </li> + <li>[=map/iterate=] |mime_type_string:string| → |extensions| of + |item|["accept"] + <ol> + <li>If |extensions| is not a [=string=] or [=list=], return Done > + </li> + <li>If |mime_type_parsed|.type is not listed in as a top-level + type in [[IANA_MEDIA_TYPES]], return failure. + </li> + <li>Add |mime_type_string| → |extensions| to |accept|. + </li> + </ol> + </li> + <li>Let |file_handler:ordered map| be |ordered map| «[ "action" → + |url|, "name" → |item|["name"], "accept" → |accept| ]». + </li> + <li>[=Process image resources=] passing |item|["icons"], + |file_handler|, |manifest URL|, and "icons". + </li> + <li>The user agent MAY replace |file_handler|["icons"] with the + application icon. Agreed. I'll just say something vague. > + </section> + <section data-cite="file-system-access"> + <h2> + <dfn>Execute a file handler launch</dfn> + </h2> + <p> + A {{Window/window}} has an associated {{LaunchConsumer}} <dfn>assigned + launch consumer</dfn>. + </p> + <p> + A {{Window/window}} has an associated [=list=] of {{LaunchParams}} + <dfn>unconsumed launch params</dfn>. + </p> + <p> + When a [=file type=] is registered with a web app and one or more of + these registered files are launched on the platform, run the following Hm.... @inexorabletash or @marcoscaceres I need some spec help here - how do you think I should specify this? do the above "assigned launch consumer" and "unconsumed launch params" live across same-origin redirects? > + <section data-dfn-for="LaunchParams"> + <h3> + <dfn>LaunchParams</dfn> interface + </h3> + <pre class="idl"> + [Exposed=Window] interface LaunchParams { + readonly attribute FrozenArray<FileSystemHandle> files; + }; + </pre> + <section> + <h2> + <dfn>files</dfn> attribute + </h2> + <p> + The {{LaunchParams/files}} attribute is a {{FrozenArray}} of + {{FileSystemHandle}}s. @mkruisselbrink I tried to state this in a way that made sense, but you'll know better how to specify this. > + "image/*". However, the top-level type MUST be defined in [[rfc2046]] + and listed in [[IANA_MEDIA_TYPES]]. Removed, and added to the algorithm. -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/w3c/manifest/pull/1005#pullrequestreview-767240164
Received on Wednesday, 29 September 2021 23:15:03 UTC