From b2bb5326a3155cd072742bedd6e83d9f2d096549 Mon Sep 17 00:00:00 2001 From: Daniel Murphy Date: Fri, 7 Feb 2025 00:29:08 +0000 Subject: [PATCH] Editorial: Add installable web application definition (#1163) SHA: 2d9f7609b01f7a8ae56f285d23e228bbc456c103 Reason: push, by marcoscaceres Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- index.html | 668 +++++++++++++++++++++++++++-------------------------- 1 file changed, 337 insertions(+), 331 deletions(-) diff --git a/index.html b/index.html index fedbc133..e0e99d9a 100644 --- a/index.html +++ b/index.html @@ -1,6 +1,6 @@ - + - +

Web Application Manifest

-

W3C Editor's Draft

+

W3C Editor's Draft

More details about this document
@@ -346,7 +346,7 @@

Web Application Manifest

Web Application Manifest

The example also shows how to use the link type "manifest" and how - to use other meta and link elements to give the web + to use other meta and link elements to give the web application a fallback name and set of icons.

@@ -699,8 +699,8 @@

Web Application Manifest

(application/manifest+json). Developers can also choose a different extension (e.g. .json) or none at all (e.g. /api/GetManifest), but are encouraged to transfer the manifest - using the application/manifest+json MIME type, although - any JSON MIME type is ok. + using the application/manifest+json MIME type, although + any JSON MIME type is ok.

1.1.3 @@ -715,9 +715,9 @@

Web Application Manifest

  • The developer has included two icons at the same size, but in two different formats. One is explicitly marked as WebP through the type member. If the user agent doesn't support WebP, it falls - back to the second icon of the same size. The MIME type of + back to the second icon of the same size. The MIME type of this icon can then be either determined via a HTTP header, or can - be sniffed by the user agent + be sniffed by the user agent once the first few bytes of the icon are received.
  • The developer wants to use an SVG for greater than or equal to @@ -767,12 +767,12 @@

    Web Application Manifest

    agent would present https://example.com/icons/play-later.svg next to the text. When launched, the user agent would instantiate a new - top-level browsing context and navigate to + top-level browsing context and navigate to https://example.com/play-later.
  • The second shortcut would be displayed with the text "Subscriptions". When launched, the user agent would instantiate a - new top-level browsing context and navigate to + new top-level browsing context and navigate to https://example.com/subscriptions?sort=desc.
  • @@ -888,26 +888,26 @@

    Web Application Manifest

    - The text-direction list is the list « + The text-direction list is the list « "ltr", "rtl", "auto" ».

    - To process the dir member, given ordered map - json and ordered map manifest: + To process the dir member, given ordered map + json and ordered map manifest:

    1. Set manifest["dir"] to "auto".
    2. -
    3. If json["dir"] doesn't exist or if json["dir"] is not - a string, return. +
    4. If json["dir"] doesn't exist or if json["dir"] is not + a string, return.
    5. -
    6. Strip leading and trailing ASCII whitespace from +
    7. Strip leading and trailing ASCII whitespace from json["dir"].
    8. -
    9. ASCII lowercase json["dir"]. +
    10. ASCII lowercase json["dir"].
    11. -
    12. If text-direction list doesn't contain +
    13. If text-direction list doesn't contain json["dir"], return.
    14. Set manifest["dir"] to json["dir"]. @@ -919,7 +919,7 @@

      Web Application Manifest

    - The manifest's lang member is a string in the form of a + The manifest's lang member is a string in the form of a language tag that specifies the language for the values of the manifest's localizable members. If the lang member is not specified, the language is treated as unknown. @@ -931,7 +931,7 @@

    Web Application Manifest

    accessibility.

    - A language tag is a string that matches the production + A language tag is a string that matches the production of a well-formed Language-Tag defined in [BCP47].

    Note

    @@ -941,20 +941,20 @@

    Web Application Manifest

    spoken in China).

    - To process the lang member, given ordered map - json and ordered map manifest: + To process the lang member, given ordered map + json and ordered map manifest:

      -
    1. If json["lang"] doesn't exist or if json["lang"] is - not a string, return. +
    2. If json["lang"] doesn't exist or if json["lang"] is + not a string, return.
    3. -
    4. Strip leading and trailing ASCII whitespace from +
    5. Strip leading and trailing ASCII whitespace from json["lang"].
    6. If calling IsStructurallyValidLanguageTag with json["lang"] returns false, return.
    7. -
    8. Set manifest["lang"] to the result of calling the +
    9. Set manifest["lang"] to the result of calling the CanonicalizeUnicodeLocaleId abstract operation with json["lang"].
    10. @@ -1008,7 +1008,7 @@

      Web Application Manifest

      - The manifest's name member is a string that + The manifest's name member is a string that represents the name of the web application as it is usually displayed to the user (e.g., amongst a list of other applications, or as a label for an icon). @@ -1073,7 +1073,7 @@

      Web Application Manifest

      - The manifest's short_name member is a string that + The manifest's short_name member is a string that represents a short version of the name of the web application. It is intended to be used where there is insufficient space to display the full name of the web application. @@ -1134,7 +1134,7 @@

      Web Application Manifest

      - The manifest's scope member is a string that + The manifest's scope member is a string that represents the navigation scope of this web application's application context.

      @@ -1146,21 +1146,21 @@

      Web Application Manifest

      - To process the scope member, given ordered map - json and ordered map manifest: + To process the scope member, given ordered map + json and ordered map manifest:

        -
      1. Set manifest["scope"] to the result of parsing +
      2. Set manifest["scope"] to the result of parsing "." with manifest["start_url"] as the base URL.
      3. If json["scope"] is the empty string, then return.
      4. -
      5. Let scope be the result of parsing +
      6. Let scope be the result of parsing json["scope"] with manifest URL as the base URL.
      7. If scope is failure, return.
      8. -
      9. Set scope's query and fragment to null. +
      10. Set scope's query and fragment to null.
      11. If manifest["start_url"] is not within scope of scope, return. @@ -1287,21 +1287,21 @@

        Web Application Manifest

        display mode.

        - To process the display member, given ordered map - json and ordered map manifest: + To process the display member, given ordered map + json and ordered map manifest:

        1. Set manifest["display"] to "browser".
        2. -
        3. If json["display"] doesn't exist or json["display"] - is not a a string, return. +
        4. If json["display"] doesn't exist or json["display"] + is not a a string, return.
        5. -
        6. Strip leading and trailing ASCII whitespace from +
        7. Strip leading and trailing ASCII whitespace from json["display"].
        8. -
        9. ASCII lowercase json["display"]. +
        10. ASCII lowercase json["display"].
        11. -
        12. If display modes list doesn't contain +
        13. If display modes list doesn't contain json["display"], return.
        14. Set manifest["display"] to json["display"]. @@ -1356,27 +1356,27 @@

          Web Application Manifest

          - The manifest's orientation member is a string that - serves as the default screen orientation for all top-level + The manifest's orientation member is a string that + serves as the default screen orientation for all top-level browsing contexts of the web application. The possible values are - those of the OrientationLockType enum, which in this + those of the OrientationLockType enum, which in this specification are referred to as the orientation values (i.e., "any", "natural", "landscape", "portrait", "portrait-primary", "portrait-secondary", "landscape-primary", or "landscape-secondary").

          If the user agent supports the value of the orientation - member as the default screen orientation, then that serves as - the default screen orientation for the life of the web + member as the default screen orientation, then that serves as + the default screen orientation for the life of the web application (unless overridden by some other means at runtime). This means that the user agent MUST return the orientation to the - default screen orientation any time the orientation is - unlocked [SCREEN-ORIENTATION] or the top-level browsing - context is navigated. + default screen orientation any time the orientation is + unlocked [SCREEN-ORIENTATION] or the top-level browsing + context is navigated.

          Note

          Although the specification relies on the [SCREEN-ORIENTATION]'s - OrientationLockType, it is OPTIONAL for a user agent to implement + OrientationLockType, it is OPTIONAL for a user agent to implement the [SCREEN-ORIENTATION] API. Supporting the [SCREEN-ORIENTATION] API is, of course, encouraged.

          @@ -1385,29 +1385,29 @@

          Web Application Manifest

          some screen orientations and cannot be used together. Which orientations and display modes cannot be used together is left to the discretion of implementers. For example, for some user agents, - it might not make sense to change the default screen + it might not make sense to change the default screen orientation of an application while in browser display mode.

          Note

          Once the web application is running, other means can change the - orientation of a top-level browsing context (such as via + orientation of a top-level browsing context (such as via [SCREEN-ORIENTATION] API).

          - To process the orientation member, given ordered map - json and ordered map manifest: + To process the orientation member, given ordered map + json and ordered map manifest:

            -
          1. If json["orientation"] doesn't exist or - json["orientation"] is not a string, return. +
          2. If json["orientation"] doesn't exist or + json["orientation"] is not a string, return.
          3. -
          4. Strip leading and trailing ASCII whitespace from +
          5. Strip leading and trailing ASCII whitespace from json["orientation"].
          6. -
          7. ASCII lowercase json["orientation"]. +
          8. ASCII lowercase json["orientation"].
          9. -
          10. If json["orientation"] doesn't contain any of the +
          11. If json["orientation"] doesn't contain any of the orientation values, return.
          12. Set manifest["orientation"] to json["orientation"]. @@ -1462,9 +1462,9 @@

            Web Application Manifest

            - The manifest's start_url member is a string that + The manifest's start_url member is a string that represents the start URL , which is - URL that the developer would prefer the user agent load when + URL that the developer would prefer the user agent load when the user launches the web application (e.g., when the user clicks on the icon of the web application from a device's application menu or homescreen). @@ -1477,25 +1477,25 @@

            Web Application Manifest

            being created or any time thereafter.

            - To process the start_url member, given ordered map - json, ordered map manifest, URL - manifest URL, and URL document URL: + To process the start_url member, given ordered map + json, ordered map manifest, URL + manifest URL, and URL document URL:

            1. Set manifest["start_url"] to document URL.
            2. -
            3. If json["start_url"] doesn't exist or - json["start_url"] is not a string, return. +
            4. If json["start_url"] doesn't exist or + json["start_url"] is not a string, return.
            5. -
            6. If the type of json["start_url"] is not string, or if +
            7. If the type of json["start_url"] is not string, or if json["start_url"] is the empty string, return.
            8. -
            9. Let start URL be the result of parsing +
            10. Let start URL be the result of parsing json["start_url"], using manifest URL as the base URL.
            11. If start URL is failure, return.
            12. -
            13. If start URL is not same origin as document URL, +
            14. If start URL is not same origin as document URL, return.
            15. Otherwise, set manifest["start_url"] to start URL. @@ -1508,7 +1508,7 @@

              Web Application Manifest

              For example, if the value of start_url is ../start_point.html, and the manifest's URL is https://example.com/resources/manifest.webmanifest, - then the result of parsing would be + then the result of parsing would be https://example.com/start_point.html.

              @@ -1596,7 +1596,7 @@

              Web Application Manifest

              - The manifest's id member is a string that represents + The manifest's id member is a string that represents the identity for the application. The identity takes the form of a URL, which is same origin as the start URL.

              @@ -1607,7 +1607,7 @@

              Web Application Manifest

              application, it SHOULD treat that manifest as a description of a distinct application, even if it is served from the same URL as that of another application. When the user agent sees a manifest where - manifest["id"] is equal (with exclude fragments OPTIONALLY set to true) to the identity of an + manifest["id"] is equal (with exclude fragments OPTIONALLY set to true) to the identity of an already-installed application, it SHOULD be used as a signal that this manifest is a replacement for the already-installed application's manifest, and not a distinct application, even if it is @@ -1615,16 +1615,16 @@

              Web Application Manifest

              Note: Excluding fragments is best practice
              Note

              The identity can be used by a service that collects lists of web @@ -1636,27 +1636,27 @@

              Web Application Manifest

              within scope.

              - To process the id member, given ordered map - json, ordered map manifest: + To process the id member, given ordered map + json, ordered map manifest:

              1. Set manifest["id"] to manifest["start_url"].
              2. -
              3. If the type of json["id"] is not string, return. +
              4. If the type of json["id"] is not string, return.
              5. If json["id"] is the empty string, return.
              6. -
              7. Let base origin be manifest["start_url"]'s origin. +
              8. Let base origin be manifest["start_url"]'s origin.
              9. -
              10. Let id be the result of parsing json["id"] +
              11. Let id be the result of parsing json["id"] with base origin as the base URL.
              12. If id is failure, return.
              13. -
              14. If id is not same origin as manifest["start_url"], +
              15. If id is not same origin as manifest["start_url"], return.
              16. -
              17. Set id's fragment to null. +
              18. Set id's fragment to null.
              19. Set manifest["id"] to id.
              20. @@ -1804,8 +1804,8 @@

                Web Application Manifest

                Since id is resolved against start_url's - origin, providing "../foo", "foo", "/foo", "./foo" all - resolves to the same identifier. As such, best practice is to + origin, providing "../foo", "foo", "/foo", "./foo" all + resolves to the same identifier. As such, best practice is to use a leading "/" to be explicit that the id is a root-relative URL path. Also, standard encoding/decoding rules apply to the id processing algorithm, as per the URL Standard. @@ -1867,23 +1867,23 @@

                Web Application Manifest

                If the user agent honors the value of the theme_color member as the default theme color, then that color serves as the - theme color for all browsing contexts to which the manifest - is applied. However, the user agent MAY override the default theme color if a document whose URL is + theme color for all browsing contexts to which the manifest + is applied. However, the user agent MAY override the default theme color if a document whose URL is within scope of the application context's manifest - includes a meta element whose name attribute is - "theme-color". However, the user agent SHOULD NOT - override the default theme color via a meta element whose - name attribute is "theme-color" for documents' - URL are not within scope, since the application + includes a meta element whose name attribute is + "theme-color". However, the user agent SHOULD NOT + override the default theme color via a meta element whose + name attribute is "theme-color" for documents' + URL are not within scope, since the application has no control over these documents.

                - The user agent MAY ignore the theme color's alpha component based on the context. For example, in most environments, + The user agent MAY ignore the theme color's alpha component based on the context. For example, in most environments, the theme color cannot be transparent.

                Implementors MAY override the value defined by the - theme_color member to support prefers-color-scheme. + theme_color member to support prefers-color-scheme.

                Note

                When processing a manifest, the process a color member @@ -1941,7 +1941,7 @@

                Web Application Manifest

                The manifest's background_color member describes the expected background color of the web application. It repeats what is already available in the application stylesheet but can be used by - the user agent to draw the background color of a web + the user agent to draw the background color of a web application for which the manifest is known before the files are actually available, whether they are fetched from the network or retrieved from disk. @@ -1949,12 +1949,12 @@

                Web Application Manifest

                The background_color member is only meant to improve the user experience while a web application is loading and MUST NOT be - used by the user agent as the background color when the web + used by the user agent as the background color when the web application's stylesheet is available.

                Implementors MAY override the value defined by the - background_color member to support prefers-color-scheme. + background_color member to support prefers-color-scheme.

                Note

                When processing a manifest, the process a color member @@ -2009,7 +2009,7 @@

                Web Application Manifest

                - The manifest's shortcuts member is an list of + The manifest's shortcuts member is an list of shortcut items that provide access to key tasks within a web application.

                @@ -2029,19 +2029,19 @@

                Web Application Manifest

                user, is at the discretion of the user agent and/or operating system.

                - To process the shortcuts member, given ordered map - json, ordered map manifest, and - URL manifest URL: + To process the shortcuts member, given ordered map + json, ordered map manifest, and + URL manifest URL:

                  -
                1. Let processedShortcuts be a new list. +
                2. Let processedShortcuts be a new list.
                3. -
                4. Set manifest["shortcuts"] to processedShortcuts. +
                5. Set manifest["shortcuts"] to processedShortcuts.
                6. -
                7. If json["shortcuts"] doesn't exist or - json["shortcuts"] is not a list, return. +
                8. If json["shortcuts"] doesn't exist or + json["shortcuts"] is not a list, return.
                9. -
                10. For each entry of json["shortcuts"]: +
                11. For each entry of json["shortcuts"]:
                  1. Let shortcut be process a shortcut with entry, manifest URL, manifest["scope"], and @@ -2049,7 +2049,7 @@

                    Web Application Manifest

                  2. If shortcut is failure, continue.
                  3. -
                  4. Append shortcut to processedShortcuts. +
                  5. Append shortcut to processedShortcuts.
                12. @@ -2085,7 +2085,7 @@

                  Web Application Manifest

                  - A language map is an ordered map whose key is a + A language map is an ordered map whose key is a language tag and whose value is a localized value. The localized value is content localized in the language given by the key. @@ -2122,7 +2122,7 @@

                  Web Application Manifest

                - A localized text object is an ordered map with the + A localized text object is an ordered map with the following properties:

                @@ -2130,7 +2130,7 @@

                Web Application Manifest

                value
                - The localized string. + The localized string.
                dir (optional) @@ -2146,12 +2146,12 @@

                Web Application Manifest

                - For localizable members that accept strings, the + For localizable members that accept strings, the *_localized member's language map accepts either a - string or a localized text object as the localized value. + string or a localized text object as the localized value.

                - When a string is used, or when the dir + When a string is used, or when the dir member of the localized text object is missing, the default direction (dir member of the manifest) is applied.

                @@ -2163,7 +2163,7 @@

                Web Application Manifest

                left-to-right, and vice versa.

                - When a string is used, or when the + When a string is used, or when the lang member of the localized text object is missing, the language tag of the language map key is applied.

                @@ -2190,86 +2190,86 @@

                Web Application Manifest

                }

                - To process a *_localized text member, given ordered map json, ordered map map, - string member, and text-direction + To process a *_localized text member, given ordered map json, ordered map map, + string member, and text-direction defaultDirection:

                  -
                1. If member does not exist in json, return. +
                2. If member does not exist in json, return.
                3. Let languageMap be json[member].
                4. -
                5. If languageMap is not an ordered map, return. +
                6. If languageMap is not an ordered map, return.
                7. -
                8. Let languageTags be the keys of +
                9. Let languageTags be the keys of languageMap.
                10. -
                11. Set map[member] to a new ordered map. +
                12. Set map[member] to a new ordered map.
                13. -
                14. For each languageTag of languageTags, run +
                15. For each languageTag of languageTags, run process a localized text object, passing languageMap[languageTag], languageTag, map, member, and defaultDirection.

                - To process a localized text object, given string or - ordered map localizedValue, string - defaultLanguageTag, ordered map map, - string member, and text-direction + To process a localized text object, given string or + ordered map localizedValue, string + defaultLanguageTag, ordered map map, + string member, and text-direction defaultDirection:

                  -
                1. Let normalizedValue be an ordered map. +
                2. Let normalizedValue be an ordered map.
                3. -
                4. If localizedValue is a string, strip leading and trailing ASCII whitespace from localizedValue and - set normalizedValue["value"] to localizedValue. +
                5. If localizedValue is a string, strip leading and trailing ASCII whitespace from localizedValue and + set normalizedValue["value"] to localizedValue.
                6. -
                7. If localizedValue is an ordered map: +
                8. If localizedValue is an ordered map:
                    -
                  1. If "value" exists in localizedValue and - localizedValue["value"] is a string, strip leading and trailing ASCII whitespace from localizedValue["value"] and - set normalizedValue["value"] to +
                  2. If "value" exists in localizedValue and + localizedValue["value"] is a string, strip leading and trailing ASCII whitespace from localizedValue["value"] and + set normalizedValue["value"] to localizedValue["value"].
                  3. -
                  4. If "lang" exists in localizedValue and - localizedValue["lang"] is a string, strip leading and trailing ASCII whitespace from localizedValue["lang"] and - set normalizedValue["lang"] to +
                  5. If "lang" exists in localizedValue and + localizedValue["lang"] is a string, strip leading and trailing ASCII whitespace from localizedValue["lang"] and + set normalizedValue["lang"] to localizedValue["lang"].
                  6. -
                  7. If "dir" exists in localizedValue and - localizedValue["dir"] is a string: +
                  8. If "dir" exists in localizedValue and + localizedValue["dir"] is a string:
                      -
                    1. Strip leading and trailing ASCII whitespace from +
                    2. Strip leading and trailing ASCII whitespace from localizedValue["dir"].
                    3. -
                    4. If text-direction list contains - localizedValue["dir"], set +
                    5. If text-direction list contains + localizedValue["dir"], set normalizedValue["dir"] to localizedValue["dir"].
                9. -
                10. If "value" does not exist in normalizedValue, return. +
                11. If "value" does not exist in normalizedValue, return.
                12. -
                13. If "lang" does not exist in normalizedValue, - set normalizedValue["lang"] to defaultLanguageTag. +
                14. If "lang" does not exist in normalizedValue, + set normalizedValue["lang"] to defaultLanguageTag.
                15. -
                16. If "dir" does not exist in normalizedValue, - set normalizedValue["dir"] to defaultDirection. +
                17. If "dir" does not exist in normalizedValue, + set normalizedValue["dir"] to defaultDirection.
                18. If calling IsStructurallyValidLanguageTag with normalizedValue["lang"] or calling IsStructurallyValidLanguageTag with defaultLanguageTag returns false, return.
                19. -
                20. Set map[member][defaultLanguageTag] to +
                21. Set map[member][defaultLanguageTag] to normalizedValue.
                Note

                The process a localized text object algorithm takes both a - string or a localized text object for the localized value parameter, but the processed result will be normalized into + string or a localized text object for the localized value parameter, but the processed result will be normalized into a localized text object with the value, lang, and dir members set. @@ -2280,8 +2280,8 @@

                Web Application Manifest

                - For localizable members that accept a list of image resources, the *_localized member's language map - accepts a list of image resources as the localized value. + For localizable members that accept a list of image resources, the *_localized member's language map + accepts a list of image resources as the localized value.

                To process a *_localized image resource member, given - ordered map json, ordered map map, string member, and URL manifest URL: + ordered map json, ordered map map, string member, and URL manifest URL:

                  -
                1. If member does not exist in json, return. +
                2. If member does not exist in json, return.
                3. Let languageMap be json[member].
                4. -
                5. If languageMap is not an ordered map, return. +
                6. If languageMap is not an ordered map, return.
                7. -
                8. Let languageTags be the keys of +
                9. Let languageTags be the keys of languageMap.
                10. -
                11. Set map[member] to a new ordered map. +
                12. Set map[member] to a new ordered map.
                13. -
                14. For each languageTag of languageTags: +
                15. For each languageTag of languageTags:
                  1. If calling IsStructurallyValidLanguageTag - with languageTag returns false, continue. + with languageTag returns false, continue.
                  2. Run process image resources, passing - languageMap[languageTag] as the list of image resources, languageMap[languageTag] as the list of image resources, map[member], manifest URL, and languageTag as the member.
                  3. @@ -2368,20 +2368,20 @@

                    Web Application Manifest

                    The steps for processing a manifest are given by the following - algorithm. The algorithm takes a URL document URL, a - URL manifest URL, and a byte sequence bodyBytes. + algorithm. The algorithm takes a URL document URL, a + URL manifest URL, and a byte sequence bodyBytes.

                      -
                    1. Let json be the result of parse JSON bytes to an Infra value passing bodyBytes. +
                    2. Let json be the result of parse JSON bytes to an Infra value passing bodyBytes.
                    3. If the json is a parsing exception, or json is not an - ordered map: + ordered map:
                        -
                      1. Set json to an empty ordered map. +
                      2. Set json to an empty ordered map.
                    4. -
                    5. Let manifest be an empty ordered map. +
                    6. Let manifest be an empty ordered map.
                    7. Process the dir member passing json and manifest.
                    8. @@ -2404,9 +2404,9 @@

                      Web Application Manifest

                    9. Process the id member passing json and manifest.
                    10. -
                    11. If the document's processed manifest is not - null, and document's processed manifest's id is - not equal to manifest["id"], return. +
                    12. If the document's processed manifest is not + null, and document's processed manifest's id is + not equal to manifest["id"], return.
                    13. Process the scope member passing json, manifest, and manifest URL. @@ -2435,7 +2435,7 @@

                      Web Application Manifest

                      any proprietary and/or other supported members at this point in the algorithm.
                    14. -
                    15. Let document's +
                    16. Let document's processed manifest be manifest.
                    @@ -2445,35 +2445,35 @@

                    Web Application Manifest

                    Note: Supported colors

                    - Only sRGB colors, and colors the user agent can convert to - sRGB without any outside knowledge (e.g., "AliceBlue"), are + Only sRGB colors, and colors the user agent can convert to + sRGB without any outside knowledge (e.g., "AliceBlue"), are supported. For example, lab(…) or color(display-p3, …) can be - converted to sRGB without outside knowledge, but + converted to sRGB without outside knowledge, but color(--custom-profile, …) would require finding a matching "@color-profile" rule which cannot be specified in the manifest.

                    - To process a color member, using ordered map - json, ordered map map, and - string member: + To process a color member, using ordered map + json, ordered map map, and + string member:

                      -
                    1. If json[member] doesn't exist or json[member] is - not a string, return. +
                    2. If json[member] doesn't exist or json[member] is + not a string, return.
                    3. -
                    4. Strip leading and trailing ASCII whitespace from +
                    5. Strip leading and trailing ASCII whitespace from json[member].
                    6. -
                    7. Let color be the result of parsing the value of +
                    8. Let color be the result of parsing the value of json[member] as a CSS color.
                    9. If color is failure, return.
                    10. -
                    11. If color can be converted to sRGB using solely +
                    12. If color can be converted to sRGB using solely information the user agent inherently knows, then convert color - to sRGB. + to sRGB.
                    13. -
                    14. If color is not sRGB color, return. +
                    15. If color is not sRGB color, return.
                    16. Set map[member] to color.
                    17. @@ -2484,15 +2484,15 @@

                      Web Application Manifest

                      - To process a text member, given ordered map - json, ordered map map, and - string member: + To process a text member, given ordered map + json, ordered map map, and + string member:

                        -
                      1. If json[member] doesn't exists or json[member] - is not a string, return. +
                      2. If json[member] doesn't exists or json[member] + is not a string, return.
                      3. -
                      4. Strip leading and trailing ASCII whitespace from +
                      5. Strip leading and trailing ASCII whitespace from json[member].
                      6. Set map[member] to the value of json[member]. @@ -2505,9 +2505,9 @@

                        Web Application Manifest

                        The processing a manifest steps are invoked by [HTML]'s - processing steps for the link element, but MAY also be invoked + processing steps for the link element, but MAY also be invoked by the user agent to process a manifest without an associated - document. + document.

                        In this case, to match the guarantees made by the corresponding @@ -2515,16 +2515,16 @@

                        Web Application Manifest

                        some point in the past:

                        Note: The rationale for these checks

                        - A processed manifest is applied to a top-level browsing context, + A processed manifest is applied to a top-level browsing context, meaning that the members of the manifest are affecting the presentation and/or behavior of the browsing context. Whenever a - top-level browsing context is created, the user agent MAY - apply a manifest to it before navigation begins. + top-level browsing context is created, the user agent MAY + apply a manifest to it before navigation begins.

                        Note

                        - A top-level browsing context that has a manifest applied to + A top-level browsing context that has a manifest applied to it is referred to as an application context.

                        If an application context is created as a result of the user - agent being asked to navigate to a deep link, the - user agent MUST immediately navigate to the deep link + agent being asked to navigate to a deep link, the + user agent MUST immediately navigate to the deep link with historyHandling set to "replace". Otherwise, when the application context is created, the user agent MUST - immediately navigate to the start URL with + immediately navigate to the start URL with historyHandling set to "replace".

                        Note

                        - Each manifest image resource is an image resource that + Each manifest image resource is an image resource that is conceptually part of a web application, suitable to use in various contexts depending on the semantics of the member that is using the object (e.g., an icon that is part of an application menu, etc.).

                        - A manifest image resource differs from a image resource in that + A manifest image resource differs from a image resource in that it can have an additional purpose member.

                        @@ -2688,7 +2688,7 @@

                        Web Application Manifest

                        The purpose member is an - unordered set of unique space-separated tokens. The allowed + unordered set of unique space-separated tokens. The allowed values are the icon purposes.

                        @@ -2737,7 +2737,7 @@

                        Web Application Manifest

                        - The icon purposes list is the list « "monochrome", "maskable", "any" ». + The icon purposes list is the list « "monochrome", "maskable", "any" ».

                        Note

                        If an icon contains multiple purposes, it could be used for any of @@ -2748,30 +2748,30 @@

                        Web Application Manifest

                        the purpose "fizzbuzz", then it will be ignored.

                        - To determine the purpose of an image, given ordered map json: + To determine the purpose of an image, given ordered map json:

                          -
                        1. If json["purpose"] doesn't exist or if - json["purpose"] is not a string: +
                        2. If json["purpose"] doesn't exist or if + json["purpose"] is not a string:
                            -
                          1. Return set « "any" ». +
                          2. Return set « "any" ».
                        3. -
                        4. Let keywords be the result of split on ASCII whitespace json["purpose"]. +
                        5. Let keywords be the result of split on ASCII whitespace json["purpose"].
                        6. -
                        7. Let purposes be new set. +
                        8. Let purposes be new set.
                        9. -
                        10. For each keyword of keywords: +
                        11. For each keyword of keywords:
                            -
                          1. If icon purposes list doesn't contain keyword, - then continue. +
                          2. If icon purposes list doesn't contain keyword, + then continue.
                          3. -
                          4. Otherwise, append keyword to purposes. +
                          5. Otherwise, append keyword to purposes.
                        12. -
                        13. If purposes is empty, then return failure. +
                        14. If purposes is empty, then return failure.
                        15. Return purposes.
                        16. @@ -2782,9 +2782,9 @@

                          Web Application Manifest

                          - The security policy that governs whether a user agent can + The security policy that governs whether a user agent can fetch an icon image is governed by the img-src directive [CSP3] - associated with the manifest's owner Document. + associated with the manifest's owner Document.

                          - If the application context's active document's - URL is not within scope of the application context's processed manifest, the user agent SHOULD show - a prominent UI element indicating the URL or at least its - origin, including whether it is served over a secure connection. - This UI SHOULD differ from any UI used when the URL is + If the application context's active document's + URL is not within scope of the application context's processed manifest, the user agent SHOULD show + a prominent UI element indicating the URL or at least its + origin, including whether it is served over a secure connection. + This UI SHOULD differ from any UI used when the URL is within scope of the application context's processed manifest, in order to make it obvious that the user is navigating off scope. @@ -3471,12 +3477,12 @@

                          Web Application Manifest

                          Note

                          - Once a user agent applies a particular display mode to an + Once a user agent applies a particular display mode to an application context, it becomes the default display - mode for the top-level browsing context (i.e., it is used - as the display mode when the window is navigated). The user + mode for the top-level browsing context (i.e., it is used + as the display mode when the window is navigated). The user agent MAY override the default display mode for security reasons - (e.g., the top-level browsing context is navigated to + (e.g., the top-level browsing context is navigated to another origin) and/or the user agent MAY provide the user with a means of switching to another display mode.

                          @@ -3647,7 +3653,7 @@

                          Web Application Manifest

                        17. If the user agent supports manifest["display"], then return manifest["display"].
                        18. -
                        19. For each fallback_mode of the fallback chain of +
                        20. For each fallback_mode of the fallback chain of manifest["display"]:
                          1. If the user agent supports the fallback_mode, then return @@ -3676,21 +3682,21 @@

                            Web Application Manifest

                            - The display modes list is the list « "fullscreen", "standalone", "minimal-ui", "browser" ». + The display modes list is the list « "fullscreen", "standalone", "minimal-ui", "browser" ».

                            A user agent MUST reflect the applied display mode of the web - application in the display-mode media feature [MEDIAQUERIES-5]. + application in the display-mode media feature [MEDIAQUERIES-5].

                            Note

                            A user agent will expose the actual display mode being applied — not necessarily the one declared in the manifest — via the - display-mode media feature, accessible through CSS or + display-mode media feature, accessible through CSS or JavaScript. Note that this media feature will also reflect other display modes for a web page when a manifest is not being applied. For example, if the end-user puts the page into fullscreen, then the user agent would reflect this change to CSS and scripts via the - display-mode media feature. + display-mode media feature.

                            7. @@ -3750,7 +3756,7 @@

                            Web Application Manifest

                            It is RECOMMENDED that UI that affords the end user the ability to - install a web application also allows inspecting the icon, name, + install a web application also allows inspecting the icon, name, start URL, origin, etc. pertaining to a web application. This is to give an end-user an opportunity to make a conscious decision to approve, and possibly modify, the information pertaining to the web @@ -3764,7 +3770,7 @@

                            Web Application Manifest

                            timing attack on the user agent's cache). This could be done by, for example, invalidating from the user agent's cache the resources linked to from the manifest (for example, icons) after a web application is - installed - or by using an entirely different cache from that + installed - or by using an entirely different cache from that used for regular web browsing.

                            @@ -3953,7 +3959,7 @@

                            Web Application Manifest

                            See link type "manifest" for details about how a web manifest is - fetched processed. + fetched processed.
                            @@ -3967,7 +3973,7 @@

                            Web Application Manifest

                            There is only one class of product that can claim conformance to this - specification: a user agent. + specification: a user agent.

                            Note

                            Although this specification is primarily targeted at web browsers, it @@ -4239,7 +4245,7 @@

                            Web Application Manifest

                            Authors can provide localized values for the localizable members of the manifest. The user agent passes all localized values to the host operating system. When the user changes the - locale at the OS level, the OS can present the updated localized + locale at the OS level, the OS can present the updated localized values of the installed web application.
                            @@ -4292,7 +4298,7 @@

                            Web Application Manifest

                            Public Working Draft:

                            K. @@ -4789,17 +4795,17 @@

                            Web Application Manifest

                            M. References

                            M.1 Normative references

                            [accname-1.2]
                            - Accessible Name and Description Computation 1.2. Bryan Garaventa; Melanie Sumner. W3C. 2 August 2024. W3C Working Draft. URL: https://www.w3.org/TR/accname-1.2/ + Accessible Name and Description Computation 1.2. Bryan Garaventa; Melanie Sumner. W3C. 6 February 2025. W3C Working Draft. URL: https://www.w3.org/TR/accname-1.2/
                            [BCP47]
                            - Tags for Identifying Languages. A. Phillips, Ed.; M. Davis, Ed.. IETF. September 2009. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc5646 + Tags for Identifying Languages. A. Phillips, Ed.; M. Davis, Ed. IETF. September 2009. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc5646
                            [CSP3]
                            - Content Security Policy Level 3. Mike West; Antonio Sartori. W3C. 14 October 2024. W3C Working Draft. URL: https://www.w3.org/TR/CSP3/ + Content Security Policy Level 3. Mike West; Antonio Sartori. W3C. 6 February 2025. W3C Working Draft. URL: https://www.w3.org/TR/CSP3/
                            [css-color-4]
                            - CSS Color Module Level 4. Chris Lilley; Tab Atkins Jr.; Lea Verou. W3C. 13 February 2024. W3C Candidate Recommendation. URL: https://www.w3.org/TR/css-color-4/ + CSS Color Module Level 4. Chris Lilley; Tab Atkins Jr.; Lea Verou. W3C. 13 February 2024. CRD. URL: https://www.w3.org/TR/css-color-4/
                            [CSS-MIME]
                            The text/css Media Type. H. Lie; B. Bos; C. Lilley. IETF. March 1998. Informational. URL: https://www.rfc-editor.org/rfc/rfc2318
                            [css-syntax-3]
                            - CSS Syntax Module Level 3. Tab Atkins Jr.; Simon Sapin. W3C. 24 December 2021. W3C Candidate Recommendation. URL: https://www.w3.org/TR/css-syntax-3/ + CSS Syntax Module Level 3. Tab Atkins Jr.; Simon Sapin. W3C. 24 December 2021. CRD. URL: https://www.w3.org/TR/css-syntax-3/
                            [dom]
                            DOM Standard. Anne van Kesteren. WHATWG. Living Standard. URL: https://dom.spec.whatwg.org/
                            [ECMA-402]
                            @@ -4815,17 +4821,17 @@

                            Web Application Manifest

                            [infra]
                            Infra Standard. Anne van Kesteren; Domenic Denicola. WHATWG. Living Standard. URL: https://infra.spec.whatwg.org/
                            [JSON]
                            - The JavaScript Object Notation (JSON) Data Interchange Format. T. Bray, Ed.. IETF. December 2017. Internet Standard. URL: https://www.rfc-editor.org/rfc/rfc8259 + The JavaScript Object Notation (JSON) Data Interchange Format. T. Bray, Ed. IETF. December 2017. Internet Standard. URL: https://www.rfc-editor.org/rfc/rfc8259
                            [MEDIAQUERIES-5]
                            Media Queries Level 5. Dean Jackson; Florian Rivoal; Tab Atkins Jr.; Daniel Libby. W3C. 18 December 2021. W3C Working Draft. URL: https://www.w3.org/TR/mediaqueries-5/
                            [MIME-TYPES]
                            Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types. N. Freed; N. Borenstein. IETF. November 1996. Draft Standard. URL: https://www.rfc-editor.org/rfc/rfc2046
                            [permissions]
                            - Permissions. Marcos Caceres; Mike Taylor. W3C. 19 March 2024. W3C Working Draft. URL: https://www.w3.org/TR/permissions/ + Permissions. Marcos Caceres; Mike Taylor. W3C. 20 December 2024. W3C Working Draft. URL: https://www.w3.org/TR/permissions/
                            [RFC2119]
                            Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. March 1997. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
                            [RFC7159]
                            - The JavaScript Object Notation (JSON) Data Interchange Format. T. Bray, Ed.. IETF. March 2014. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc7159 + The JavaScript Object Notation (JSON) Data Interchange Format. T. Bray, Ed. IETF. March 2014. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc7159
                            [RFC8174]
                            Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. B. Leiba. IETF. May 2017. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc8174
                            [SCREEN-ORIENTATION]
                            @@ -4854,9 +4860,9 @@

                            Web Application Manifest

                            [RFC7258]
                            Pervasive Monitoring Is an Attack. S. Farrell; H. Tschofenig. IETF. May 2014. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc7258
                            [RFC9110]
                            - HTTP Semantics. R. Fielding, Ed.; M. Nottingham, Ed.; J. Reschke, Ed.. IETF. June 2022. Internet Standard. URL: https://httpwg.org/specs/rfc9110.html + HTTP Semantics. R. Fielding, Ed.; M. Nottingham, Ed.; J. Reschke, Ed. IETF. June 2022. Internet Standard. URL: https://httpwg.org/specs/rfc9110.html
                            [SERVICE-WORKERS-1]
                            - Service Workers. Jake Archibald; Marijn Kruisselbrink. W3C. 12 July 2022. W3C Candidate Recommendation. URL: https://www.w3.org/TR/service-workers/ + Service Workers. Jake Archibald; Marijn Kruisselbrink. W3C. 12 July 2022. CRD. URL: https://www.w3.org/TR/service-workers/
                            [TLS]
                            The Transport Layer Security (TLS) Protocol Version 1.2. T. Dierks; E. Rescorla. IETF. August 2008. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc5246
                            [webidl]
                            @@ -5739,13 +5745,13 @@

                            Web Application Manifest

                          2. § 1.16.5 Applying the manifest (2) (3)
                          3. - § 4. Installable web applications (2) (3) + § 4. Installable web applications (2) (3) (4)
                          4. - § 4.2 Launching a web application + § 4.2 Launching a web application
                          5. - § 5. Navigation scope (2) + § 5. Navigation scope (2)
                          6. - § 6. Display modes + § 6. Display modes