- From: Matt Giuca <notifications@github.com>
- Date: Wed, 12 Aug 2020 17:10:52 -0700
- To: w3c/manifest <manifest@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/manifest/pull/932/review/466350439@github.com>
@mgiuca commented on this pull request.
> + by the following algorithm. The algorithm takes a
+ [=processed manifest=] |manifest:processed manifest| and returns a
+ [=display mode=].
+ <ol>
+ <li>
+ [=list/For each=] |candidate_display_mode:DisplayModeType| of
+ |manifest|.{{WebAppManifest/display_override}}:
+ <ol>
+ <li>
+ If the user agent supports the |candidate_display_mode|, then
+ return |candidate_display_mode|.
+ </li>
+ </ol>
+ </li>
+ <li>
+ Define the |fallback_chain| for {{browser}} to be [{{browser}}]
Nit: End each of these with a period.
> @@ -577,30 +598,88 @@ <h2>
mode</a>.
</p>
<p>
- Each <a>display mode</a>, except <code>browser</code>, has a
- <dfn>fallback display mode</dfn>, which is the <a>display mode</a> that
- the user agent can try to use if it doesn't support a particular
- <a>display mode</a>. If the user agent does support a <a>fallback
- display mode</a>, then it checks to see if it can use that <a>display
- mode</a>'s <a>fallback display mode</a>. This creates a fallback chain,
- with the <a>default display mode</a> (<code>browser</code>) being the
- last item in the chain.
+ For more advanced usages, the {{WebAppManifest/display_override}}
+ member can be used to specify a custom fallback order.
+ </p>
+ <p>
+ The steps for determing the web app's chosen display mode is given
Put "steps for determing the web app's chosen display mode" in a `<dfn>` even though it isn't invoked from anywhere (makes the algorithm name bold and potentially allows linking).
> + by the following algorithm. The algorithm takes a
+ [=processed manifest=] |manifest:processed manifest| and returns a
+ [=display mode=].
+ <ol>
+ <li>
+ [=list/For each=] |candidate_display_mode:DisplayModeType| of
+ |manifest|.{{WebAppManifest/display_override}}:
+ <ol>
+ <li>
+ If the user agent supports the |candidate_display_mode|, then
+ return |candidate_display_mode|.
+ </li>
+ </ol>
+ </li>
+ <li>
+ Define the |fallback_chain| for {{browser}} to be [{{browser}}]
Don't make *fallback_chain* a variable, since it doesn't act like a variable, it's more like a concept (strictly speaking, you could think of it as a function, `fallback_chain(display_mode) = ...`, but I think it's not worth being so formal about it).
So I think move these definitions outside of this algorithm, and express them just in plain English: "The fallback chain for `browser` is «`browser`»"., etc. (Note: Use «» to denote a literal list, not, [], per [Infra](https://infra.spec.whatwg.org/#lists).)
Then down below, replace "the *fallback_chain* of" with "the fallback chain of" and you're good.
> + Define the |fallback_chain| for <a data-link-for="DisplayModeType">
+ minimal-ui</a> to be [<a data-link-for="DisplayModeType">minimal-ui
+ </a>, {{browser}}]
+ </li>
+ <li>
+ Define the |fallback_chain| for {{standalone}} to be [
+ {{standalone}}, <a data-link-for="DisplayModeType">minimal-ui</a>,
+ {{browser}}]
+ </li>
+ <li>
+ Define the |fallback_chain| for {{fullscreen}} to be [
+ {{fullscreen}}, {{standalone}}, <a data-link-for="DisplayModeType">
+ minimal-ui</a>, {{browser}}]
+ </li>
+ <li>
+ Let |candidate_display_mode| be the the value specified by the
Can you combine this and the next item into one line, to avoid reassigning the *candidate_display_mode* variable?
i.e.: "For each *fallback_mode* of the fallback chain of *manifest*.`display`."
> + Define the |fallback_chain| for {{fullscreen}} to be [
+ {{fullscreen}}, {{standalone}}, <a data-link-for="DisplayModeType">
+ minimal-ui</a>, {{browser}}]
+ </li>
+ <li>
+ Let |candidate_display_mode| be the the value specified by the
+ |manifest|.{{WebAppManifest/display}} property.
+ </li>
+ <li>
+ [=list/For each=] |fallback_mode:DisplayModeType| of the
+ |fallback_chain| of the |candidate_display_mode|:
+ <ol>
+ <li>
+ If the user agent supports the |fallback_mode|, then
+ return |fallback_mode|.
+ </li>
The above suggestions would collapse this algorithm into just two loops: one to do display_override and one to do the fallback chain of display. I think that would look quite nice.
Arguably it's still cleaner to do my original suggestion, which is to do a single loop over "the [concatenation](https://infra.spec.whatwg.org/#string-concatenate) of *manifest*.`display_override` and the fallback chain of *manifest*.`display`".
But I will leave that up to you, since I can see how it's maybe easier to read having two loops, each with a distinct purpose.
> + </li>
+ <li>
+ Let |candidate_display_mode| be the the value specified by the
+ |manifest|.{{WebAppManifest/display}} property.
+ </li>
+ <li>
+ [=list/For each=] |fallback_mode:DisplayModeType| of the
+ |fallback_chain| of the |candidate_display_mode|:
+ <ol>
+ <li>
+ If the user agent supports the |fallback_mode|, then
+ return |fallback_mode|.
+ </li>
+ </ol>
+ </li>
+ </ol>
Technically, this algorithm is missing a final return at the end of the loop (as in, something that many compilers would complain about). Infra doesn't require that we return something here, but can we add a `<p class="note">` acknowledging it:
"The above loop is guaranteed to return a value before it terminates, due to the fact that `browser` is in every mode's fallback chain, and the requirement that all user agents support the `browser` display mode."
> @@ -653,9 +720,8 @@ <h2>
window).
</dd>
<dd>
- The <code>browser</code> <a>display mode</a> doesn't have a
- <a>fallback display mode</a> (conforming user agents are required to
- support the <code>browser</code> <a>display mode</a>).
+ Conforming user agents are required to
I think you can just delete this paragraph. It's redundant for the sentence above: "As such, the user agent MUST support the browser display mode."
I think it was redundantly here before just to explain why it's OK to not have a fallback display mode. That's equivalent to the new note that I suggested you add above.
--
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/932#pullrequestreview-466350439
Received on Thursday, 13 August 2020 00:11:06 UTC