[Component Model]: Decorators and Fallback Content

2011-12-07 Thread Charles Pritchard
TL;DR: How about supporting appearance: none for the canvas element, 
and decorator as well.


The component introduces a decorator: url(#url) semantic to upgrade 
elements while maintaining backward compatibilty.


Decorators can be applied in various manner, but this is where I'd like 
to focus:

button is=x-my-componentThis is a button/button

For a browser that does not support decorators, or if the decorator is 
unavailable, that's going to turn into a standard button.
Great stuff. If the decorator is supported, we've got ourselves whatever 
it is the component author intended. Good stuff.


Now let's take a look at Canvas components:
canvasbuttonThis is a button/button/canvas

This is no fun, how do I reach that fallback content, visually? There 
are many means of doing it, but it's not as clean as I'd like.


And now a trip down memory lane. It was about five years ago I was 
actively developing a form-centric application, it uses mouseover to 
change the background color of some input buttons. I look silly now, now 
that submit buttons can be styled by the user agent.


So, back to the future, I ought to add  input[type=submit] { 
-webkit-appearance: none; } to my old project, for a quick fix.


If you're with me so still, I've just ensured that the present Webkit, 
let's say Chrome, for this example, will now render my input submit 
buttons as defined in CSS, and not in the manner inherited by the 
operating system. That's important for my mouse events, because the OS 
rendered button is very different than the button that displays when CSS 
is handling the task.  If you have questions about this, ask, and I'm 
sure we can hunt down some examples together.


And that takes me back to the canvas and decorator examples.

canvas style=-webkit-appearance: nonebuttonThis is a 
button/button/canvas


That ought to go ahead and hide the Canvas element and show the button 
element, as though Canvas were not supported. It shouldn't nuke the 
Canvas context, but it should no longer be in the render tree. This 
makes it easy to turn Canvas off and on, and to see that fallback 
content. That's something I want in Canvas, and that's something I want 
for decorators in the component model.


And since we're stuck with appearance: none, it seems like the right 
semantic to pick up for this task. I think it's a good fit.


Also, CSS-UI doesn't want it -- and I think they're right in booting it 
out. So I'm proposing that the Component Model pick it up.



-Charles




[Bug 15096] New: 1.function supports_html5_storage() { 2. try { 3. return 'localStorage' in window window['localStorage'] !== null; 4. } catch (e) { 5. return fals

2011-12-07 Thread bugzilla
https://www.w3.org/Bugs/Public/show_bug.cgi?id=15096

   Summary: 1.function supports_html5_storage() {2.try {
 3.return 'localStorage' in window 
window['localStorage'] !== null;4.} catch (e)
{5.return false;6.}7.}
   Product: WebAppsWG
   Version: unspecified
  Platform: Other
   URL: http://www.whatwg.org/specs/web-apps/current-work/#top
OS/Version: other
Status: NEW
  Severity: normal
  Priority: P3
 Component: Web Storage (editor: Ian Hickson)
AssignedTo: i...@hixie.ch
ReportedBy: contribu...@whatwg.org
 QAContact: member-webapi-...@w3.org
CC: i...@hixie.ch, m...@w3.org, public-webapps@w3.org


Specification: http://dev.w3.org/html5/webstorage/
Multipage: http://www.whatwg.org/C#top
Complete: http://www.whatwg.org/c#top

Comment:
1.function supports_html5_storage() {
2.try {   
3.  return 'localStorage' in window  window['localStorage'] !== null; 

4.} catch (e) {   
5.  return false;   
6.}   
7.}  


Posted from: 112.65.138.138
User agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0;
.NET CLR 2.0.50727; .NET4.0C; .NET4.0E; .NET CLR 3.0.4506.2152; .NET CLR
3.5.30729; .NET CLR 1.1.4322)

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



[Bug 15097] New: function supports_html5_storage() { try { return 'localStorage' in window window['localStorage'] !== null; } catch (e) { return false;

2011-12-07 Thread bugzilla
https://www.w3.org/Bugs/Public/show_bug.cgi?id=15097

   Summary: function supports_html5_storage() {try {
 return 'localStorage' in window 
window['localStorage'] !== null;} catch (e) {
  return false;}}
   Product: WebAppsWG
   Version: unspecified
  Platform: Other
   URL: http://www.whatwg.org/specs/web-apps/current-work/#top
OS/Version: other
Status: NEW
  Severity: normal
  Priority: P3
 Component: Web Storage (editor: Ian Hickson)
AssignedTo: i...@hixie.ch
ReportedBy: contribu...@whatwg.org
 QAContact: member-webapi-...@w3.org
CC: i...@hixie.ch, m...@w3.org, public-webapps@w3.org


Specification: http://dev.w3.org/html5/webstorage/
Multipage: http://www.whatwg.org/C#top
Complete: http://www.whatwg.org/c#top

Comment:
function supports_html5_storage() {   
try {   
return 'localStorage' in window  window['localStorage'] !== null;   

} catch (e) {   
return false;
}
}  


Posted from: 112.65.138.138
User agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0;
.NET CLR 2.0.50727; .NET4.0C; .NET4.0E; .NET CLR 3.0.4506.2152; .NET CLR
3.5.30729; .NET CLR 1.1.4322)

-- 
Configure bugmail: https://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: Standards for Web applications on mobile devices: November 2011 updates

2011-12-07 Thread Dominique Hazael-Massieux
Le mercredi 07 décembre 2011 à 00:01 +, Marcos Caceres a écrit :
 Although I think this document is quite informative, I again would
 like to raise objections about lumping app cache and widgets together
 for the same reasons I raised last time.

Your last message on the thread last time made me think your objections
had been lifted:
http://lists.w3.org/Archives/Public/public-webapps/2011JulSep/1459.html

But I guess I misunderstood it. I'm a bit at loss as to how to make
progress on this. 

  However, I don't want to have that argument again: I just want to say
 I think it's disingenuous (perhaps make it more clear at the top of
 the document that the document represents mostly your personal
 opinion?). I'm also concerned that the text that I contributed to the
 document about the variety of applicability of the technologies has
 been removed.  

I did remove it, indeed; listing all the things the document doesn't do
didn't seem very helpful to the reader, and seemed redundant with the
scoping statement of the document: 
This document summarizes the various technologies developed in
W3C that increase the power of Web applications, and how they
apply more specifically to the mobile context.


 I'm also concerned at use of the terms limited and very limited to
 label current implementations as being both subjective and
 relativistic - and it implies that attempts to implement have ceased;
 particularly next to well deployed, Largely deployed, Growing,
 and Getting deployed. Either remove that column, or present some
 data to which you can underpin each of the labels.  

I agree that the current data are somewhat subjective (and have amended
the description of the column in the introduction accordingly).

My sources have been:
* my personal knowledge of what's available where, and what I've heard
is coming soon
* http://mobilehtml5.org/
* caniuse.com

Ideally, I would like a lot more of the data in that column to come from
W3C test suite results, but since we're not there yet, I think
subjective (but I'm hoping reasonably well informed) data are probably
more helpful to the reader than no data at all.

And as any other part of the document, I'm happy to get specific
feedback on which of these assessments you think are not in line with
the market.

Dom





[Bug 15096] 1.function supports_html5_storage() { 2. try { 3. return 'localStorage' in window window['localStorage'] !== null; 4. } catch (e) { 5. return false;

2011-12-07 Thread bugzilla
https://www.w3.org/Bugs/Public/show_bug.cgi?id=15096

Ms2ger ms2...@gmail.com changed:

   What|Removed |Added

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

-- 
Configure bugmail: https://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: QSA, the problem with :scope, and naming

2011-12-07 Thread Lachlan Hunt

On 2011-10-20 10:14, Sean Hogan wrote:

The primary use-case for matchesSelector() has been event-delegation,
and this is the same for matches(). More specifically, consider the
following scenario:

jQuery adds a new event registration method that uses event delegation
to mimic the behavior of:
$(elem).find( div  .thinger).bind(eventType, fn);
The new method is called proxybind(), and the equivalent of the above is:
$(elem).proxybind( div  .thinger, eventType, fn);


I cannot find any documentation for proxybind() and it doesn't seem to 
be in JQuery 1.7.1.  I found a proxy() method, but it doesn't seem to 
match what you're talking about.


http://api.jquery.com/jQuery.proxy/

Also, the JQuery.is() method, which is the method similar to 
.matchesSelector(), does not support any context node, and so it does 
not work with .is(.foo, context).


Could you provide some documentation for, or at least a version of 
JQuery that implements proxybind?


--
Lachlan Hunt - Opera Software
http://lachy.id.au/
http://www.opera.com/



Re: [Component Model]: Decorators and Fallback Content

2011-12-07 Thread Dimitri Glazkov
On Wed, Dec 7, 2011 at 12:01 AM, Charles Pritchard ch...@jumis.com wrote:
 TL;DR: How about supporting appearance: none for the canvas element, and
 decorator as well.

 The component introduces a decorator: url(#url) semantic to upgrade
 elements while maintaining backward compatibilty.

 Decorators can be applied in various manner, but this is where I'd like to
 focus:
 button is=x-my-componentThis is a button/button


That's not a decorator. That's a custom element. They are very
different. Did I fail to draw enough distinction in the explainer?

 For a browser that does not support decorators, or if the decorator is
 unavailable, that's going to turn into a standard button.
 Great stuff. If the decorator is supported, we've got ourselves whatever it
 is the component author intended. Good stuff.

Yep, except s/decorator/custom element.


 Now let's take a look at Canvas components:

What are Canvas components?

 canvasbuttonThis is a button/button/canvas

 This is no fun, how do I reach that fallback content, visually? There are
 many means of doing it, but it's not as clean as I'd like.

Why would you need to reach there visually? I think I am lost.


 And now a trip down memory lane. It was about five years ago I was actively
 developing a form-centric application, it uses mouseover to change the
 background color of some input buttons. I look silly now, now that submit
 buttons can be styled by the user agent.

 So, back to the future, I ought to add  input[type=submit] {
 -webkit-appearance: none; } to my old project, for a quick fix.

 If you're with me so still, I've just ensured that the present Webkit, let's
 say Chrome, for this example, will now render my input submit buttons as
 defined in CSS, and not in the manner inherited by the operating system.
 That's important for my mouse events, because the OS rendered button is very
 different than the button that displays when CSS is handling the task.  If
 you have questions about this, ask, and I'm sure we can hunt down some
 examples together.

 And that takes me back to the canvas and decorator examples.

 canvas style=-webkit-appearance: nonebuttonThis is a
 button/button/canvas

 That ought to go ahead and hide the Canvas element and show the button
 element, as though Canvas were not supported. It shouldn't nuke the Canvas
 context, but it should no longer be in the render tree. This makes it easy
 to turn Canvas off and on, and to see that fallback content. That's
 something I want in Canvas, and that's something I want for decorators in
 the component model.

What are you trying to accomplish? Can we start with that first?


 And since we're stuck with appearance: none, it seems like the right
 semantic to pick up for this task. I think it's a good fit.

 Also, CSS-UI doesn't want it -- and I think they're right in booting it out.
 So I'm proposing that the Component Model pick it up.


 -Charles





Re: [Component Model]: Decorators and Fallback Content

2011-12-07 Thread Charles Pritchard

On 12/7/11 7:36 AM, Dimitri Glazkov wrote:

On Wed, Dec 7, 2011 at 12:01 AM, Charles Pritchardch...@jumis.com  wrote:

TL;DR: How about supporting appearance: none for thecanvas  element, and
decorator as well.

The component introduces a decorator: url(#url) semantic to upgrade
elements while maintaining backward compatibilty.

Decorators can be applied in various manner, but this is where I'd like to
focus:
button is=x-my-componentThis is a button/button


That's not a decorator. That's a custom element. They are very
different. Did I fail to draw enough distinction in the explainer?


Sorry about the confusion. I did not make the clear distinction of 
custom tags with templates and decorators.



Now let's take a look at Canvas components:

What are Canvas components?


A canvas element with usable fallback content.

This is not a component:
canvasYou do not have Canvas, you Shall not Pass!/canvas

This is a component:
canvas
legend tabindex=-1 for=buttonThe Big Red Button/legend
button tabindex=0 id=buttonLaunch Missiles/button
/canvas


canvasbuttonThis is a button/button/canvas

This is no fun, how do I reach that fallback content, visually? There are
many means of doing it, but it's not as clean as I'd like.

Why would you need to reach there visually? I think I am lost.
I've repeatedly had cases where I'd like to show the sub-tree. While I 
can certainly do dom manipulation to accomplish it, in my experience, it 
makes a lot more sense and is a lot easier to use css.


This is not solely about accessibility, though I do think supporting 
appearance: none would help developers work with their sub-tree.


It's a frustrating practice to need to intentionally break the canvas 
tag to debug in place:
not-canvasbutton data-notes=I am now debugging my sub-treeTap for 
a treat/button/canvas


I don't want to get too wrapped up in providing use cases: if it's an 
issue, I will being a more formal list in my next response. In general, 
I'd say the use is for debugging and for simply showing a plain view. It 
encourages authors to use semantic HTML appropriately.


The ability to switch presentational modes is important. It's what CSS 
is all about, isn't it?




And now a trip down memory lane. It was about five years ago I was actively
developing a form-centric application, it uses mouseover to change the
background color of some input buttons. I look silly now, now that submit
buttons can be styled by the user agent.

So, back to the future, I ought to add  input[type=submit] {
-webkit-appearance: none; } to my old project, for a quick fix.

If you're with me so still, I've just ensured that the present Webkit, let's
say Chrome, for this example, will now render my input submit buttons as
defined in CSS, and not in the manner inherited by the operating system.
That's important for my mouse events, because the OS rendered button is very
different than the button that displays when CSS is handling the task.  If
you have questions about this, ask, and I'm sure we can hunt down some
examples together.

And that takes me back to thecanvas  and decorator examples.

canvas style=-webkit-appearance: nonebuttonThis is a
button/button/canvas

That ought to go ahead and hide the Canvas element and show the button
element, as though Canvas were not supported. It shouldn't nuke the Canvas
context, but it should no longer be in the render tree. This makes it easy
to turn Canvas off and on, and to see that fallback content. That's
something I want in Canvas, and that's something I want for decorators in
the component model.

What are you trying to accomplish? Can we start with that first?


I want to disable these higher presentation layers via CSS.

That's what happens with: button style=-webkit-appearance: none /.
Custom decorations are dropped, and we go back into the past, a simpler 
time.


I'd like to see appearance: none work with custom elements and canvas 
elements.


It would benefit users, to be able to easily change the style sheet and 
I believe it would benefit developers, to be able to more easily debug, 
with dual-use of their markup.


I think this should apply to audio controls as well;
audio controlsa hrefMy Music File/a/audio

That'd hide the controls and simply show the link, as though audio were 
not supported.


I've been trying for some time to find a semantic to fit this use I 
have. CSS replaced content was not a good fit. appearance: none seems 
to be the right one.



-Charles





Re: [Component Model]: Decorators and Fallback Content

2011-12-07 Thread Dimitri Glazkov
On Wed, Dec 7, 2011 at 9:01 AM, Charles Pritchard ch...@jumis.com wrote:
 On 12/7/11 7:36 AM, Dimitri Glazkov wrote:

 On Wed, Dec 7, 2011 at 12:01 AM, Charles Pritchardch...@jumis.com
  wrote:

 TL;DR: How about supporting appearance: none for thecanvas  element,
 and
 decorator as well.

 The component introduces a decorator: url(#url) semantic to upgrade
 elements while maintaining backward compatibilty.

 Decorators can be applied in various manner, but this is where I'd like
 to
 focus:
 button is=x-my-componentThis is a button/button

 That's not a decorator. That's a custom element. They are very
 different. Did I fail to draw enough distinction in the explainer?


 Sorry about the confusion. I did not make the clear distinction of custom
 tags with templates and decorators.


 Now let's take a look at Canvas components:

 What are Canvas components?


 A canvas element with usable fallback content.

 This is not a component:
 canvasYou do not have Canvas, you Shall not Pass!/canvas

 This is a component:
 canvas
 legend tabindex=-1 for=buttonThe Big Red Button/legend
 button tabindex=0 id=buttonLaunch Missiles/button
 /canvas

Why is that a component? And why is there a canvas tag surrounding
it? I must have not been following some discussion somewhere. Is
canvas there to provide some presentational quality? If so, I would
write this like so using Web Components:

div is=x-foobar
legend ...
button ...
/div

Then the x-foobar custom element is defined as:

element name=x-foobar extends=div
script

//...

/script
template
canvas/canvas
/template
/element

In other words, put canvas in the shadow DOM, leave the meaningful
tags in the document.



 canvasbuttonThis is a button/button/canvas

 This is no fun, how do I reach that fallback content, visually? There are
 many means of doing it, but it's not as clean as I'd like.

 Why would you need to reach there visually? I think I am lost.

 I've repeatedly had cases where I'd like to show the sub-tree. While I can
 certainly do dom manipulation to accomplish it, in my experience, it makes a
 lot more sense and is a lot easier to use css.

From my perspective, you're narrowing on a solution without first
stating a problem. Why do you need to show the subtree? Give me an
example? I am not trying to be a butt, just failing to understand what
you're trying to do.


 This is not solely about accessibility, though I do think supporting
 appearance: none would help developers work with their sub-tree.

To paraphrase the famous Princess Bride quote, I don't think
appearance: none means what you think it means. The effects of
-webkit-appearance are limited to painting. Extending it to mean
something else is probably going to be more pain than just adding a
new primitive. I am not sure if there's a need for a new primitive,
though.


 It's a frustrating practice to need to intentionally break the canvas tag to
 debug in place:
 not-canvasbutton data-notes=I am now debugging my sub-treeTap for a
 treat/button/canvas

I am still puzzled why you would want to stuff a live DOM tree into a
canvas, but it seems that the solution I outlined earlier should help
you here.


 I don't want to get too wrapped up in providing use cases: if it's an issue,
 I will being a more formal list in my next response. In general, I'd say the
 use is for debugging and for simply showing a plain view. It encourages
 authors to use semantic HTML appropriately.

 The ability to switch presentational modes is important. It's what CSS is
 all about, isn't it?



 And now a trip down memory lane. It was about five years ago I was
 actively
 developing a form-centric application, it uses mouseover to change the
 background color of some input buttons. I look silly now, now that submit
 buttons can be styled by the user agent.

 So, back to the future, I ought to add  input[type=submit] {
 -webkit-appearance: none; } to my old project, for a quick fix.

 If you're with me so still, I've just ensured that the present Webkit,
 let's
 say Chrome, for this example, will now render my input submit buttons as
 defined in CSS, and not in the manner inherited by the operating system.
 That's important for my mouse events, because the OS rendered button is
 very
 different than the button that displays when CSS is handling the task.
  If
 you have questions about this, ask, and I'm sure we can hunt down some
 examples together.

 And that takes me back to thecanvas  and decorator examples.

 canvas style=-webkit-appearance: nonebuttonThis is a
 button/button/canvas

 That ought to go ahead and hide the Canvas element and show the button
 element, as though Canvas were not supported. It shouldn't nuke the
 Canvas
 context, but it should no longer be in the render tree. This makes it
 easy
 to turn Canvas off and on, and to see that fallback content. That's
 something I want in Canvas, and that's something I want for decorators in
 the component model.

 What are you trying to accomplish? Can we start 

Re: Standards for Web applications on mobile devices: November 2011 updates

2011-12-07 Thread Marcos Caceres



On Wednesday, 7 December 2011 at 09:51, Dominique Hazael-Massieux wrote:

 Le mercredi 07 décembre 2011 à 00:01 +, Marcos Caceres a écrit :
  Although I think this document is quite informative, I again would
  like to raise objections about lumping app cache and widgets together
  for the same reasons I raised last time.
  
  
 Your last message on the thread last time made me think your objections
 had been lifted:
 http://lists.w3.org/Archives/Public/public-webapps/2011JulSep/1459.html
  
 But I guess I misunderstood it. I'm a bit at loss as to how to make
 progress on this.

I was in agreement when the disclaimer I proposed was included in your 
document, because it said that this was just one (of many) application of the 
technology (particularly as it relates to widgets, which are used in a bunch of 
weird and wonderful places). Without that context, it sounds like widgets are 
somehow competing (and badly losing) with AppCache. That's my reading, and 
that's why I keep harping on about :)
  
  However, I don't want to have that argument again: I just want to say
  I think it's disingenuous (perhaps make it more clear at the top of
  the document that the document represents mostly your personal
  opinion?). I'm also concerned that the text that I contributed to the
  document about the variety of applicability of the technologies has
  been removed.
  
 I did remove it, indeed; listing all the things the document doesn't do
 didn't seem very helpful to the reader, and seemed redundant with the
 scoping statement of the document:  
 This document summarizes the various technologies developed in
 W3C that increase the power of Web applications, and how they
 apply more specifically to the mobile context.

Maybe I'm being too critical about this, but these technologies don't increase 
the power of anything: they are the bits and pieces applications to be created 
by humans - power of application comes from the brains that put these tools to 
work, not from the tools themselves.   
  
  I'm also concerned at use of the terms limited and very limited to
  label current implementations as being both subjective and
  relativistic - and it implies that attempts to implement have ceased;
  particularly next to well deployed, Largely deployed, Growing,
  and Getting deployed. Either remove that column, or present some
  data to which you can underpin each of the labels.
  
 I agree that the current data are somewhat subjective (and have amended
 the description of the column in the introduction accordingly).
  
 My sources have been:
 * my personal knowledge of what's available where, and what I've heard
 is coming soon
 * http://mobilehtml5.org/
 * caniuse.com (http://caniuse.com)
  
 Ideally, I would like a lot more of the data in that column to come from
 W3C test suite results, but since we're not there yet, I think
 subjective (but I'm hoping reasonably well informed) data are probably
 more helpful to the reader than no data at all.

I don't think that data is all that suitable: for instance, I know of a lot of 
widget runtimes that implement the widget specs, but I don't include them in 
the implementation report because they are not fully conforming (and because 
those vendors have not asked to be included). I only include stuff that allows 
me to meet the exit criteria for a particular specification: it would be a lot 
of work for me (or anyone) to source that data by running an implementation 
through a test suite.   
 And as any other part of the document, I'm happy to get specific
 feedback on which of these assessments you think are not in line with
 the market.
  

I'm biased, so lets start with widgets. For instance, why would you say 
limited instead of growing? I guess that is only true if you exclusively 
look at the big Web Browsers. If that is the case, then that is a fair claim 
(no new web browsers have implemented the widget spec). However, other software 
has (e.g., a bunch of new WAC runtimes, PhoneGap, etc.).   

--  
Marcos Caceres

http://datadriven.com.au  





Re: [Component Model]: Decorators and Fallback Content

2011-12-07 Thread Charles Pritchard

On 12/7/2011 9:45 AM, Dimitri Glazkov wrote:

On Wed, Dec 7, 2011 at 9:01 AM, Charles Pritchardch...@jumis.com  wrote:

On 12/7/11 7:36 AM, Dimitri Glazkov wrote:

On Wed, Dec 7, 2011 at 12:01 AM, Charles Pritchardch...@jumis.com
  wrote:

Now let's take a look at Canvas components:

What are Canvas components?


Acanvas  element with usable fallback content.

This is not a component:
canvasYou do not have Canvas, you Shall not Pass!/canvas

This is a component:
canvas
legend tabindex=-1 for=buttonThe Big Red Button/legend
button tabindex=0 id=buttonLaunch Missiles/button
/canvas

Why is that a component? And why is there acanvas  tag surrounding
it? I must have not been following some discussion somewhere. Is
canvas  there to provide some presentational quality? If so, I would
write this like so using Web Components:

div is=x-foobar
legend ...
button ...
/div

Then the x-foobar custom element is defined as:

element name=x-foobar extends=div
script

//...

/script
template
canvas/canvas
/template
/element

In other words, putcanvas  in the shadow DOM, leave the meaningful
tags in the document.


I called it a component to try to avoid confusion. Didn't work! If you'd 
prefer, I'll call it an interactive canvas element or a canvas widget.


And while I understand the nature of your suggestion, I'm talking about 
existing implementations.


Yes, when the Component Model is available and implemented, we'll have 
another option to use with canvas based interactive widgets.


It's been my position that the existing practices of the canvas 
element are a helpful topic in understanding the needs of Web 
Components. It's also my position that canvas should be heavily 
considered in the design of web components, and that web components 
should be heavily considered in future discussions about canvas. I 
intend to bring them up in public-canvas-api when Web Components is a 
little further along.


Again, I apologize for the miscommunication here, I only intended to 
bring up a single issue, CSS appearance.



canvasbuttonThis is a button/button/canvas

This is no fun, how do I reach that fallback content, visually? There are
many means of doing it, but it's not as clean as I'd like.

Why would you need to reach there visually? I think I am lost.

I've repeatedly had cases where I'd like to show the sub-tree. While I can
certainly do dom manipulation to accomplish it, in my experience, it makes a
lot more sense and is a lot easier to use css.

 From my perspective, you're narrowing on a solution without first
stating a problem. Why do you need to show the subtree? Give me an
example? I am not trying to be a butt, just failing to understand what
you're trying to do.


The problem is that it is a kludge to view alternate content. IE9 is the 
only browser that makes it easy on me, and it makes it easy because in 
their developer tools I can switch to IE8-mode, where Canvas was not 
supported. The other problem is that I would like to use CSS media 
selectors to show the fallback content, instead of the canvas painting, 
in some circumstances. While I can do a bunch of DOM mutations, it makes 
a lot more sense to have a pure-CSS option.


Additionally, projects like NoScript do not show canvas fallback 
content. This would make it easier on the authors of Noscript to do so, 
via simple CSS.


I'm trying to introduce an easy to use method for showing fallback 
content in advanced controls: in HTML5.

HTML4 did not really have this issue. It was there, but not such a big deal.




This is not solely about accessibility, though I do think supporting
appearance: none would help developers work with their sub-tree.

To paraphrase the famous Princess Bride quote, I don't think
appearance: none means what you think it means. The effects of
-webkit-appearance are limited to painting. Extending it to mean
something else is probably going to be more pain than just adding a
new primitive. I am not sure if there's a need for a new primitive,
though.


appearance: none, will affect the presentation as well as width and 
height of the element.

It has similarities to the template proposal.

While it's not so apparent on Windows, it's very apparent on OS X, with 
input type=submit.


The semantic was created (I believe) prior to Canvas. It's not yet been 
applied. So I'm suggesting that we extend its meaning, because it's a 
close fit.


This says, use the CSS I've put in the document and forget all that 
fancy upgrading of the element:

input type=submit style=-webkit-appearance: none

That seems an appropriate semantic for doing the same with canvas and 
audio controls.




It's a frustrating practice to need to intentionally break the canvas tag to
debug in place:
not-canvasbutton data-notes=I am now debugging my sub-treeTap for a
treat/button/canvas

I am still puzzled why you would want to stuff a live DOM tree into a
canvas, but it seems that the solution I outlined earlier should help
you here.


Putting live elements into 

[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-12-07 Thread bugzilla
https://www.w3.org/Bugs/Public/show_bug.cgi?id=13786

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

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #15 from Ian 'Hixie' Hickson i...@hixie.ch 2011-12-07 18:26:34 
UTC ---
Done.

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



[Bug 15104] New: In reply to: p class=warningFollowing HTTP procedures here could introduce serious security problems in a Web browser context. For example, consider a host with a WebSoc

2011-12-07 Thread bugzilla
https://www.w3.org/Bugs/Public/show_bug.cgi?id=15104

   Summary: In reply to: p class=warningFollowing HTTP
procedures here could introduce serious security
problems in a Web browser context. For example,
consider a host with a WebSocket server at one path
and an open HTTP redirector at another. Suddenl
   Product: WebAppsWG
   Version: unspecified
  Platform: Other
   URL: http://www.whatwg.org/specs/web-apps/current-work/#top
OS/Version: other
Status: NEW
  Severity: normal
  Priority: P3
 Component: WebSocket API (editor: Ian Hickson)
AssignedTo: i...@hixie.ch
ReportedBy: contribu...@whatwg.org
 QAContact: member-webapi-...@w3.org
CC: m...@w3.org, public-webapps@w3.org


Specification: http://dev.w3.org/html5/websockets/
Multipage: http://www.whatwg.org/C#top
Complete: http://www.whatwg.org/c#top

Comment:
In reply to:
p class=warningFollowing HTTP procedures here could introduce
serious security problems in a Web browser context. For example,
consider a host with a WebSocket server at one path and an open
HTTP redirector at another. Suddenly, any script that can be given
a particular WebSocket URL can be tricked into communicating to
(and potentially sharing secrets with) any host on the Internet,
even if the script checks that the URL has the right hostname./p

It SHOULD be possible to get the information from HTTP Status Codes 4xx and
5xx, to provide the ability to return useful information to the client, for
example, a 400 Bad Request response with the following message WebSocket
Version 8 or greater is required.

Posted from: 189.239.8.169
User agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like
Gecko) Chrome/15.0.874.121 Safari/535.2

-- 
Configure bugmail: https://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: [indexeddb] Bug#14404 https://www.w3.org/Bugs/Public/show_bug.cgi?id=14404

2011-12-07 Thread Israel Hilerio
On Saturday, December 03, 2011 9:25 PM, Jonas Sicking wrote:
 On Thu, Dec 1, 2011 at 2:51 PM, Israel Hilerio isra...@microsoft.com
 wrote:
  Jonas,
 
  Since you believe we should keep the values of version as a non-nullable
 long long, what should the value of version be during the first run/creation 
 if
 the transaction is aborted? Should it be 0 (I don't believe we want version to
 be a negative number)?
 
 I realized the other day that the question also applies to what should
 db.objectStoreNames return? It makes sense that whatever changes we
 make to .version we'd also make to .objectStoreNames. Do we revert it to
 the value it had before the transaction was started? Do we throw?
 Do we return null/0?
 
 Ultimately I feel like there really is very little reason for someone to use
 these properties if the VERSION_CHANGE transaction fails, and so I'm
 leaning more towards that we should do whatever is easy to implement.
 
 So what I suggest is that we do the same thing as for .close(). I.e.
 we leave the values untouched. This seems not only easy to implement but
 also is consistent with .close().
 
 / Jonas

What about this behavior to summarize all ideas:

Once the onupgradeneeded handler is called, the database is automatically 
created.  If the VERSION_CHANGE transaction is aborted for any reason when the 
database is being created for the first time, the database will remain in the 
system with the following attributes: name=assigned db name, version = 0, and 
objectStoresNames = null.

Do you agree?

Israel




RE: [indexeddb] error value of open request after aborting VERSION_CHANGE transaction inside an onupgradeneeded handler

2011-12-07 Thread Israel Hilerio
On Saturday, December 03, 2011 9:28 PM, Jonas Sicking wrote:
 Subject: Re: [indexeddb] error value of open request after aborting 
 VERSION_CHANGE transaction inside an onupgradeneeded handler
 
 On Thu, Dec 1, 2011 at 7:16 PM, Israel Hilerio isra...@microsoft.com
 wrote:
  On Tuesday, November 22, 2011 5:30 PM, Israel Hilerio wrote:
 Subject: [indexeddb] error value of open request after aborting 
 VERSION_CHANGE transaction inside an onupgradeneeded handler
 
 What should be the value of the error attribute on the open request 
 after
 a VERSION_CHANGE transaction is aborted?  We're thinking it should be 
 AbortError independent of whether the transaction is aborted 
 programmatically or due to a system failure.
 
 Do you guys agree?
 
 Israel
 
  Should I take the silence to mean we're in agreement :-)
 
 Either that, or set it to whatever error caused the transaction to be aborted.
 So the request error would be set to the same as the transaction error.
 
 / Jonas

We believe that the error granularity you outlined above is more appropriate to 
be surfaced on the IDBTransaction.onabort or IDBTransaction.onerror handlers.  
It doesn't seem to be very useful on the IDBOpenRequest associated with the 
IDBFactory.open method.  Also, at the open IDBOpenRequest level, it doesn't 
seem to matter the reason why the transaction failed, all it matters is that it 
failed.  That is one of the reasons we were suggesting to only surface the 
AbortError at that level.  The other reason is that this will signal the 
difference in behavior between the IDBOpenRequest and the IDBRequest.

Israel




Re: [indexeddb] Bug#14404 https://www.w3.org/Bugs/Public/show_bug.cgi?id=14404

2011-12-07 Thread Jonas Sicking
On Wed, Dec 7, 2011 at 2:27 PM, Israel Hilerio isra...@microsoft.com wrote:
 On Saturday, December 03, 2011 9:25 PM, Jonas Sicking wrote:
 On Thu, Dec 1, 2011 at 2:51 PM, Israel Hilerio isra...@microsoft.com
 wrote:
  Jonas,
 
  Since you believe we should keep the values of version as a non-nullable
 long long, what should the value of version be during the first run/creation 
 if
 the transaction is aborted? Should it be 0 (I don't believe we want version 
 to
 be a negative number)?

 I realized the other day that the question also applies to what should
 db.objectStoreNames return? It makes sense that whatever changes we
 make to .version we'd also make to .objectStoreNames. Do we revert it to
 the value it had before the transaction was started? Do we throw?
 Do we return null/0?

 Ultimately I feel like there really is very little reason for someone to use
 these properties if the VERSION_CHANGE transaction fails, and so I'm
 leaning more towards that we should do whatever is easy to implement.

 So what I suggest is that we do the same thing as for .close(). I.e.
 we leave the values untouched. This seems not only easy to implement but
 also is consistent with .close().

 / Jonas

 What about this behavior to summarize all ideas:

 Once the onupgradeneeded handler is called, the database is automatically 
 created.  If the VERSION_CHANGE transaction is aborted for any reason when 
 the database is being created for the first time, the database will remain in 
 the system with the following attributes: name=assigned db name, version = 
 0, and objectStoresNames = null.

That's fine with me yeah.

And what about when .close() is called during the VERSION_CHANGE transaction?

/ Jonas



RE: [indexeddb] Bug#14404 https://www.w3.org/Bugs/Public/show_bug.cgi?id=14404

2011-12-07 Thread Israel Hilerio
On Wednesday, December 07, 2011 2:48 PM, Jonas Sicking wrote:
 On Wed, Dec 7, 2011 at 2:27 PM, Israel Hilerio isra...@microsoft.com
 wrote:
  On Saturday, December 03, 2011 9:25 PM, Jonas Sicking wrote:
  On Thu, Dec 1, 2011 at 2:51 PM, Israel Hilerio
  isra...@microsoft.com
  wrote:
   Jonas,
  
   Since you believe we should keep the values of version as a
   non-nullable
  long long, what should the value of version be during the first
  run/creation if the transaction is aborted? Should it be 0 (I don't
  believe we want version to be a negative number)?
 
  I realized the other day that the question also applies to what
  should db.objectStoreNames return? It makes sense that whatever
  changes we make to .version we'd also make to .objectStoreNames. Do
  we revert it to the value it had before the transaction was started? Do we
 throw?
  Do we return null/0?
 
  Ultimately I feel like there really is very little reason for someone
  to use these properties if the VERSION_CHANGE transaction fails, and
  so I'm leaning more towards that we should do whatever is easy to
 implement.
 
  So what I suggest is that we do the same thing as for .close(). I.e.
  we leave the values untouched. This seems not only easy to implement
  but also is consistent with .close().
 
  / Jonas
 
  What about this behavior to summarize all ideas:
 
  Once the onupgradeneeded handler is called, the database is
 automatically created.  If the VERSION_CHANGE transaction is aborted for
 any reason when the database is being created for the first time, the
 database will remain in the system with the following attributes:
 name=assigned db name, version = 0, and objectStoresNames = null.
 
 That's fine with me yeah.

Cool!

 
 And what about when .close() is called during the VERSION_CHANGE
 transaction?
 
 / Jonas

For us, when the close method is invoked inside the onupgradeneeded handler, 
the db is immediately marked to be closed but it is not immediately closed.  
The db is closed at a later time when no one else is interacting with it.  
Therefore, closing the db inside the onupgradeneeded handler doesn't do 
anything to the current transaction.

Israel




Re: [indexeddb] Bug#14404 https://www.w3.org/Bugs/Public/show_bug.cgi?id=14404

2011-12-07 Thread Jonas Sicking
On Wed, Dec 7, 2011 at 3:15 PM, Israel Hilerio isra...@microsoft.com wrote:
 On Wednesday, December 07, 2011 2:48 PM, Jonas Sicking wrote:
 On Wed, Dec 7, 2011 at 2:27 PM, Israel Hilerio isra...@microsoft.com
 wrote:
  On Saturday, December 03, 2011 9:25 PM, Jonas Sicking wrote:
  On Thu, Dec 1, 2011 at 2:51 PM, Israel Hilerio
  isra...@microsoft.com
  wrote:
   Jonas,
  
   Since you believe we should keep the values of version as a
   non-nullable
  long long, what should the value of version be during the first
  run/creation if the transaction is aborted? Should it be 0 (I don't
  believe we want version to be a negative number)?
 
  I realized the other day that the question also applies to what
  should db.objectStoreNames return? It makes sense that whatever
  changes we make to .version we'd also make to .objectStoreNames. Do
  we revert it to the value it had before the transaction was started? Do we
 throw?
  Do we return null/0?
 
  Ultimately I feel like there really is very little reason for someone
  to use these properties if the VERSION_CHANGE transaction fails, and
  so I'm leaning more towards that we should do whatever is easy to
 implement.
 
  So what I suggest is that we do the same thing as for .close(). I.e.
  we leave the values untouched. This seems not only easy to implement
  but also is consistent with .close().
 
  / Jonas
 
  What about this behavior to summarize all ideas:
 
  Once the onupgradeneeded handler is called, the database is
 automatically created.  If the VERSION_CHANGE transaction is aborted for
 any reason when the database is being created for the first time, the
 database will remain in the system with the following attributes:
 name=assigned db name, version = 0, and objectStoresNames = null.

 That's fine with me yeah.

 Cool!


 And what about when .close() is called during the VERSION_CHANGE
 transaction?

 / Jonas

 For us, when the close method is invoked inside the onupgradeneeded handler, 
 the db is immediately marked to be closed but it is not immediately closed.  
 The db is closed at a later time when no one else is interacting with it.  
 Therefore, closing the db inside the onupgradeneeded handler doesn't do 
 anything to the current transaction.

Yes, that's required by spec.

The question is, what does the database-object's .name, .version and
.objectStoreNames properties return after the transaction is comitted
if the database was closed?

/ Jonas



RE: [indexeddb] Bug#14404 https://www.w3.org/Bugs/Public/show_bug.cgi?id=14404

2011-12-07 Thread Israel Hilerio
On Wednesday, December 07, 2011 3:45 PM, Jonas Sicking wrote:
On Wed, Dec 7, 2011 at 3:15 PM, Israel Hilerio isra...@microsoft.com wrote:
 On Wednesday, December 07, 2011 2:48 PM, Jonas Sicking wrote:
 On Wed, Dec 7, 2011 at 2:27 PM, Israel Hilerio isra...@microsoft.com
 wrote:
  On Saturday, December 03, 2011 9:25 PM, Jonas Sicking wrote:
  On Thu, Dec 1, 2011 at 2:51 PM, Israel Hilerio
  isra...@microsoft.com
  wrote:
   Jonas,
  
   Since you believe we should keep the values of version as a
   non-nullable
  long long, what should the value of version be during the first
  run/creation if the transaction is aborted? Should it be 0 (I don't
  believe we want version to be a negative number)?
 
  I realized the other day that the question also applies to what
  should db.objectStoreNames return? It makes sense that whatever
  changes we make to .version we'd also make to .objectStoreNames. Do
  we revert it to the value it had before the transaction was started? Do 
  we
 throw?
  Do we return null/0?
 
  Ultimately I feel like there really is very little reason for someone
  to use these properties if the VERSION_CHANGE transaction fails, and
  so I'm leaning more towards that we should do whatever is easy to
 implement.
 
  So what I suggest is that we do the same thing as for .close(). I.e.
  we leave the values untouched. This seems not only easy to implement
  but also is consistent with .close().
 
  / Jonas
 
  What about this behavior to summarize all ideas:
 
  Once the onupgradeneeded handler is called, the database is
 automatically created.  If the VERSION_CHANGE transaction is aborted for
 any reason when the database is being created for the first time, the
 database will remain in the system with the following attributes:
 name=assigned db name, version = 0, and objectStoresNames = null.

 That's fine with me yeah.

 Cool!


 And what about when .close() is called during the VERSION_CHANGE
 transaction?

 / Jonas

 For us, when the close method is invoked inside the onupgradeneeded handler, 
 the db is immediately marked to be closed but it is not immediately closed.  
 The db is closed at a later time when no one else is interacting with it.  
 Therefore, closing the db inside the onupgradeneeded handler doesn't do 
 anything to the current transaction.

Yes, that's required by spec.

The question is, what does the database-object's .name, .version and
.objectStoreNames properties return after the transaction is comitted
if the database was closed?

/ Jonas

Since the close method is not executed immeditely, my assumption was that it 
wouldn't have an impact on the VERSION_CHANGE transaction.  Therefore, whatever 
values where committed as part of the VERSION_CHANGE will remain there after 
the db was closed.

Israel



Re: [XHR] chunked

2011-12-07 Thread Wenbo Zhu
On Wed, Nov 30, 2011 at 7:28 AM, Anne van Kesteren ann...@opera.com wrote:

 A while ago sicking proposed adding chunked support to XMLHttpRequest:

 http://lists.w3.org/Archives/**Public/public-webapps/**
 2011JulSep/0741.htmlhttp://lists.w3.org/Archives/Public/public-webapps/2011JulSep/0741.html
 https://bugzilla.mozilla.org/**show_bug.cgi?id=687087https://bugzilla.mozilla.org/show_bug.cgi?id=687087

 A use case I remember was downloading a large file of some kind that
 presumably can be incrementally rendered as otherwise responseType blob
 should be sufficient. More use cases appreciated. Would help with the
 design.

E.g. voice/image search, translation ... IMHO any single resource that
involves non-trivial processing to produce would fit the use case.



 As for the feature, basically have responseType chunked-text and
 chunked-arraybuffer values and reset rather than update the response
 entity body with each progress event. And make sure that a progress event
 is dispatched when the last fetch event is queued. And make sure that this
 is only available for asynchronous usage.

 Charles asked whether chunked-text was really needed (and whether we
 should have chunked which implies ArrayBuffer instead). Nobody got back
 to him on that. If it is needed, how does it work when you just have some
 of the bytes of a multi-byte character in a single chunk? Fails to decode
 as per the normal algorithm?

When text is consumed as chunked streams, my take is that the application
code has to deal with partial frames, and partial chars are just one
sub-problem. So, I wouldn't consider multi-byte characters a particular
limitation.



 Also, this basically makes it possible to write EventSource on top of
 XMLHttpRequest. Is that acceptable? If it encourages more people to use a
 lower-level API, higher-level optimizations for mobile phones might become
 harder down the road.

At the same time, lower-level APIs that match the underlying wire-protocol
(i.e. HTTP) would be equally important for optimization purposes.

Thanks,
Wenbo



 --
 Anne van Kesteren
 http://annevankesteren.nl/




[XHR] chunked requests

2011-12-07 Thread Wenbo Zhu
One use case that we have which is not currently handled by XMLHttpRequest
is incrementally sending data that takes a long time to generate _from the
client to the server_. For example, if we were to record data from a
microphone, we couldn't upload it in real time to the server with the
current API.

The MediaStreaming spec also mentioned several use cases which would
require streaming request data via an API:
- Sending the locally-produced streams to remote peers and receiving
streams from remote peers.
- Sending arbitrary data to remote peers.

http://www.whatwg.org/specs/web-apps/current-work/multipage/video-conferencing-and-peer-to-peer-communication.html

- Wenbo