- From: Boris Zbarsky <bzbarsky@MIT.EDU>
- Date: Sat, 28 Mar 2009 10:35:08 -0400
Kartikaya Gupta wrote: > Do you agree that null and empty string should behave differently for "search" and "hash"? No, not really. Are they treated differently in current UAs (past null being treated as "null", possibly)? > To me, it doesn't make sense to treat null and the empty string differently for some components but not others. Agreed that it would be confusing from a web developer point of view. Of course from a URI point of view some URI components can be empty but present or can be not present at all, as you point out above. >> The latter. The Gecko-internal URI code does in fact throw on a lot of >> these setters, and the HTMLAnchorElement methods catch and eat these >> exceptions, very much on purpose. > > Ok. I'll assume there is valid reasoning behind that. Replace all the "throw"s with "be silently ignored" in my proposal. For what it's worth, I suspect that the silent fail is somewhat interoperably implemented already. >> No, but you can pass it off to a helper application. In any case, my >> comment above was more concerned with your proposal that one should be >> able to create a non-authority http: URI than about unknown schemes. > > I don't think my proposal allowed creation of a non-authority http: URI. I said that 'Attempts to set "host" to null for a scheme known to require an authority should throw.' Since http is a scheme known to require an authority, you wouldn't be able to null out the authority. Or set it to the empty string, which has the same effect. Your proposal treats those differently. > - Attempts to set "protocol" to null, the empty string, or anything containing invalid characters (i.e. not in the "scheme" production of RFC3986) should throw. Setting it to a scheme known to require an authority when the authority component is null should also throw. Setting it to a scheme known to require no authority when the authority component is non-null should also throw. Setting it to anything else should be allowed and should update the scheme component of the underlying URI. Honestly, I can't think of a sane way to define a "protocol" setter that changes from one URI "type" to another (type being "has authority", "doesn't have authority", "unknown"). Actually, as far as Gecko is concerned there are 5 different types; see the three constants defined at http://mxr.mozilla.org/mozilla-central/source/netwerk/base/public/nsIStandardURL.idl#56 for three, plus "not a hierarchichal URI" (which never does the fixup from scheme:foo to scheme://foo) and "unknown" (treated like "not a hierarchical URI"). -Boris
Received on Saturday, 28 March 2009 07:35:08 UTC