- From: Scott Wilson <scott.bradley.wilson@gmail.com>
- Date: Fri, 21 Aug 2009 12:10:37 +0100
- To: public-webapps WG <public-webapps@w3.org>
- Message-Id: <AF1A76A7-CBD2-48A9-8AE1-A306B73B3AC9@gmail.com>
Metadata Attributes and the Storage Area
================================
I don't think its clear from the spec if metadata attributes are
within the scope of widget.preferences and must be stored in the same
storage area.
E.g. Does widget.preferences.getItem("name") == widget.name? if not,
then why does a script calling widget.preferences.setItem("name",
"blah") need the UA to throw an exception?
Some options:
1. metadata attributes must be treated as equivalent to preferences,
and in fact should be able to be accessed in the same manner;
2. metadata attributes are not the same as preferences, and their
storage should not conflict with preferences. Therefore preferences
with the same keys as metadata attribute names are fine.
3. metadata attributes should not be made accessible using
widget.preferences, but must be treated as being stored in the same
storage area, and potentially have conflicting keys; therefore
preferences with the same keys as metadata attribute names are
disallowed.
(We currently implement using option 1, but would be happy with option
2. I don't think option 3 has much merit)
Read-only Metadata Attributes
========================
For read-only attributes, I note that there is no actual conformance
statement. I suggest adding a nice broad one in 6.1, to allow more UAs
to reach conformance:
"A User Agent SHOULD take reasonable steps to prevent author scripts
from modifying Metadata Attributes. Where it is not practical for a
User Agent to prevent an author script setting or clearing a Metadata
Attribute during runtime, the User Agent MUST NOT persist any such
modifications for further instantiations of the Widget."
So a web browser implementing the spec can declare the attributes in
the Window and make them read-only as it controls the environment, and
Wookie can just not save any changes beyond the scope of the current
browser session.
Section 5.1 and "syntactic sugar"
==========================
Section 5.1, para 4 reads:
"Upon invocation of the setItem() or removeItem() method by an author
script on a protected key, user agent must throw a
NO_MODIFICATION_ALLOWED_ERRexception. The NO_MODIFICATION_ALLOWED_ERR
is defined in the [DOM3Core] specification."
OK, this is fine, we can implement this. However, what about:
widget.preferences.blah = "new value"; // where "blah" is a read-only
key
We really don't have any way to prevent this happening or throwing an
exception. Luckily for us the conformance statement above doesn't
mention it, which means we don't have to!
However I don't think this was the intention - it just shows one of
the problems with the "syntactic sugar" interpretation of WebStorage.
For any UA other than a browser, you really don't get the option to
protect exposed javascript properties.
I suggest changing the example in 6.4.2 to use getItem(), and adding a
note re: alternative syntax.
Personally I'd rather exclude them for the sake of interoperability.
If not, 5.1 para 4 & 6.4 para 4 need changing to cover semantically-
equivalent operations using alternative syntaxes; however unless the
conformance requirement is reworded as per my suggestion above for
read-only metadata attributes, we probably have to give up any hope of
ever conforming to the spec :-(
S
Attachments
- application/pkcs7-signature attachment: smime.p7s
Received on Friday, 21 August 2009 11:11:32 UTC