[whatwg] Registering protocol handlers
Ian Hickson
ian at hixie.ch
Mon Apr 24 00:57:36 PDT 2006
On Sat, 22 Apr 2006, Christian Biesinger wrote:
> >
> > They can't be checked at the registration point, because the URI might
> > become valid before it is used, and because the networking library
> > might not be able to tell if the URI is valid without fetching it.
> > (It's also not really clear where you draw the line of an "invalid"
> > URI -- is http://192.0.2.812/ an invalid URI?)
>
> Oh, our interpretation of "valid" is different, obviously :) The way I
> used it an invalid URI would never become valid. I meant it
> syntactically only.
So, like, the address in the following HTML:
<button onclick="
navigater.registerContentHandler('http://www.example.com/é', ...);
"/>
...would be invalid? Or not? That changed when the IRI spec came out. I'm
not sure you can guarentee that a URI will always be invalid.
> Anyway, I wonder if it's worth mentioning that malformed URIs should
> never cause an exception to be thrown? (other than lack of %s of course)
Added.
> > > BTW... shouldn't sites have the possibility to unregister
> > > themselves? I as a user would expect a site that has a "register me"
> > > button to also have an "unregister me" button.
> >
> > I would presume the UA would provide this option, not the page.
> > (Similarly, you don't have a Web API to remove a search engine, only
> > to add one.)
>
> Sure, the UA should have that as well. But it feels to me that the page
> should also have it. This API is more likely than the search engine case
> to register pages that require having an account (e.g. subscribe to a
> feed, import a .ics file, send an email (mailto:foo at bar)). Wouldn't it
> be nice if the page could unregister itself when the user deletes their
> account?
I don't know, would it? I don't see the use case. Why would, e.g., Flickr,
ever unregister itself as an image/x-flickr handler? (The only theoretical
case I can see, namely the site changing its server location, seems like a
bad reason -- you should always support the old location, good URIs don't
change.)
> Hm... actually it's possible that we have differing ideas of how the UI
> will look. I am imagining that there will be an option for the user to
> always open that protocol/content type with the specified URL. If this
> is done during registration, where would you as a user expect to
> unregister the URL again? Where you registered it, I would say.
I think that would be a very dangerous option. But in any case, consider
the case for a download today -- you can set the default to always be a
particular app when you download a file, so how do you change the default?
IMHO it would be in the same place.
> But, I don't feel strongly on this point. If this doesn't convince you,
> I'm fine with that :)
I think we should wait until we have more experience before adding the
unregister feature. Adding features is reasonably easy. Removing them is
near-impossible.
> I do suspect that this will lead to inconsistent UI. Some files will go
> to the registered URL, some to the pre-existing handler (local app or
> something). The user may have no idea why.
The same could be said today for clicking on a link. I'm all for making
this better, but I don't see what the spec can do to help.
> > This seems equivalent to what is currently in the spec -- the spec
> > already says that when the UA uses the given URI, it must do so in a
> > particular way. I've added some minor text to reference that more
> > explicitly in the paragraph you mention.
>
> To me, "User agents may do whatever they like" means that there are no
> restrictions. It sounds to me like they can ignore everything that was
> said before. I guess leave this as-is if you don't think people will
> read it that way.
Clearly people will, if you did. :-)
I've changed it to:
User agents may, within the constraints described in this
seciton, do whatever they like [...]
> > > - The request may have required certain cookies
> > > - The request may have required certain authentication headers
> > > - The request may only be possible from certain IP ranges
> >
> > In other words, the content might be privileged -- in which case you
> > definitely don't want to send it to a remote site!
>
> No, you may still want to send it to a remote site. Consider this: A
> university's information system may allow exporting a student's courses
> for a semester as an ICS file. A user may well not mind sending that ics
> file to Google Calendar, but accessing that export functionality does
> require authentication of course.
I think for this case the university should either offer a "private" URI
that can be forwarded to the remote site (much like how Google Calendar
has a "private URI" for your ICS file), or the user should download the
file, go to the other site, and upload it.
> > Leaking intranet URIs is a lot less dangerous than leaking intranet
> > _content_, though.
>
> Yeah. That's true.
>
> > No, it doesn't require anything. The spec doesn't say when you use
> > this --
>
> Convenient, isn't it?
>
> > in particular, it doesn't say you should use these options for the
> > result of non-GET or authenticated requests. It even says that maybe
> > you _shouldn't_ use it for authenticated requests, and I've now added
> > a sentence that says you musn't use it for non-GET resources.
>
> Again, I fear this will lead to inconsistent UI. That you don't say when
> it should be used is also not ideal, but I guess unavoidable as you
> don't want to require a certain UI.
I don't see how we can require a certain UI. User Interface is how
browsers differentiate from each other.
> Let me ask you: Does a spec with this many unspecified details satisfy
> you?
Yes, I wouldn't have written it otherwise. :-) This is not a UI spec --
this is a spec that is to ensure one thing and one thing only, namely that
the same basic feature can be offered for any browser without having to
browser-sniff.
Specs don't say how, e.g., <select> elements should work, other than the
fact that they should offer certain options. Whether it's control-click or
command-click or whether it's a drop down or a list or whether it's a
pop-up, is all up to the UA. You can't require a particular UI, because
some applications (e.g. EmacsSpeak) have radically different UIs than
others (e.g. Opera on a cell phone).
> > The main use cases I see here are for feeds, and for those you
> > definitely want to send the URI. Same with, e.g., an iCalendar feed.
>
> Maybe. The iCalendar file in question may not be something that changes
> though. It seems to me like this is useful only for very few use cases,
> limited basically to feeds.
>
> I'm not happy with registerContentHandler at all.
I'm not sure how to address your issues. What text would you like to see
be added to the spec?
--
Ian Hickson U+1047E )\._.,--....,'``. fL
http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,.
Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
More information about the whatwg
mailing list