- From: Joshua Bell <notifications@github.com>
- Date: Tue, 05 Dec 2017 00:28:43 +0000 (UTC)
- To: w3c/FileAPI <FileAPI@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/FileAPI/pull/92/review/81029500@github.com>
inexorabletash commented on this pull request. Thanks for taking this on! > + +<h3 id="url-model"> +Model</h3> + +Each user agent must maintain a <dfn id="BlobURLStore" export>Blob URL Store</dfn>. +A [=Blob URL Store=] is a [=map=] +where [=map/keys=] are [=valid URL strings=] +and [=map/values=] are [=Blob URL Entries=]. + +A <dfn>Blob URL Entry</dfn> consists of +an <dfn for="Blob URL Entry">object</dfn> (typically a {{Blob}}, +but other specs can extend this to refer to other types of objects), +and an <dfn for="Blob URL Entry">environment</dfn> (an [=environment settings object=]). + +[=map/Keys=] in the [=Blob URL Store=] (also known as <dfn lt="Blob URL" export>Blob URLs</dfn>) +are [=valid URL strings=] that when [=URL parser|parsed=] Has someone walked through blob URLs through the URL parser steps? >From a skim, I don't see how the host and path end up as as the origin and UUID as this states. Maybe there's a pending change for URL? Or maybe I'm just missing it. > 1. Let |result| be the empty string. - Append the string "blob" - (that is, the Unicode code point sequence U+0062, U+006C, U+006F, U+0062) +1. Append the string "blob" + (that is, the Unicode [=code point=] sequence U+0062, U+006C, U+006F, U+0062) nit: can drop 'Unicode', I don't think we need to call that out everywhere and it's in the definition of code point. > 1. Let |settings| be the [=current settings object=] 1. Let |origin| be |settings|'s [=environment settings object/origin=]. 1. Let |serialized| be the <a lt="ASCII serialization of an origin">ASCII serialization</a> of |origin|. 1. If |serialized| is "null", set it to an implementation-defined value. 1. Append |serialized| to |result|. -1. Append the "/" character (U+0024 SOLIDUS) to |result|. -1. Generate a UUID [[RFC4122]] as a Unicode string and append it to |result|. +1. Append U+0024 SOLIDUS (/) to |result|. +1. Generate a UUID [[!RFC4122]] as a Unicode string and append it to |result|. nit: "Unicode string" can just be "string" > -If a resource identified with a <a>Blob URL</a> is a {{File}} object, -user agents use that file's {{File/name}} attribute, -as if the [=/response=] had a <code>Content-Disposition</code> header -with the filename parameter set to the {{File}}'s {{File/name}} attribute [[!RFC6266]]. - -Note: A corollary to this is a non-normative implementation guideline: -that the "File Save As" user interface in user agents takes into account the {{File}}'s {{File/name}} attribute -if presenting a default name to save the file as. - -<h4 id="NetworkError"> -Network Errors</h4> - -Responses that do not succeed with a <a href="#TwoHundredOK">200 OK</a> -act as if a <a>network error</a> has occurred. -Network errors are used when: +Issue: This more or less matches chrome's behavior, nit: capitalize "Chrome" if this is going to land. > -This section provides sample exchanges between web applications and user agents using <a>Blob URLs</a>. -A [=/request=] can be triggered using HTML markup of the sort -<code class="lang-markup"><img src="blob:http://example.org:8080/550e8400-e29b-41d4-a716-446655440000"></code>. -These examples merely illustrate the [=/request=] and [=/response=]; -web developers are not likely to interact with all the headers, -but the {{XMLHttpRequest/getAllResponseHeaders()}} method of {{XMLHttpRequest}}, if used, -will show relevant [=/response=] headers. +1. [=Assert=]: |url|'s [=url/scheme=] is <code>"blob"</code>. +1. Let |entry| be the result of [=Blob URL/resolve|resolving=] |url|. +1. If |entry| is not undefined, return |entry|'s [=Blob URL Entry/environment=]'s [=environment settings object/origin=]. +1. Let |nested url| be the result of [=URL parser|parsing=] |url|'s [=url/path=][0]. What's the `[0]` ? Also, isn't url/path the UUID and url/host is the serialized origin? > <h3 id="creating-revoking"> Creating and Revoking a Blob URL</h3> <a>Blob URLs</a> are created and revoked using methods exposed on the {{URL}} object, -supported by global objects {{Window}} [[HTML]] and {{WorkerGlobalScope}} [[Web Workers]]. +supported by global objects {{Window}} and {{WorkerGlobalScope}}. Is this "supported by...." sentence fragment even necessary? And maybe "static methods" as used above? > - <code>window2</code> could be an <{iframe}> inside <code>window1</code>. - - <pre class="lang-javascript"> - myurl = window1.URL.createObjectURL(myblob); - window2.URL.revokeObjectURL(myurl); - </pre> - - Since <code>window1</code> and <code>window2</code> are in the <a>same origin</a> - and share the same <a>Blob URL Store</a>, - the <code>URL.{{revokeObjectURL()}}</code> call - ensures that subsequent dereferencing of <code>myurl</code> - results in a the user agent acting as if a <a>network error</a> has occurred. - </div> -</dl> +1. Let |url| be the result of [=adding an entry to the Blob URL Store=] for |blob|. +4. Return |url|. nit: `1.` > - Since <code>window1</code> and <code>window2</code> are in the <a>same origin</a> - and share the same <a>Blob URL Store</a>, - the <code>URL.{{revokeObjectURL()}}</code> call - ensures that subsequent dereferencing of <code>myurl</code> - results in a the user agent acting as if a <a>network error</a> has occurred. - </div> -</dl> +1. Let |url| be the result of [=adding an entry to the Blob URL Store=] for |blob|. +4. Return |url|. + +</div> + +<div algorithm="revokeObjectURL"> +The <dfn method for=URL id="dfn-revokeObjectURL">revokeObjectURL(|url|)</dfn> static method must run these steps: + +1. [=Remove an entry from the Blob URL Store=] for |url|. I'm assuming these steps are still being worked on? Looks like this is incomplete. (Redundant first/last steps, FIXME, etc) -- 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/FileAPI/pull/92#pullrequestreview-81029500
Received on Tuesday, 5 December 2017 00:29:09 UTC