Re: how to organize the DOM specs [Was: CfC: publish new WD of DOM Core]

2011-08-22 Thread James Graham

On 08/22/2011 11:22 AM, Jonas Sicking wrote:

http://www.whatwg.org/specs/web-apps/current-work/complete/

I *always* used the much smaller document that used to be available here:

www.whatwg.org/specs/web-workers/current-work/


I don't really understand your point here. If you used the smaller 
document presumably you could just have easily have read the relevant 
chapter from the larger document.



When implementing a spec, the first thing I'd like to do is to read
the whole spec front to back. This in order to get a sense for the
various concepts involved which affects the implementation strategy.
It is also important as it's required to review the specification.
With a spec the size of, for example, the HTML5 spec, this is
substantially more difficult. Not only does it take significantly
longer to read the full HTML5 spec if all I want to implement is the
pushState feature. It's also impossible to hold the fully spec in
memory, even at a high level.


Why would you read the whole spec to implement features contained in a 
single subsection? Alternatively, why wouldn't you read the whole HTML5 
spec to implement web workers since there are normative dependences? It 
seems very arbitrary to base your choice of what is enough background 
information on someone else's choice of multiple files vs multiple 
sections in a single file.



Small specs are absolutely more easily implemented and reviewed.


I think this is an illusion.

Self-contained features are more easily implemented and reviewed. There 
is no reason that a relatively self-contained feature can't be a section 
of a larger document.


Small specs encourage people - including the spec editors - to perceive 
that features are more self-contained than they really are, leading to 
the problem of important detail dropping into the gaps between the specs.



Additionally, having releases of a spec makes it possible to know what
browser vendors and other significant players agree on. A ever
changing slowly evolving spec doesn't say what browser vendors agree
is good as opposed to what the editor happened to have put in since
the various stake holders took a look at it.


What browser vendors agree on is entirely unimportant to authors. What 
they care about is what actually ships. Once things are shipping browser 
vendors typically don't have much leeway to change things even when they 
all agree that it would be a nice idea.


We should fix the authors need to know what is stable problem by 
understanding it is actually an authors need to know what is shipping 
problem and implementing something like caniuse.com directly in the 
spec, with links to the relevant parts of the testsuite where appropriate.




[Bug 13844] Does web work add complex to web?

2011-08-22 Thread bugzilla
http://www.w3.org/Bugs/Public/show_bug.cgi?id=13844

Tab Atkins Jr. jackalm...@gmail.com changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||jackalm...@gmail.com
 Resolution||INVALID

--- Comment #1 from Tab Atkins Jr. jackalm...@gmail.com 2011-08-22 14:37:50 
UTC ---
I'm sorry, but I can't decipher this as English.

-- 
Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are on the CC list for the bug.



Re: [XHR2] Blobs, names and FormData

2011-08-22 Thread Michael Nordman
A few of us on the chrome team just discussed this. We see this as a
deficiency in the FormData interface and intend to address it by providing a
variant of FormData.append(...) that allows the caller to provide a
'filename' when appending a blob. We don't intend to implement
BlobBuilder.getFile().

Anne, would you be willing to massage the XHR2 spec to allow for the
additional param in the case of a blob?

On Mon, Jul 18, 2011 at 3:00 PM, Jonas Sicking jo...@sicking.cc wrote:

 On Mon, Jul 18, 2011 at 2:52 PM, Charles Pritchard ch...@jumis.com
 wrote:
  On 7/18/2011 2:42 PM, Jonas Sicking wrote:
 
If there is an API that replies on File to
work correctly we think we should fix it to work with Blob. For
   example, FileReader is
really BlobReader and works fine with Blobs. To me, getFile() should
   be unnecessary and
the best fix for FormData is to just modify append for this
 situation.
 
  While File and Blob are indeed very similar, they are also not the
  same thing. I think being able to create files is an easy addition for
  implementations, while it means not restricting getting Files from the
  users file system. So if you have code that expects to read a File
  from IndexedDB, the page can either populate that from the users
  filesystem, or by generating the data manually and using
  BlobBuilder.getFile.
 
  I'm very interested in this use case; I've been told that there may be
  issues
  with IndexedDB transaction constraints and FileReader/writer.
 
  Afaik, filewriter doesn't apply to blobs in this case. I don't know the
  consequences of
  callbacks to reader functions in the event loop, and whether that would
 end
  up blocking
  idb events. I'd imagine the blob is simply reset, and the stale reference
  remains until it can
  be cleaned up.

 Note that File objects are immutable just like Blobs are, so none of
 this applies here.

 The issues that you're talking about come up once we start talking
 about FileEntries, but that's an entirely different beast which are
 unrelated to this thread. No-one has suggested being able to create a
 FileEntry using BlobBuilder, nor that FileEntries are required to
 submit named content using FormData.

 Hope that helps.

 / Jonas




Re: DOM Mutation Events Replacement: Findings from implementing net-effect projections

2011-08-22 Thread Ryosuke Niwa
On Wed, Aug 17, 2011 at 3:17 AM, Olli Pettay olli.pet...@helsinki.fiwrote:

 On 08/17/2011 04:54 AM, Rafael Weinstein wrote:

 TL;DR;

 1) ObserveSubtree semantics doesn't provide a robust mechanism for
 observing a tree/fragment, and if we don't provide something more
 complete, libraries will likely register observers at every node in
 the document.


 ModificationBatch approach should provide as much information as
 current mutation events.


No, the problem is that the list of mutations is given asynchronously in
some cases.

Say you have the following DOM tree:
body
div
span class=special
#text('hello')

and div is removed.  At this point, the list of mutations we have is:
(ChildlistChanged, body, div)
where div has the subtree:
span class=special
#text('hello')

If observers (e.g. of widget library) wanted to detect whether any span with
the special classname has been removed from the document, it can do so
when it receives this list of mutations in this case.

But now suppose that another observer of this mutation list decides to
remove span from div's child list before my observer sees the list of
mutations.  Oops!  I don't have any idea whether span was removed or not
because all I get to see is (ChildlistChanged, body, div) and div doesn't
have any children.

Sure, this issue is prevalent in the existing mutation events but it's a
good use case to address.  In fact, providing a way to work-around this
issue (by providing means to watch all nodes with the same owner document)
might provide a strong incentive for authors to start using our new API.

But is that a common enough case which the API needs to handle.
 I would think that a script library which wants to handle such case,
 can just use the API to observe everything.


Recall the distributed editing use cases pointed by Dave Raggett for
example:
http://lists.w3.org/Archives/Public/public-webapps/2011JulSep/0416.html
http://lists.w3.org/Archives/Public/public-webapps/2011JulSep/0381.html

- Ryosuke


RE: FW: [indexeddb] transaction commit failure

2011-08-22 Thread Eliot Graff
I added a step 3 to 4.3 Steps for committing a transaction:

3. If an error occurs while committing the transaction, fire an error event 
with type set to UNKNOWN_ERROR, and then follow the steps for aborting a 
transaction.

Thanks,

Eliot

 -Original Message-
 From: public-webapps-requ...@w3.org [mailto:public-webapps-
 requ...@w3.org] On Behalf Of Jonas Sicking
 Sent: Wednesday, August 17, 2011 4:56 PM
 To: Israel Hilerio
 Cc: public-webapps@w3.org; Tom Bolds; Adam Herchenroether; Victor Ngo;
 m...@shawnwilsher.com
 Subject: Re: FW: [indexeddb] transaction commit failure
 
 On Wed, Aug 17, 2011 at 3:08 PM, Israel Hilerio isra...@microsoft.com
 wrote:
  On Tuesday, August 16, 2011 8:08 AM, Jonas Sicking wrote:
  On Monday, August 15, 2011, Shawn Wilsher m...@shawnwilsher.com
 wrote:
   On 8/15/2011 3:31 PM, Israel Hilerio wrote:
  
   When the db is doing a commit after processing all records on the
   transaction, if for some reason it fails, should we produce an
   error event first and let the bubbling produce a transaction abort
   event or should we only produce a transaction abort event. It
   seems that doing the first approach would be more complete.
  
   I agree; the first approach seems better and I can't think of any reason
 why it would be difficult to implement.
  
   The catch is that calling `preventDefault` will not prevent the abort,
 which is (I think) different from how we handle other errors, right?
 
  Yeah, I'm tempted to say that that is enough of a reason for simply firing
 abort directly, but I could be convinced otherwise.
 
  / Jonas
 
  We would like to follow the first approach because it allows us to notify 
  the
 developer that there was an error on the transaction and that is the reason
 the transaction was aborted.
 
 Ok, that works for me.
 
 / Jonas
 




RE: [indexeddb] Handling negative parameters for the advance method

2011-08-22 Thread Eliot Graff

 
  Hmm.. Yeah, I suspect that is the better behavior here. We should
  probably also throw if the number is 0.
 
  / Jonas
 
 If a developer specifies zero as a value, we could throw an
 IDBDatabaseException with a value of NON_TRANSIENT_ERR.
 What about doing the same for negative values?
 
 Israel
 


For cursor.advance() in sync  async, I changed count parameter type to long 
and added NON_TRANSIENT_ERR:

ExceptionDescription
IDBDatabaseExceptionNON_TRANSIENT_ERR   The value passed into the count 
parameter was zero or a negative number.

Thanks,

Eliot



[Bug 13786] Drop the charset parameter or made it non-conforming. Other MIME types introduced by this specification do not allow the charset parameter.

2011-08-22 Thread bugzilla
http://www.w3.org/Bugs/Public/show_bug.cgi?id=13786

Ian 'Hixie' Hickson i...@hixie.ch changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||i...@hixie.ch
 Resolution||WONTFIX

--- Comment #2 from Ian 'Hixie' Hickson i...@hixie.ch 2011-08-23 00:05:35 UTC 
---
EDITOR'S RESPONSE: This is an Editor's Response to your comment. If you are
satisfied with this response, please change the state of this bug to CLOSED. If
you have additional information and would like the editor to reconsider, please
reopen this bug. If you would like to escalate the issue to the full HTML
Working Group, please add the TrackerRequest keyword to this bug, and suggest
title and text for the tracker issue; or you may create a tracker issue
yourself, if you are able to do so. For more details, see this document:
   http://dev.w3.org/html5/decision-policy/decision-policy.html

Status: Rejected
Change Description: no spec change
Rationale: The problem is that a number of servers actually send charset=
parameters, so we have to support it. We can't ignore it because if the
character encoding is set to something else then we would be corrupting the
data if we interpreted it as UTF-8. (What if one day we all move on to some new
encoding scheme? It's important that we be able to migrate. We can't easily do
so if we are ignoring charset=!)

-- 
Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are on the CC list for the bug.



Re: [XHR2] Blobs, names and FormData

2011-08-22 Thread Jonas Sicking
Given that this seems to be the way people prefer to do it, I'm fine
with doing that for Gecko too. But we definitely would need to get
FormData.append changed so that it supports the use case.

/ Jonas

On Mon, Aug 22, 2011 at 1:40 PM, Michael Nordman micha...@google.com wrote:
 A few of us on the chrome team just discussed this. We see this as a
 deficiency in the FormData interface and intend to address it by providing a
 variant of FormData.append(...) that allows the caller to provide a
 'filename' when appending a blob. We don't intend to implement
 BlobBuilder.getFile().
 Anne, would you be willing to massage the XHR2 spec to allow for the
 additional param in the case of a blob?

 On Mon, Jul 18, 2011 at 3:00 PM, Jonas Sicking jo...@sicking.cc wrote:

 On Mon, Jul 18, 2011 at 2:52 PM, Charles Pritchard ch...@jumis.com
 wrote:
  On 7/18/2011 2:42 PM, Jonas Sicking wrote:
 
    If there is an API that replies on File to
    work correctly we think we should fix it to work with Blob. For
   example, FileReader is
    really BlobReader and works fine with Blobs. To me, getFile()
   should
   be unnecessary and
    the best fix for FormData is to just modify append for this
   situation.
 
  While File and Blob are indeed very similar, they are also not the
  same thing. I think being able to create files is an easy addition for
  implementations, while it means not restricting getting Files from the
  users file system. So if you have code that expects to read a File
  from IndexedDB, the page can either populate that from the users
  filesystem, or by generating the data manually and using
  BlobBuilder.getFile.
 
  I'm very interested in this use case; I've been told that there may be
  issues
  with IndexedDB transaction constraints and FileReader/writer.
 
  Afaik, filewriter doesn't apply to blobs in this case. I don't know the
  consequences of
  callbacks to reader functions in the event loop, and whether that would
  end
  up blocking
  idb events. I'd imagine the blob is simply reset, and the stale
  reference
  remains until it can
  be cleaned up.

 Note that File objects are immutable just like Blobs are, so none of
 this applies here.

 The issues that you're talking about come up once we start talking
 about FileEntries, but that's an entirely different beast which are
 unrelated to this thread. No-one has suggested being able to create a
 FileEntry using BlobBuilder, nor that FileEntries are required to
 submit named content using FormData.

 Hope that helps.

 / Jonas






Re: FW: [indexeddb] transaction commit failure

2011-08-22 Thread Jonas Sicking
We should also explicitly mention that canceling the event (by calling
preventDefault) does *not* prevent the transaction from being aborted.

/ Jonas

On Mon, Aug 22, 2011 at 2:27 PM, Eliot Graff eliot.gr...@microsoft.com wrote:
 I added a step 3 to 4.3 Steps for committing a transaction:

 3. If an error occurs while committing the transaction, fire an error event 
 with type set to UNKNOWN_ERROR, and then follow the steps for aborting a 
 transaction.

 Thanks,

 Eliot

 -Original Message-
 From: public-webapps-requ...@w3.org [mailto:public-webapps-
 requ...@w3.org] On Behalf Of Jonas Sicking
 Sent: Wednesday, August 17, 2011 4:56 PM
 To: Israel Hilerio
 Cc: public-webapps@w3.org; Tom Bolds; Adam Herchenroether; Victor Ngo;
 m...@shawnwilsher.com
 Subject: Re: FW: [indexeddb] transaction commit failure

 On Wed, Aug 17, 2011 at 3:08 PM, Israel Hilerio isra...@microsoft.com
 wrote:
  On Tuesday, August 16, 2011 8:08 AM, Jonas Sicking wrote:
  On Monday, August 15, 2011, Shawn Wilsher m...@shawnwilsher.com
 wrote:
   On 8/15/2011 3:31 PM, Israel Hilerio wrote:
  
   When the db is doing a commit after processing all records on the
   transaction, if for some reason it fails, should we produce an
   error event first and let the bubbling produce a transaction abort
   event or should we only produce a transaction abort event. It
   seems that doing the first approach would be more complete.
  
   I agree; the first approach seems better and I can't think of any reason
 why it would be difficult to implement.
  
   The catch is that calling `preventDefault` will not prevent the abort,
 which is (I think) different from how we handle other errors, right?
 
  Yeah, I'm tempted to say that that is enough of a reason for simply firing
 abort directly, but I could be convinced otherwise.
 
  / Jonas
 
  We would like to follow the first approach because it allows us to notify 
  the
 developer that there was an error on the transaction and that is the reason
 the transaction was aborted.

 Ok, that works for me.

 / Jonas






Re: [indexeddb] Updates to the IDBCursor.advance method text and exception list.

2011-08-22 Thread Jonas Sicking
On Mon, Aug 22, 2011 at 5:24 PM, Israel Hilerio isra...@microsoft.com wrote:
 I wanted to confirm with you that we want to add the following text to the 
 IDBCursor.advance to keep it consistent with IDBCursor.continue:

 Before this method returns, unless an exception was thrown, it sets the got 
 value flag on the cursor to false.

 Calling this method more than once before the cursor data has been loaded is 
 not allowed and results in a NOT_ALLOWED_ERR exception being thrown. For 
 example, calling advance() twice from the same onsuccess handler results in 
 a NOT_ALLOWED_ERR being thrown on the second call.

 IDBDatabaseException:
 * TRANSACTION_INACTIVE_ERR - The transaction this IDBCursor belongs to is 
 not active.
 * NOT_ALLOWED_ERR - The cursor is currently being iterated, or has iterated 
 past its end.

 If we agree, we can make this change.

Sounds good to me.

/ Jonas



[Bug 13373] Privacy: Limit SharedWorker connections to same top-level domain

2011-08-22 Thread bugzilla
http://www.w3.org/Bugs/Public/show_bug.cgi?id=13373

Ian 'Hixie' Hickson i...@hixie.ch changed:

   What|Removed |Added

 Status|REOPENED|RESOLVED
 Resolution||WONTFIX

--- Comment #3 from Ian 'Hixie' Hickson i...@hixie.ch 2011-08-23 05:19:27 UTC 
---
(In reply to comment #2)
 
 It sounds like you are saying that as an implementor, I am free to define that
 when two frames are not in a unit of related browing contexts (which I will
 define as a tab for illustrative purposes), then they don't need to connect
 to the same SharedWorker instance (even if they share the same domain and 
 other
 criteria as specified in [2]). As a browser user agent, I might allow the
 round-about scenario described above (because there is an opt-in path), but
 disallow the case where the frames are trying a connection from different
 tabs. If such a behavior is conforming per this specification, then I guess 
 I
 don't have any further concern.

If they can communicate indirectly, then they should be able to open a shared
worker. That's the entire point of the shared worker feature.


With what you propose, there would be no way for sites to provide shared
services. For example, imagine if example.com provided a dictionary (spelling
checking) service, and facebook.com and plus.google.com both wanted to be able
to use that service. So that example.com uses only minimal resources on each
user's machine (it expects to be used by many sites), it uses a shared worker
to communicate back to its server. Both facebook.com and plus.google.com open
an iframe to example.com and that iframe then opens the shared worker. The
sites can then check spelling by communicating to a port vended from the worker
through the iframe to the sites, and all the checking happens in the one
worker.

If we did what you suggested, this would not be possible. Indeed, either
example.com would have to run multiple copies of the spelling checker service
(wasting user resources), or it would have to open a top-level window to open
the shared worker (which would mean highly annoying popups).

Since your proposal does not improve privacy in any material way, and harms
legitimate use cases, I do not think it makes sense.

-- 
Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are on the CC list for the bug.