[whatwg] WebIDL vs HTML5 storage changes

Brady Eidson beidson at apple.com
Sun May 18 15:18:51 PDT 2008


A little while ago, this change - http://html5.org/tools/web-apps-tracker?from=1429&to=1430 
  - was meant to "update the spec for consistency with WebIDL"

In this change, the following passage was removed from the Storage  
section:

"In the ECMAScript DOM binding, enumerating a Storage object must  
enumerate through the currently stored keys in the list the object is  
associated with. (It must not enumerate the values or the actual  
members of the interface). In the ECMAScript DOM binding, Storage  
objects must support dereferencing such that getting a property that  
is not a member of the object (i.e. is neither a member of the Storage  
interface nor of Object) must invoke the getItem() method with the  
property's name as the argument, and setting such a property must  
invoke the setItem() method with the property's name as the first  
argument and the given value as the second argument."

Shorty thereafter, the declaration of the Storage interface was  
changed to the following:

interface Storage {
     readonly attribute unsigned long length;
     [IndexGetter] DOMString key(in unsigned long index);
     [NameGetter] DOMString getItem(in DOMString key);
     [NameSetter] void setItem(in DOMString key, in DOMString data);
     [XXX] void removeItem(in DOMString key);
     void clear();
};

I assumed that the WebIDL descriptions of [IndexGetter], [NameGetter],  
and [NameSetter] would keep the specified functionality in tact, but  
it appears this is *not* the case.
Or by reading http://dev.w3.org/2006/webapi/Binding4DOM/ I can't find  
where it is the case...

Does someone know what is up with this?

While I'm on the topic, I'm also curious about that [XXX] placeholder.
There's a bug in WebKit's bugzilla pointing out that the IE8 beta and  
Firefox 2 both support  `delete storage.keyName` syntax as an alias  
for `storage.removeItem(keyName)`
I'm taking a guess here and assuming supporting the `delete` syntax is  
the implied concept behind [XXX]

Not that this mailing list has direct impact on the WebIDL spec, but I  
would suggest [NameDeleter] or [NameRemover] as a placeholder in the  
HTML5 spec since it fits in with the NameGetter/Setter family of  
operations quite nicely.

~Brady




More information about the whatwg mailing list