diff --git a/index.html b/index.html index 1ce74556..56945ba1 100644 --- a/index.html +++ b/index.html @@ -149,7 +149,7 @@

-
+

Installable web applications

@@ -216,48 +216,6 @@

-
-

- Common conventions and dependencies -

-

- The - [[\GetOwnProperty]] operation and the abstract operation - - hasOwnProperty, - parseFloat(string) function, and the - Type(x) notation are defined in - [[!ECMASCRIPT]]. -

-

- When instructed to Trim(x), a user agent MUST - behave as if [[!ECMASCRIPT]]'s - String.prototype.trim() function had been called on the string - x. -

-

- As the manifest uses the JSON format, this specification relies on the - types defined in [[!ECMA-404]] specification: namely object, array, - number, string, true, false, and - null. Strict type checking is not enforced by this - specification. Instead, each member's definition specifies the steps - required to process a particular member and what to do when a type does - not match what is expected. -

-

- The URL concept and - URL - parsing are defined in [[!WHATWG-URL]]. -

-

Display modes @@ -271,20 +229,14 @@

interpret them how they best see fit.

- Once a user agent applies a particular display mode to a web - application, 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 agent MAY override the default display mode for - security reasons (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. + 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 + agent MAY override the default display mode for security reasons + (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.

When the display member is missing, or if there is no @@ -306,12 +258,12 @@

For example, Awesome Browser only supports the - minimal-ui and browser display modes, but + minimal-ui and browser display modes, but a developer declares that she wants fullscreen in the manifest. In this case, the user agent will first check if it - supports fullscreen (it doesn't), then fall back to + supports fullscreen (it doesn't), so it falls back to standalone (which it also doesn't support), and - ultimately fall back to minimal-ui. + ultimately falls back to minimal-ui.

@@ -391,7 +343,7 @@

The display-mode media feature represents, via a CSS media query [[!MEDIAQ]], the display mode that the - user agent is applying to the web application. + user agent is applying to the web application.

@@ -466,11 +418,8 @@

The manifest keyword can be used with a [[!HTML]] - - link element. This keyword creates an external resource link. + link element. This keyword creates an external + resource link.

@@ -486,11 +435,11 @@

@@ -499,9 +448,7 @@

"rel-manifest">manifest

- link + link - a and area + a and area
- External Resource + External Resource not allowed @@ -514,20 +461,16 @@

The media type for a manifest serves as the default media type for resources associated with the manifest link - type. + "#rel-manifest">manifest link type.

- In cases where more than one - link element with a manifest link type - appears in a Document, the user agent uses the first - link element in tree order and ignores all subsequent - link elements with a manifest link type - (even if the first element was erroneous). See the steps for - obtaining a manifest. + In cases where more than one link element with a + manifest link type appears in a Document, + the user agent uses the first link element in + tree order and ignores all subsequent link element with a + manifest link type (even if the first element was + erroneous). See the steps for obtaining a manifest.

To obtain a manifest, the user agent MUST run the steps for @@ -538,23 +481,22 @@

scripts required by the document).

- A manifest is obtained and applied regardless of the - media attribute of the - link matches the environment or not. + A manifest is obtained and applied regardless of the + media attribute of the link + element matches the environment or not.

- Manifest processing model + Manifest life-cycle

- This section defines algorithms for obtaining - and processing a manifest, and gives - recommendations to implementers on how to react, when the manifest is - updated. + This section defines algorithms for obtaining, + processing, and applying a manifest, and gives recommendations + to implementers on how to react when the manifest is updated.

@@ -564,31 +506,20 @@

The steps for obtaining a manifest are given by the following algorithm. The algorithm, if successful, returns a processed manifest. In running these steps, a user agent MUST - NOT - delay the load event. + NOT delay the load event.

    -
  1. From the Document of the - top-level browsing context, let manifest link be the - first - link element in tree - order whose - rel attribute contains the token manifest. +
  2. From the Document of the top-level browsing + context, let manifest link be the first + link element in tree order whose + rel attribute contains the token manifest.
  3. If manifest link is not null:
    1. Honoring the manifest-src [[!CSP2]] directive, - and respecting [[!MIX]], - obtain a resource as per [[!HTML]]. If the - obtain a resource algorithm terminates prematurely, or is - denied by [[!CSP2]], terminate this algorithm. + and respecting [[!MIX]], obtain a resource as per + [[!HTML]]. If the obtain a resource algorithm terminates + prematurely, or is denied by [[!CSP2]], terminate this algorithm.
    2. Let response be a [[!FETCH]] the response @@ -599,11 +530,8 @@

    3. Otherwise, if manifest element is null, terminate this algorithm.
    4. -
    5. Using the - networking task source, queue - a task to perform the following: +
    6. Using the networking task source, queue a task to + perform the following:
      1. Let req be a new [[!FETCH]]
      2. Set req's origin to be the origin - of the - top-level browsing context. + "concept-request-origin">origin to be the origin of + the top-level browsing context.
      3. Set req's mode to @@ -632,9 +557,7 @@

      4. Set req's referrer to be the - Document of the - top-level browsing context. + Document of the top-level browsing context.
      5. Set req's @@ -655,9 +578,8 @@

        processing a manifest with response's body as the text, and url as the manifest URL, - the URL the - top-level browsing context's address. + the URL the top-level browsing + context's address.

      6. Return manifest.
      7. @@ -680,7 +602,6 @@

        "display": "fullscreen", "orientation": "landscape" } -

@@ -802,9 +723,8 @@

When an application context is created, the user agent MUST - immediately navigate to the start URL with - replacement enabled. + immediately navigate to the start URL + with replacement enabled.

@@ -815,9 +735,9 @@

- The appropriate time to apply a manifest is - when the application context is created and before navigation - to the start URL begins. + The appropriate time to apply a manifest is + when the application context is created and before navigation to the start URL begins.

@@ -872,21 +792,13 @@

list of other applications, or as a label for an icon).

- For all intents and purposes, the name member is functionally equivalent to - having a - meta element whose name - attribute is - application-name in a [[!HTML]] document. In cases - where no suitable name can be derived from processing a manifest, - [[!HTML]]'s - application-name or the - title element serve as suitable fallbacks. + For all intents and purposes, the name member is + functionally equivalent to having a meta element + whose name attribute is + application-name in a [[!HTML]] document. In + cases where no suitable name can be derived from processing a + manifest, [[!HTML]]'s application-name or the + title element serve as suitable fallbacks.

The steps for processing the name member is @@ -967,11 +879,8 @@

If no icons are listed in the manifest (or none of them are found to be suitable during processing), it is RECOMMENDED that the user agent fall back to using any icons found in the Document of - the - top-level browsing context. For example, an icon - link type and/or a favicon.ico can serve as suitable + the top-level browsing context. For example, an icon link + type and/or a favicon.ico can serve as suitable fallbacks.

@@ -1119,38 +1028,26 @@

The orientation member is a string that serves as the - default - orientation for all - top-level browsing contexts of the web application. The possible - values is one of the - OrientationLockType enum defined in + default orientation for all top-level browsing contexts of the + web application. The possible values is one of the + OrientationLockType enum defined in [[!SCREEN-ORIENTATION]].

If the user agent honors the value of the orientation - member as the default - orientation, then that serves as the default - 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 + member as the default orientation, then that serves as the + default 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 orientation any time the orientation is unlocked - [[!SCREEN-ORIENTATION]] or the - top-level browsing context is navigated. + [[!SCREEN-ORIENTATION]] or the top-level browsing context is + navigated.

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

@@ -1164,10 +1061,8 @@

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

The steps for processing the orientation @@ -1192,9 +1087,10 @@

  • Otherwise, Trim(value) and set value to be the result.
  • -
  • If value is not one of the OrientationLockType - enum values, or value is unsupported by the user agent, or - the value cannot be used together with display +
  • If value is not one of the + OrientationLockType enum values, or + value is unsupported by the user agent, or the + value cannot be used together with display mode:
    1. @@ -1214,12 +1110,11 @@

      The start_url member is a - string that represents the 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). + string that represents the start + URL, which is 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).

      The start_url member is purely @@ -1267,17 +1162,12 @@

    2. -
    3. If url is not same - origin as origin URL: +
    4. If url is not same origin as origin URL:
      1. Issue a developer warning that the - start_url needs to be - same-origin as Document of the - top-level browsing context. + start_url needs to be same-origin as + Document of the top-level browsing context.
      2. Return a new URL whose input is origin URL. @@ -1308,7 +1198,7 @@

        The manifest-src and default-src directives govern the origins from which a user agent can - fetch a manifest. As with other directives, by default the + fetch a manifest. As with other directives, by default the manifest-src directive is *, meaning that a user agent can, [[!CORS]] permitting, fetch the manifest cross-domain. Remote origins (e.g., a

        For all intents and purposes, an icon object is functionally - equivalent to link element whose rel - attribute is icon in a Document. + equivalent to link element whose + rel attribute is icon in a Document.

        @@ -1449,20 +1339,14 @@

        The sizes member is a string consisting of an - unordered set of unique space-separated tokens which are - ASCII case-insensitive that represents the dimensions of an icon - for visual media. Each keyword is either an - ASCII case-insensitive match for the string "any", - or a value that consists of two valid non-negative integers - that do not have a leading U+0030 DIGIT ZERO (0) character and that - are separated by a single U+0078 LATIN SMALL LETTER X or U+0058 LATIN + "json-string">string consisting of an unordered set of unique + space-separated tokens which are ASCII case-insensitive + that represents the dimensions of an icon for visual media. Each + keyword is either an ASCII case-insensitive match for the + string "any", or a value that consists of two valid non-negative integers that do + not have a leading U+0030 DIGIT ZERO (0) character and that are + separated by a single U+0078 LATIN SMALL LETTER X or U+0058 LATIN CAPITAL LETTER X character. The keywords represent icon sizes in raw pixels (as opposed to CSS pixels). When multiple icon objects are available, a user agent can use @@ -1492,17 +1376,13 @@

    5. Otherwise, parse value as if it was a [[!HTML]] - - sizes attribute and let keywords be the + sizes attribute and let keywords be the result.
    6. For each keyword in keywords:
        -
      1. Convert keyword - to ASCII lowercase and add the resulting string to - sizes. +
      2. Convert keyword to ASCII lowercase and add + the resulting string to sizes.
    7. @@ -1562,10 +1442,8 @@

      There is no default MIME type for icon objects. However, for the - purposes of - determining the type of the resource, user agents must expect the - resource to be an image. + purposes of determining the type of the resource, user agents + must expect the resource to be an image.

      The steps for processing the type member of an @@ -1592,17 +1470,222 @@

    8. Trim(value) and set value to be resulting string.
    9. -
    10. If value is not a - valid MIME type or the value of type is not a - supported media format, issue a developer warning and return - undefined. +
    11. If value is not a valid MIME type or the value + of type is not a supported media format, issue a developer + warning and return undefined.
    12. Return value.
  • +
    +

    + Common conventions and dependencies +

    +

    + The + [[\GetOwnProperty]] operation and the abstract operation + + hasOwnProperty, + parseFloat(string) function, and the + Type(x) notation are defined in + [[!ECMASCRIPT]]. +

    +

    + When instructed to Trim(x), a user agent MUST + behave as if [[!ECMASCRIPT]]'s + String.prototype.trim() function had been called on the string + x. +

    +

    + As the manifest uses the JSON format, this specification relies on the + types defined in [[!ECMA-404]] specification: namely object, array, + number, string, true, false, and + null. Strict type checking is not enforced by this + specification. Instead, each member's definition specifies the steps + required to process a particular member and what to do when a type does + not match what is expected. +

    +

    + The URL concept and + URL + parsing are defined in [[!WHATWG-URL]]. +

    +

    + The + default orientation concept and the + OrientationLockType enum, are defined in + [[!SCREEN-ORIENTATION]]. +

    +

    + The following are defined in [[!HTML]]: +

    + +

    IANA considerations @@ -1834,7 +1917,6 @@

    "moz_awesome_thing": { ... } ... } -