[whatwg] Proposed additions to ClientInformation interface

One focus area for HTML5 has been to solidify the concept of "Web  
pages as Web Applications" and to introduce concepts to flesh out this  
new Web Application concept such as the application name, more  
flexible icons, offline data storage, and online/offline discovery.

There is one aspect to this notion of "Web Applications" that is being  
explored by multiple vendors but hasn't been explicitly addressed in  
HTML5 quite yet:  the "stand alone web application."
For the few among you unfamiliar with this idea, the concept is  
running a web application in a dedicated user agent that doesn't have  
the typical chrome, behavior, features, or footprint of a traditional  
browser.

In support of this new area of interest, I propose two new additions  
to the ClientInformation interface as follows:

First:  "readonly attribute boolean standalone;"

This is in the same vein as the window.navigator.onLine property which  
gives authors a great hint on how to change the behavior of their web  
application based on the existence of a network connection.  The  
standalone property would give web application developers a powerful  
hint as to whether or not they are running in a full browser or in a  
more minimalistic, dedicated user agent.  There's a number of things  
they might customize based on this situation such as look, feel, and  
available feature set.

I'd like us to try and avoid the user agent sniffing nightmare that is  
common on the web.  Currently a web application developer has to  
inspect the user agent and other nonstandard window.navigator  
properties to try to guess whether they're running in a full browser  
or a minimalistic interface.  Since this set of properties and user  
agents will keep changing over time, I think it's a prudent move to  
give scripts this simple flag as a future-proof way to make these  
powerful decisions.

Second:  "void makeStandalone();"

Web applications that have been fully designed to behave as stand  
alone applications should be able to announce this fact.   Currently  
web applications would have to state in their page that they are  
"standalone aware" and to instruct users on how they might go about  
creating a standalone version of the page.  I've seen and heard buzz  
that web authors would like a better way.

This is what the makeStandalone() call is about.  The intention behind  
the call is that the user agent would prompt the user about creating a  
standalone application from the current page.  Of course user agents  
would have full flexibility in how they respond to the call such as  
choosing to do nothing, prompting only once for a given domain or URL,  
or prompting only when the user prefers to be prompted.   I imagine  
most user agents would tie the workings of this method to a user  
action, much like popup blocking works currently, so the page could  
only enact the prompt when the user clicks on some control.  I just  
think it's quite valuable to get the tool out there for web  
applications to use.

The exact naming of this method call is up for debate, but I think my  
point is clear.

With my proposals, the ClientInformation interface would look as  
follows:

interface ClientInformation {
   readonly attribute boolean onLine;
   readonly attribute boolean standalone;
   void makeStandalone();
   void registerProtocolHandler(in DOMString protocol, in DOMString  
url, in DOMString title);
   void registerContentHandler(in DOMString mimeType, in DOMString  
url, in DOMString title);
};

Your thoughts?

~Brady Eidson

Received on Friday, 27 June 2008 14:04:45 UTC