- From: Eric Uhrhane via cvs-syncmail <cvsmail@w3.org>
- Date: Tue, 28 Sep 2010 21:48:53 +0000
- To: public-dap-commits@w3.org
Update of /sources/public/2009/dap/file-system
In directory hutz:/tmp/cvs-serv29500
Modified Files:
file-writer.html
Log Message:
Fixed abort sequence to remove a race condition. See "small tweak to
FileWriter's event sequences" on public-webapps.
Index: file-writer.html
===================================================================
RCS file: /sources/public/2009/dap/file-system/file-writer.html,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- file-writer.html 23 Sep 2010 22:10:25 -0000 1.19
+++ file-writer.html 28 Sep 2010 21:48:51 -0000 1.20
@@ -309,16 +309,17 @@
When the <code>abort</code> method is called, <a>user agents</a>
MUST run the steps below:<!-->TODO: refs<-->
<ol>
- <li>If <code>readyState</code> is <code>DONE</code>, throw a
- <code>FileException</code> with error code
- <code>INVALID_STATE_ERR</code> and terminate this overall series
- of steps.</li>
- <li>Set readyState to DONE.</li>
+ <li>If <code>readyState</code> is <code>DONE</code> or
+ <code>INIT</code>, throw a <code>FileException</code> with error
+ code <code>INVALID_STATE_ERR</code> and terminate this overall
+ series of steps.</li>
<li>Terminate any steps having to do with writing a file.</li>
- <li>Dispatch a progress event called error. Set the error
- attribute to a FileError object with the appropriate code (in this
- case, ABORT_ERR; see error conditions).</li>
+ <li>Set the error attribute to a FileError object with the
+ appropriate code (in this case, ABORT_ERR; see error
+ conditions).</li>
+ <li>Dispatch a progress event called error.</li>
<li>Dispatch a progress event called abort</li>
+ <li>Set readyState to <code>DONE</code>.</li>
<li>Dispatch a progress event called writeend</li>
<li>Stop dispatching any further progress events.</li>
</ol>
@@ -436,15 +437,15 @@
</p>
<ol>
<li>Set <code>readyState</code> to <code>WRITING</code>.</li>
- <li>If an error occurs during file write, set
- <code>readyState</code> to <code>DONE</code>.
- Proceed to the error steps below.
+ <li>If an error occurs during file write, proceed to the error steps
+ below.
<ol>
- <li>Dispatch a progress event called <code>error</code>. Set
- the <code>error</code> attribute; on getting the
- <code>error</code> attribute MUST be a
- <code>FileError</code> object with a valid error code that
- indicates the kind of file error that has occurred.</li>
+ <li>Set the <code>error</code> attribute; on getting the
+ <code>error</code> attribute MUST be a <code>FileError</code>
+ object with a valid error code that indicates the kind of file
+ error that has occurred.</li>
+ <li>Dispatch a progress event called <code>error</code>.</li>
+ <li>Set readyState to <code>DONE</code>.</li>
<li>Dispatch a progress event called <code>writeend</code>.</li>
<li>Terminate this overall set of steps.</li>
</ol>
@@ -452,12 +453,14 @@
<li>Queue a task to dispatch a progress event called
<code>writestart</code>.</li>
<li>Make progress notifications.</li>
- <li>When the data has been fully written, set
- <code>readyState</code> to <code>DONE</code>.
+ <li>When the data has been fully written:
+ <ol>
+ <li>Dispatch a progress event called <code>write</code></li>
+ <li>Set readyState to <code>DONE</code>.</li>
+ <li>Dispatch a progress event called <code>writeend</code></li>
+ <li>Terminate this overall set of steps.</li>
+ </ol>
</li>
- <li>Dispatch a progress event called <code>write</code></li>
- <li>Dispatch a progress event called <code>writeend</code></li>
- <li>Terminate this overall set of steps.</li>
</ol>
</section>
<section>
@@ -572,24 +575,22 @@
<code>INVALID_STATE_ERR</code> and terminate this overall series
of steps.</li>
<li>Set <code>readyState</code> to <code>WRITING</code>.</li>
- <li>If an error occurs during file write, set
- <code>readyState</code> to <code>DONE</code>.
- Proceed to the error steps below.
- <ol>
- <li>
- Dispatch a progress event called <code>error</code>. Set
- the <code>error</code> attribute; on getting the
- <code>error</code> attribute MUST be a
- <code>FileError</code> object with a valid error code that
- indicates the kind of file
- error that has occurred.</li>
- <li>Dispatch a progress event called
- <code>writeend</code></li>
- <li>On getting, the <code>length</code> and
- <code>position</code> attributes SHOULD indicate any
- fractional data successfully written to the file.</li>
- <li>Terminate this overall set of steps.</li>
- </ol>
+ <li>If an error occurs during file write, proceed to the error
+ steps below.
+ <ol>
+ <li>Set the <code>error</code> attribute; on getting the
+ <code>error</code> attribute MUST be a <code>FileError</code>
+ object with a valid error code that indicates the kind of file
+ error that has occurred.</li>
+ <li>Dispatch a progress event called <code>error</code>.</li>
+ <li>Set readyState to <code>DONE</code>.</li>
+ <li>Dispatch a progress event called
+ <code>writeend</code></li>
+ <li>On getting, the <code>length</code> and
+ <code>position</code> attributes SHOULD indicate any
+ fractional data successfully written to the file.</li>
+ <li>Terminate this overall set of steps.</li>
+ </ol>
</li>
<li>Queue a task to dispatch a progress event called
<code>writestart</code>.</li>
@@ -598,15 +599,18 @@
<code>position</code> attributes SHOULD indicate the progress
made in writing the file as of the last progress notification.
</li>
- <li>When the data has been fully written, set
- <code>readyState</code> to <code>DONE</code>. Upon successful
- completion, <code>position</code> and <code>length</code> MUST
- indicate an increase of <code>data.size</code> over their
- pre-write states, indicating the change to the underlying file.
- </li>
- <li>Dispatch a progress event called <code>write</code></li>
- <li>Dispatch a progress event called <code>writeend</code></li>
- <li>Terminate this overall set of steps.</li>
+ <li>Upon successful completion:
+ <ol>
+ <li><code>position</code> and <code>length</code> MUST
+ indicate an increase of <code>data.size</code> over their
+ pre-write states, indicating the change to the underlying
+ file.</li>
+ <li>Dispatch a progress event called <code>write</code></li>
+ <li>Set readyState to <code>DONE</code>.</li>
+ <li>Dispatch a progress event called
+ <code>writeend</code></li>
+ <li>Terminate this overall set of steps.</li>
+ </ol>
</ol>
</p>
<dl class='parameters'>
@@ -668,15 +672,15 @@
<code>INVALID_STATE_ERR</code> and terminate this overall series of
steps.</li>
<li>Set <code>readyState</code> to <code>WRITING</code>.</li>
- <li>If an error occurs during truncate, set
- <code>readyState</code> to <code>DONE</code>.
- Proceed to the error steps below.
+ <li>If an error occurs during truncate, proceed to the error steps
+ below.
<ol>
- <li>Dispatch a progress event called <code>error</code>. Set
- the <code>error</code> attribute; on getting the
- <code>error</code> attribute MUST be a
- <code>FileError</code> object with a valid error code that
- indicates the kind of file error that has occurred.</li>
+ <li>Set the <code>error</code> attribute; on getting the
+ <code>error</code> attribute MUST be a <code>FileError</code>
+ object with a valid error code that indicates the kind of file
+ error that has occurred.</li>
+ <li>Dispatch a progress event called <code>error</code>.</li>
+ <li>Set readyState to <code>DONE</code>.</li>
<li>Dispatch a progress event called
<code>writeend</code></li>
<li>On getting, the <code>length</code> and
@@ -687,9 +691,7 @@
</li>
<li>Queue a task to dispatch a progress event called
<code>writestart</code>.</li>
- <li>When the file has been truncated, set
- <code>readyState</code> to <code>DONE</code>.
- <br />Upon successful completion:
+ <li>Upon successful completion:
<ul>
<li><code>length</code> MUST be equal to <code>size</code>.</li>
<li><code>position</code> MUST be the lesser of
@@ -698,11 +700,12 @@
<li><code>size</code>.</li>
</ul>
</li>
+ <li>Dispatch a progress event called <code>write</code></li>
+ <li>Set readyState to <code>DONE</code>.</li>
+ <li>Dispatch a progress event called <code>writeend</code></li>
+ <li>Terminate this overall set of steps.</li>
</ul>
</li>
- <li>Dispatch a progress event called <code>write</code></li>
- <li>Dispatch a progress event called <code>writeend</code></li>
- <li>Terminate this overall set of steps.</li>
</ol>
</p>
<dl class='parameters'>
Received on Tuesday, 28 September 2010 21:48:56 UTC