Re: [XHR] chunked

2012-05-24 Thread Anne van Kesteren
On Thu, May 24, 2012 at 2:54 AM, Jonas Sicking jo...@sicking.cc wrote:
 No change came out of this thread. I think we established that there
 is a need for chunked-arraybuffer. This thread contained some
 controversy about whether chunked-text is needed, but in the end the
 controversy didn't actually seem relevant to the question at hand.

 Is there a reason not to add chunked-text and chunked-arraybuffer
 to the spec right now?

1. Why not just have
http://html5labs.interoperabilitybridges.com/streamsapi/ to address
this case? 2. Is anyone else planning on implementing these?


-- 
Anne — Opera Software
http://annevankesteren.nl/
http://www.opera.com/



Push API draft uploaded

2012-05-24 Thread SULLIVAN, BRYAN L
Thanks to the inestimable help of the W3C staff I am now plugged into the 
mercurial mainline and have uploaded the first stab at the Push API
http://dvcs.w3.org/hg/push/raw-file/default/index.html

I incorporated Mozilla's client API ideas in 
https://wiki.mozilla.org/Services/Notifications/Push/API as the PushManager 
interface, and also in the PushService interface with some additions to 
support a more explicit event model for received message delivery, derived from 
Server-Sent Events.

A lot is still left unsaid, and I will work on examples.

I also have not addressed the server API aspect that Mozilla mentioned in their 
proposal. Like a lot that is left unsaid in their client API proposal (how does 
the browser determine what that magic server URL is...?), the server API is 
likely related to the specific Push service that is bound to the API. I am 
considering the use of Web Intents to discover and select the Push Service 
provider that the user wants apps to use, assuming that we can leave the 
backend details to the intent provider. I'm not yet sure how the pieces will 
fit together, how much needs to be defined, and how my earlier proposal about 
specific event source selection and filtering fits into this, but it's a start.

Thanks,
Bryan Sullivan





Re: Push API draft uploaded

2012-05-24 Thread Ms2ger

On 05/24/2012 09:14 AM, SULLIVAN, BRYAN L wrote:

Thanks to the inestimable help of the W3C staff I am now plugged into
the mercurial mainline and have uploaded the first stab at the Push
API

 http://dvcs.w3.org/hg/push/raw-file/default/index.html

A couple of notes on the WebIDL:

* PushManager has
  |PushService requestRemotePermission ([Optional] DOMString url);|,
  should be ... (optional DOMString url), though the spec doesn't
  appear to define what happens when url is omitted; same for
  checkRemotePermission.
* There does not appear to be a need to make PushManager and PushService
  use [NoInterfaceObject], so please remove that.
* PushService.readyState is a DOMString, but the spec defines it to
  return the unsigned short constants CONNECTING/OPEN/CLOSED. Please
  get rid of the constants.

The requestUrl attribute must return the absolute URL where the webapp 
server can send Push service messages to this webapp. should probably 
refer to |serviceUrl|, not |requestUrl|.


A reference to DOM4 for the DOMError interface should probably be added. 
Also, the resolve a url cross-reference is broken.


HTH
Ms2ger



Re: Howto spec

2012-05-24 Thread Robin Berjon
On May 23, 2012, at 20:40 , Anne van Kesteren wrote:
 how does ReSpec.js use or promote the discouraged particulars?
 
 Most specifications (if not all) using ReSpec.js have this problem. I
 believe that is because it is the default setup.

Yup, it's just the default setup. As I've said before, I'm certainly very open 
to adding alternative ways of doing it. Anyone interested in working on this 
can just ping me.

-- 
Robin Berjon - http://berjon.com/ - @robinberjon




Re: Howto spec

2012-05-24 Thread Robin Berjon
On May 23, 2012, at 20:30 , Anne van Kesteren wrote:
 On Wed, May 23, 2012 at 5:55 PM, Dimitri Glazkov dglaz...@chromium.org 
 wrote:
 Should I be concerned about what seems to be a lively competition
 between ReSpec and Anolis. Do we need this tussle? Can we not just
 decide which tool to use?
 
 It's a tradeoff:
 
 ReSpec.js pro:
 
 * No setup costs
 
 ReSpec.js con:
 
 * Loads slower because of script. You get a flash of unstyled content.
 User experience suffers.

Right. ReSpec is optimised for editors more than for users, at the cost of all 
the processing taking place at runtime. The performance is made worse by the 
fact that a 300K biblio database (yay!) is loaded over the wire. The FOUC is 
much worsened by the fact that an older browser (I forget which, maybe FX3?) 
had abysmal performance when many text nodes were being manipulated, the fix 
for which was to set display: none on body before running and reverting it 
afterwards (re-yay!). Both of those issues are going away very soon though.

If you want smoother UX you can generate a static output. This is currently 
harder than it should be; if there's interest I can hack something out.

Overall there's no competition though, I doubt that there can be one tool for 
everyone's tastes. I also think that it's good to have a Web-based tool and a 
more traditional Python one, it helps us keep in mind what we need to improve 
with the Web.

-- 
Robin Berjon - http://berjon.com/ - @robinberjon




Re: Howto spec

2012-05-24 Thread Robin Berjon
On May 23, 2012, at 14:45 , Anne van Kesteren wrote:
 I have made some updates to the howto spec wiki page outlining how
 you should go about writing a specification, with some emphasis on
 specifications for APIs.
 
 http://wiki.whatwg.org/wiki/Howto_spec
 
 In particular the Patterns and Legacy DOM-style sections are
 probably of interest. I would love to have feedback to see what else
 people would like to see explained or how what is explained thus far
 can be done better.

Thanks Anne, this is good stuff. I wonder if maybe there would be value in 
merging some of that with http://scriptlib-cg.github.com/api-design-cookbook/. 
It's just a rough draft now but I'm slated to update it a fair bit over the 
next three months or so.

It's currently under the scriptlib's repo, but since that doesn't seem to be 
taking off we can put it elsewhere.

-- 
Robin Berjon - http://berjon.com/ - @robinberjon




URL spec parameter-related methods use parameter in a way inconsistent with the URI RFC

2012-05-24 Thread Maciej Stachowiak

The current draft URL spec has a number of Parameter-related methods 
(getParameterNames, getParameterValues, hasParameter, getParameter, 
setParameter, addParameter, removeParameter, clearParameters)[1]. Apparently 
these methods refer to key-value pairs in the query part of the URL as 
parameters. However, the term parameter is used by the URI RFC[2] to refer 
to something else, a semicolon-delimited part of a path (which I think is 
nearly obsolete in modern use; I am not sure what it is for). I understand that 
for legacy reasons, much of the URL interface cannot be consistent with 
RFC-official terminology. But it seems like a bad idea to use the same term for 
a different piece of the URL, worse than using the same term for a different 
part. At least call it something like query parameters to disambiguate.

Another point of feedback on the parameter-related methods: they seem to form a 
dictionary-style interface, and it seems inelegant to have all these different 
methods giving a dictionary-style interface to something that is a piece of the 
URL, rather than something that is the URL.

One possible way to solve both these problems:

interface URL {
StringMultiMap queryParameters;
}

interface StringMultiMap {
 sequenceDOMString keys;
 sequenceDOMString getAll(DOMString name)
 boolean contains(DOMString name)
 DOMString? get(DOMString name);
 void set(DOMString name, DOMString value);
 void add(DOMString name, DOMString value);
 void remove(DOMString name);
 void clear();
}

The StringMultiMap interface could be reusable for other, similar key-value 
list contexts.

Or else use an appropriate dictionary type from ES if one is ever provided.

Regards,
Maciej


[1] 
http://dvcs.w3.org/hg/url/raw-file/tip/Overview.html#dom-url-getparameternames
[2] http://www.ietf.org/rfc/rfc2396.txt



Re: URL spec parameter-related methods use parameter in a way inconsistent with the URI RFC

2012-05-24 Thread Julian Reschke

On 2012-05-24 11:29, Maciej Stachowiak wrote:


The current draft URL spec has a number of Parameter-related methods (getParameterNames, getParameterValues, 
hasParameter, getParameter, setParameter, addParameter, removeParameter, clearParameters)[1]. Apparently 
these methods refer to key-value pairs in the query part of the URL as parameters. However, the 
term parameter is used by the URI RFC[2] to refer to something else, a semicolon-delimited part 
of a path (which I think is nearly obsolete in modern use; I am not sure what it is for). I understand that 
for legacy reasons, much of the URL interface cannot be consistent with RFC-official terminology. But it 
seems like a bad idea to use the same term for a different piece of the URL, worse than using the same term 
for a different part. At least call it something like query parameters to disambiguate.


The URI RFC actually is RFC 3986. Otherwise, agreed.


...


Best regards, Julian



Re: Howto spec

2012-05-24 Thread Charles McCathieNevile
There is a list called spec-p...@w3.org which is about things to do with  
making specs. I.e. for editors, in particular. I forwarded some stuff from  
this thread there - there are other preprocessing systems around,  
including XML toolsets. I think this stuff used to be documented  
somewhere, and it might be worth trying to find that and make it look like  
it comes from the 21st century...


cheers

On Wed, 23 May 2012 14:45:05 +0200, Anne van Kesteren ann...@annevk.nl  
wrote:



Hi,

I have made some updates to the howto spec wiki page outlining how
you should go about writing a specification, with some emphasis on
specifications for APIs.

http://wiki.whatwg.org/wiki/Howto_spec

In particular the Patterns and Legacy DOM-style sections are
probably of interest. I would love to have feedback to see what else
people would like to see explained or how what is explained thus far
can be done better.

Thanks,





--
Charles 'chaals' McCathieNevile  Opera Software, Standards Group
je parle français -- hablo español -- jeg kan noen norsk
http://my.opera.com/chaals   Try Opera: http://www.opera.com



Re: URL spec parameter-related methods use parameter in a way inconsistent with the URI RFC

2012-05-24 Thread Charles McCathieNevile

+1 (top post FTW)

cheers

On Thu, 24 May 2012 11:29:24 +0200, Maciej Stachowiak m...@apple.com  
wrote:


The current draft URL spec has a number of Parameter-related methods  
(getParameterNames, getParameterValues, hasParameter, getParameter,  
setParameter, addParameter, removeParameter, clearParameters)[1].  
Apparently these methods refer to key-value pairs in the query part of  
the URL as parameters. However, the term parameter is used by the  
URI RFC[2] to refer to something else, a semicolon-delimited part of a  
path (which I think is nearly obsolete in modern use; I am not sure what  
it is for). I understand that for legacy reasons, much of the URL  
interface cannot be consistent with RFC-official terminology. But it  
seems like a bad idea to use the same term for a different piece of the  
URL, worse than using the same term for a different part. At least call  
it something like query parameters to disambiguate.


Another point of feedback on the parameter-related methods: they seem to  
form a dictionary-style interface, and it seems inelegant to have all  
these different methods giving a dictionary-style interface to something  
that is a piece of the URL, rather than something that is the URL.


One possible way to solve both these problems:

interface URL {
StringMultiMap queryParameters;
}

interface StringMultiMap {
 sequenceDOMString keys;
 sequenceDOMString getAll(DOMString name)
 boolean contains(DOMString name)
 DOMString? get(DOMString name);
 void set(DOMString name, DOMString value);
 void add(DOMString name, DOMString value);
 void remove(DOMString name);
 void clear();
}

The StringMultiMap interface could be reusable for other, similar  
key-value list contexts.


Or else use an appropriate dictionary type from ES if one is ever  
provided.


Regards,
Maciej


[1]  
http://dvcs.w3.org/hg/url/raw-file/tip/Overview.html#dom-url-getparameternames

[2] http://www.ietf.org/rfc/rfc2396.txt



--
Charles 'chaals' McCathieNevile  Opera Software, Standards Group
je parle français -- hablo español -- jeg kan noen norsk
http://my.opera.com/chaals   Try Opera: http://www.opera.com



RE: Push API draft uploaded

2012-05-24 Thread SULLIVAN, BRYAN L
Thanks for the comments. I updated the spec:
- define what happens when url is omitted
- remove [NoInterfaceObject]
- define readyState as a unsigned short (that was what was meant in the first 
place)
- fix cut/paste errors

I still have to find the source of resolve a url as that's a function I 
borrowed from EventSource.

Latest version is at http://dvcs.w3.org/hg/push/raw-file/default/index.htm 

Thanks,
Bryan Sullivan

-Original Message-
From: Ms2ger [mailto:ms2...@gmail.com] 
Sent: Thursday, May 24, 2012 12:33 AM
To: SULLIVAN, BRYAN L
Cc: public-webapps
Subject: Re: Push API draft uploaded

On 05/24/2012 09:14 AM, SULLIVAN, BRYAN L wrote:
 Thanks to the inestimable help of the W3C staff I am now plugged into
 the mercurial mainline and have uploaded the first stab at the Push
 API
  http://dvcs.w3.org/hg/push/raw-file/default/index.html

A couple of notes on the WebIDL:

* PushManager has
   |PushService requestRemotePermission ([Optional] DOMString url);|,
   should be ... (optional DOMString url), though the spec doesn't
   appear to define what happens when url is omitted; same for
   checkRemotePermission.
* There does not appear to be a need to make PushManager and PushService
   use [NoInterfaceObject], so please remove that.
* PushService.readyState is a DOMString, but the spec defines it to
   return the unsigned short constants CONNECTING/OPEN/CLOSED. Please
   get rid of the constants.

The requestUrl attribute must return the absolute URL where the webapp 
server can send Push service messages to this webapp. should probably 
refer to |serviceUrl|, not |requestUrl|.

A reference to DOM4 for the DOMError interface should probably be added. 
Also, the resolve a url cross-reference is broken.

HTH
Ms2ger


RE: Push API draft uploaded

2012-05-24 Thread SULLIVAN, BRYAN L
Sorry, cut  paste error: the spec is at: 
http://dvcs.w3.org/hg/push/raw-file/default/index.html 

Thanks,
Bryan Sullivan 

-Original Message-
From: SULLIVAN, BRYAN L 
Sent: Thursday, May 24, 2012 6:02 AM
To: 'Ms2ger'
Cc: public-webapps
Subject: RE: Push API draft uploaded

Thanks for the comments. I updated the spec:
- define what happens when url is omitted
- remove [NoInterfaceObject]
- define readyState as a unsigned short (that was what was meant in the first 
place)
- fix cut/paste errors

I still have to find the source of resolve a url as that's a function I 
borrowed from EventSource.

Latest version is at http://dvcs.w3.org/hg/push/raw-file/default/index.htm 

Thanks,
Bryan Sullivan

-Original Message-
From: Ms2ger [mailto:ms2...@gmail.com] 
Sent: Thursday, May 24, 2012 12:33 AM
To: SULLIVAN, BRYAN L
Cc: public-webapps
Subject: Re: Push API draft uploaded

On 05/24/2012 09:14 AM, SULLIVAN, BRYAN L wrote:
 Thanks to the inestimable help of the W3C staff I am now plugged into
 the mercurial mainline and have uploaded the first stab at the Push
 API
  http://dvcs.w3.org/hg/push/raw-file/default/index.html

A couple of notes on the WebIDL:

* PushManager has
   |PushService requestRemotePermission ([Optional] DOMString url);|,
   should be ... (optional DOMString url), though the spec doesn't
   appear to define what happens when url is omitted; same for
   checkRemotePermission.
* There does not appear to be a need to make PushManager and PushService
   use [NoInterfaceObject], so please remove that.
* PushService.readyState is a DOMString, but the spec defines it to
   return the unsigned short constants CONNECTING/OPEN/CLOSED. Please
   get rid of the constants.

The requestUrl attribute must return the absolute URL where the webapp 
server can send Push service messages to this webapp. should probably 
refer to |serviceUrl|, not |requestUrl|.

A reference to DOM4 for the DOMError interface should probably be added. 
Also, the resolve a url cross-reference is broken.

HTH
Ms2ger


Re: Push API draft uploaded

2012-05-24 Thread Ms2ger

Hi Brian,

On 05/24/2012 03:02 PM, SULLIVAN, BRYAN L wrote:

Thanks for the comments. I updated the spec:
- define what happens when url is omitted
- remove [NoInterfaceObject]
- define readyState as a unsigned short (that was what was meant in the first 
place)
- fix cut/paste errors

I still have to find the source of resolve a url as that's a function I 
borrowed from EventSource.

Latest version is at http://dvcs.w3.org/hg/push/raw-file/default/index.html


Thanks for the update. resolve a url is defined in HTML; see 
http://www.whatwg.org/html/#resolving-urls.


As for a numeric readyState, please have a look at the discussion at 
http://lists.w3.org/Archives/Public/public-script-coord/2012JanMar/0166.html.


Finally, it appears that you removed [NoInterfaceObject] from 
NavigatorPush (where I believe it was correct), rather than from 
PushService.


HTH
Ms2ger



Non-persistent in-memory storage accessible by same domain tabs

2012-05-24 Thread Joran Greef
Web applications need a way to communicate between two same domain
tabs without polling LocalStorage and without hitting the disk.

It would be useful to have an in-memory get/set/compare_and_set hash
table exposed to scripts running same domain tabs, that is discarded
by the browser when those tabs are closed.

Use cases:

1. Coordinate replication between tabs for an offline app, i.e. one
tab takes responsibility for syncing a user's data to and from
IndexedDB.
2. Sign out from one tab triggers sign out from all other tabs.
3. If something like LevelDB were exposed directly to JS, one could
implement MVCC on top using the shared hash.
4. Library authors would be able to implement their own cross-tab postMessage.

It's difficult to implement these use cases with LocalStorage, without
a coarse resolution, and risky at that, due to the lack of compare and
set primitive in LocalStorage.



Re: Non-persistent in-memory storage accessible by same domain tabs

2012-05-24 Thread Glenn Maynard
On Thu, May 24, 2012 at 8:42 AM, Joran Greef jo...@ronomon.com wrote:

 Web applications need a way to communicate between two same domain
 tabs without polling LocalStorage and without hitting the disk.


I think shared Workers can handle most of this.

-- 
Glenn Maynard


RE: Push API draft uploaded

2012-05-24 Thread SULLIVAN, BRYAN L
OK, I corrected the [NoInterfaceObject] (I hope), and referenced HTML5 for 
resolving a URL.

The numeric readyState was borrowed from EventSource. I will look at the 
thread, but I think this is something that I will just align with the consensus 
in the group once determined. I don't have a strong opinion either way.

Latest version is at http://dvcs.w3.org/hg/push/raw-file/default/index.html 

Thanks,
Bryan Sullivan 

-Original Message-
From: Ms2ger [mailto:ms2...@gmail.com] 
Sent: Thursday, May 24, 2012 6:37 AM
To: SULLIVAN, BRYAN L
Cc: public-webapps
Subject: Re: Push API draft uploaded

Hi Brian,

On 05/24/2012 03:02 PM, SULLIVAN, BRYAN L wrote:
 Thanks for the comments. I updated the spec:
 - define what happens when url is omitted
 - remove [NoInterfaceObject]
 - define readyState as a unsigned short (that was what was meant in the first 
 place)
 - fix cut/paste errors

 I still have to find the source of resolve a url as that's a function I 
 borrowed from EventSource.

 Latest version is at http://dvcs.w3.org/hg/push/raw-file/default/index.html

Thanks for the update. resolve a url is defined in HTML; see 
http://www.whatwg.org/html/#resolving-urls.

As for a numeric readyState, please have a look at the discussion at 
http://lists.w3.org/Archives/Public/public-script-coord/2012JanMar/0166.html.

Finally, it appears that you removed [NoInterfaceObject] from 
NavigatorPush (where I believe it was correct), rather than from 
PushService.

HTH
Ms2ger


Re: Push API draft uploaded

2012-05-24 Thread Charles Pritchard

On 5/24/2012 7:08 AM, SULLIVAN, BRYAN L wrote:

OK, I corrected the [NoInterfaceObject] (I hope), and referenced HTML5 for 
resolving a URL.

The numeric readyState was borrowed from EventSource. I will look at the 
thread, but I think this is something that I will just align with the consensus 
in the group once determined. I don't have a strong opinion either way.

Latest version is athttp://dvcs.w3.org/hg/push/raw-file/default/index.html  


Does the following mean that http/https are interpreted as EventSource 
and ws/wss as WebSockets?

Does checkRemotePermission trigger CORS checks for those protocols?

If the url parameter is present and the user agent recognizes the url 
value as a particular type of Push service that it supports, the user 
agent must activate the service.


My read on that is yes and yes, but I wanted to double-check.

-Charles



Re: Push API draft uploaded

2012-05-24 Thread SULLIVAN, BRYAN L
Re a particular type of Push service that it supports this is intended to be 
generic so that new services (perhaps identified by unique URI schemes) can be 
covered under this.

That being said, WebSockets schemes clearly would imply that protocol, but http 
schemes could be more flexible. One of the goals is to define how the 
serviceUrl is conveyed to the user agent and Webapp. In the process of 
determining that URL, there could be other useful info that the server returns, 
eg the applicable bearer bindings or info that will help ensure events can be 
delivered to the correct Webapp (e.g. SMS source address, message 
fields/headers). If its possible to define a lightweight and generic/extensible 
Push service registration protocol, this would be a good place to invoke it. We 
defined such a protocol for OMA Push, and some of those ideas might be useful 
here. This is an area for further study.

If the Push server connection is setup to another domain then CORS would apply. 
But the checkRemotePermission method (at least as I understood it from the 
Mozilla proposal) would only test if there was a prior permission by the user, 
and would not need to invoke any network transactions to do so (though for some 
implementations this might be a feature).

I will try to develop these ideas in the draft (or at least outline the intent 
to), but I did not want to put too much into it at this time... As far as 
possible I am leaning to the simple (but clearly not as simple as the Mozilla 
proposal). Service lifecycle management, of which registration is a facet, can 
hopefully be layered above the API for the most part.

Thanks,
Bryan Sullivan

On May 24, 2012, at 9:33 AM, Charles Pritchard ch...@jumis.com wrote:

 On 5/24/2012 7:08 AM, SULLIVAN, BRYAN L wrote:
 OK, I corrected the [NoInterfaceObject] (I hope), and referenced HTML5 for 
 resolving a URL.
 
 The numeric readyState was borrowed from EventSource. I will look at the 
 thread, but I think this is something that I will just align with the 
 consensus in the group once determined. I don't have a strong opinion either 
 way.
 
 Latest version is athttp://dvcs.w3.org/hg/push/raw-file/default/index.html  
 
 Does the following mean that http/https are interpreted as EventSource and 
 ws/wss as WebSockets?
 Does checkRemotePermission trigger CORS checks for those protocols?
 
 If the url parameter is present and the user agent recognizes the url value 
 as a particular type of Push service that it supports, the user agent must 
 activate the service.
 
 My read on that is yes and yes, but I wanted to double-check.
 
 -Charles



RfC: LCWD of WebSocket API; deadline June 14

2012-05-24 Thread Arthur Barstow
This is a Request for Comments re the 24-May-2012 LCWD version of the 
WebSocket API:


http://www.w3.org/TR/2012/WD-websockets-20120524/

The comment deadline is June 14 and all comments should be sent to the 
public-webapps@w3.org list. The Bugzilla component for the API is [Bugz].


I Cc'ed the hybi list as an FYI and comments from that list's 
subscribers are of course welcome. The Bugzilla component for the API is 
[Bugz].


-Thanks, AB

[Bugz] 
https://www.w3.org/Bugs/Public/buglist.cgi?product=WebAppsWGcomponent=WebSocket%20API%20%28editor%3A%20Ian%20Hickson%29resolution=---









RfC: LCWD of Indexed Database; deadline June 21

2012-05-24 Thread Arthur Barstow
This is a Request for Comments re the 24-May-2012 LCWD version of 
Indexed Database:


http://www.w3.org/TR/2012/WD-IndexedDB-20120524/

The comment deadline is June 21 and all comments should be sent to the 
public-webapps@w3.org list.


-Thanks, AB





http://www.w3.org/TR/2012/WD-url-20120524

2012-05-24 Thread Julian Reschke

Hi there,

here's some early feedback.

A control character is a character whose value is less than or equal to 
U+0020 ( ).


This is really surprising; it doesn't match Unicode 
(http://www.unicode.org/charts/PDF/U.pdf) nor IETF ABNF (RFC 5234).


I think it would be better to exclude U+0020, in particular as the term 
is just only once.


A more general concern is that the spec defines various URI-related 
operations in terms of algorithms, and doesn't mention whether those 
algorithms are supposed to return the same results as those defined in 
RFC 3986 or not.


If they are not, it would be totally awesome if there was an explanation 
about what these difference are. Lacking that, this is really hard to 
review.


Best regards, Julian



Re: RfC: LCWD of WebSocket API; deadline June 14

2012-05-24 Thread Julian Reschke

On 2012-05-24 19:20, Arthur Barstow wrote:

This is a Request for Comments re the 24-May-2012 LCWD version of the
WebSocket API:

http://www.w3.org/TR/2012/WD-websockets-20120524/

The comment deadline is June 14 and all comments should be sent to the
public-webapps@w3.org list. The Bugzilla component for the API is [Bugz].
...


I note that many keywords that reference parts of other specs are not 
hyperlinked, so it's extremely hard for a reader to understand what they 
are supposed to mean (phrasing it politely).


For instance, in Section 7:

If the url string is not an absolute URL, then fail this algorithm.

absolute URL is not defined anywhere in this document.

Resolve the url string, with the URL character encoding set to UTF-8. 
[RFC3629]


Resolve is not defined anywhere in this document.

etc.

Best regards, Julian



Re: [File API] File behavior under modification

2012-05-24 Thread Kinuko Yasuda
On Thu, May 24, 2012 at 8:27 AM, Jonas Sicking jo...@sicking.cc wrote:

 On Mon, May 21, 2012 at 4:05 PM, Eric U er...@google.com wrote:

 According to the latest editor's draft [1], a File object must always
 return an accurate lastModifiedDate if at all possible.
 On getting, if user agents can make this information available, this
 MUST return a new Date[HTML] object initialized to the last modified
 date of the file; otherwise, this MUST return null.

 However, if the underlying file has been modified since the creation
 of the File, reads processed on the File must throw exceptions or fire
 error events.
 ...if the file has been modified on disk since the File object
 reference is created, user agents MUST throw a NotReadableError...

 These seem somewhat contradictory...you can always look at the
 modification time and see that it's changed, but if you try to read it
 after a change, it blows up.
 The non-normative text about security concerns makes me think that
 perhaps both types of operations should fail if the file has changed
 [... guarding against modifications of files on disk after a
 selection has taken place].  That may not be necessary, but if it's
 not, I think we should call it out in non-normative text that explains
 why you can read the mod time and not the data.

 This came up in https://bugs.webkit.org/show_bug.cgi?id=86811; I
 believe WebKit is currently noncompliant with this part of the spec,
 and we were debating the correct behavior.  Currently WebKit delays
 grabbing the modification time of the file until it's been referenced
 by a read or slice(), so it won't notice modifications that happen
 between selection and read.  That was done because the slice creates a
 File object reference, but in my reading creating the File referring
 to the file should be the time of the snapshot, not creating a Blob
 referring to a File.

 What's the correct behavior?


 In Gecko we currently lazily in some cases get the file size and the
 lastModificationDate (which we just implemented the other day). However
 getting that lazily means that we sometimes have to do synchronous IO which
 is something we want to avoid. Hence we're working towards always getting
 the file size and last modification date when the File object is
 instantiated and would never change after that.

 I would imagine other UAs would want to avoid such synchronous IO too?


Changing the behavior of .lastModificationDate and .size might affect
existing Web applications, but I like this approach.
It makes things clearer, UAs can avoid synchronous IO (yes, we want to
avoid it) and File becomes a purely constant snapshot. It sounds saner to
me (especially now that we have an alternative live file interface, i.e.
FileEntry).

We absolutely should not have an API which forces implementations to do
 synchronous IO, hence I don't think we can require that
 lastModificationDate should stay up-to-date, or that reading from it should
 throw if the file has changed on disk. The only operations that we can make
 fail are asynchronous ones, which means that we can only make file-reading
 fail.


The wording in the spec is unfortunate since it says that reading should
 throw. Instead we should say that reading should fail, and then leave it
 up to the various APIs to define what happens when reading fails.

 / Jonas




Re: Implied Context Parsing (DocumentFragment.innerHTML, or similar) proposal details to be sorted out

2012-05-24 Thread Rafael Weinstein
This seems sensible. I've updated the WebKit patch to do exactly this:

https://bugs.webkit.org/show_bug.cgi?id=84646

It appears that the details of the proposal are now sorted out. I'll
start a new thread describing the full API  semantics.

On Fri, May 18, 2012 at 8:29 PM, Ryosuke Niwa rn...@webkit.org wrote:
 Not that I want to start another bike-shedding, there is one clear
 distinction between innerHTML and createDocumentFragment, which is that
 innerHTML sets already-started flag on parsed script elements
 but createDocumentFragment does not (or rather it unsets it after the
 fragment parsing algorithm has ran).
 See http://html5.org/specs/dom-parsing.html#dom-range-createcontextualfragment

 There appears to be a consensus to use document.parse (which is fine with
 me), so I would like to double-check which behavior we're picking. IMO, the
 only sane choice is to unset the already-started flag since doing otherwise
 implies script elements parsed by document.parse won't be executed when
 inserted into a document.

 While we can change the behavior for template elements, I would rather have
 the same behavior between all 3 APIs (createDocumentFragment, parse, and
 template element) and let innerHTML be the outlier for legacy reasons.

 (Note: I intend to fix the bug in WebKit that already-started flag isn't
 unmarked in createDocumentFragment).

 - Ryosuke