Re: [whatwg] A mechanism to improve form autofill

2012-08-03 Thread James Hawkins
On Fri, Aug 3, 2012 at 5:31 AM, Aryeh Gregor a...@aryeh.name wrote:

 On Thu, Aug 2, 2012 at 9:42 PM, Ian Hickson i...@hixie.ch wrote:
  On Thu, 26 Jul 2012, Smylers wrote:
  Ian Hickson writes:
Also, I do not understand why we have credit cards types. Is anyone
willing to have his credit cards information saved locally?
  
   Sure, why not?
 
  I am too, but I can understand why people who share their computer (and
  user accounts) with others wouldn't want their card numbers saving.
 
  That's a UA configuration issue, presumably. (Similar to saving
  passwords.)

 In fact, Chrome already autodetects credit card numbers for autofill
 (presumably based on a heuristic) and has a special dialog for whether
 to remember them, similar to the password-remembering dialog.  At
 chrome://chrome/settings/autofill, there are fields for both
 addresses and credit card numbers.  This is documented here:
 
 https://support.google.com/chrome/bin/answer.py?hl=enanswer=142893p=settings_autofill
 
  IIRC, one option when it asks you to remember credit cards is don't
 ever remember credit card numbers -- although I'm not sure, since I
 think I picked it and thus haven't seen the dialog in a long time.  :)


In practice the credit card portion of Chrome Autofill is not very useful
since most (hand-wavy) sites that contain credit card fields in forms use
autocomplete=off, which Chrome respects.  There is a third-party Chrome
extension which removes autocomplete=off to solve this issue.

James


Re: [whatwg] Proposal: Deprecate registerProtocolHandler/registerContentHandler via Web Intents

2012-02-21 Thread James Hawkins
Thanks for your feedback, Bjartur.

On Tue, Feb 21, 2012 at 9:30 AM, Bjartur Thorlacius svartma...@gmail.comwrote:

 Þann mið 15.feb 2012 23:39, skrifaði James Hawkins:

  * If |scheme| is specified, |action| *should*  (must?) be ignored.

 Why would you forbid distinguishing between actions on URIs? Postal and
 retrieval of mail, for example, are quite distinct actions. As are
 modification and retrieval of documents.


I'm not sure if the proposal was explicit enough, but for the RPH-esque
functionality in Web Intents, we activate WI in the same circumstances RPH
is activated, which is when links are activated in a page.  Can you
elucidate how the scenarios you listed could be handled?  Note these
scenarios are above and beyond RPH, but we're not trying to make the API
self-limiting.

Thanks,
James


Re: [whatwg] Proposal: Deprecate registerProtocolHandler/registerContentHandler via Web Intents

2012-02-21 Thread James Hawkins
On Tue, Feb 21, 2012 at 11:31 AM, Bjartur Thorlacius
svartma...@gmail.com wrote:
 Þann þri 21.feb 2012 18:44, skrifaði James Hawkins:

 I'm not sure if the proposal was explicit enough, but for the RPH-esque
 functionality in Web Intents, we activate WI in the same circumstances
 RPH is activated, which is when links are activated in a page.  Can you
 elucidate how the scenarios you listed could be handled?  Note these
 scenarios are above and beyond RPH, but we're not trying to make the API
 self-limiting.

 Windows Explorer (the file manager) does for example offer users to edit
 images upon right-click. I worry that if URI scheme handlers need not only
 take care of fetching but also of presentation, other actions than view will
 be unnecessarily hard to implement. Thus I figure retrieval and presentation
 must be separated.

 (view (fetch uniform:resource/locator))
 or
 (edit (fetch uniform:resource/locator))

 instead of
 (fetch-and-view uniform:resource/locator)

Is this use case not fully handled by the UA specifying the
appropriate action when building the intent, e.g., the user
right-clicks on an image in a page and the UA constructs context menu
items for edit/share/etc. action?


Re: [whatwg] Web Intents with System-Wide Sharing Features

2012-02-20 Thread James Hawkins
Definitely, though I'd limit it to a MAY recommendation.

James

On Mon, Feb 20, 2012 at 9:08 PM, Rodger Combs rodger.co...@gmail.com wrote:
 Mac OSX 10.8 (Mountain Lion), along with most mobile operating systems, has a 
 system-wide sharing functionality. Could the Web Intents API add a SHOULD 
 or MAY clause for adding web intents to the system-wide share sheet or 
 similar functionality, rather than just on the web? It fits with a few other 
 parts of the HTML5 spec that move towards OS integration (e.g. notifications, 
 which would fit well with Android/iOS/OSX10.8's built-in notification 
 centers).


[whatwg] Proposal: Deprecate registerProtocolHandler/registerContentHandler via Web Intents

2012-02-15 Thread James Hawkins
We, the designers of the Web Intents draft API, have always seen Web
Intents as a superset of the functionality provided by
registerProtocolHandler (RPH) and registerContentHandler (RCH).  To
follow this to the logical conclusion, we should be able to provide
functionally equivalent counterparts to RPH/RCH in Web Intents.  This
proposal provides a means of deprecating RPH/RCH, replacing this
functionality with equivalent functionality from Web Intents.

For reference RPH/RCH are documented at [1].  The current draft of the
Web Intents API is at [2].


registerProtocolHandler
===

The registerProtocolHandler() method allows Web sites to register
themselves as possible handlers for particular schemes.

 void registerProtocolHandler(DOMString scheme, DOMString url, DOMString title);

We propose the addition of a 'scheme' attribute to the Web Intents
service registration to handle this use case.

 intent scheme=mailto

* |scheme| is the same as specified for RPH.
* If |scheme| is specified, |action| *should* (must?) be ignored.

Thus, with this proposal, when the user clicks a mailto:; link, the
UA will internally create a new intent containing the scheme and the
URL parameters as the data in the payload.  This payload will be
delivered to the service the user picks.  Note we’re considering
specifying the UA may optionally decode the parameters into the
|extras| object.

Given the following anchor on mypage.com:

a href=mailto:m...@mypage.com?bcc=supp...@mypage.comsubject=testing;

the UA will deliver the following payload to the selected service:

{
  type: “text/plain”,
  scheme: “mailto”,
  data: “mailto:m...@mypage.com?bcc=supp...@mypage.comsubject=testing”,
  extras: {
bcc: “supp...@mypage.com”,
subject: “testing” }
}

Open question: should we use the same whitelist of schemes used by RPH?


registerContentHandler
===

The registerContentHandler() method allows Web sites to register
themselves as possible handlers for content in a particular MIME type.

 void registerContentHandler(DOMString mimeType, DOMString url,
DOMString title);

We propose modifying the relationship between the |action| and |type|
attributes to specify that if |action| is not specified and |type| is
specified, the action is implicitly 'view' and the service must be
shown in the picker when the UA encounters content of matching MIME
type.

 intent type=image/png

The above registration would register the service to handle content of
MIME type image/png.

When the UA loads a resource of type image/png, it sends the type
and content to the service in the payload.

{
  data: pngImageContent,
  type: “image/png”
}


isProtocolHandlerRegistered / isContentHandlerRegistered
=

There are serious fingerprinting issues with these methods, and when
contemplating analogous methods for Web Intents, we thought long and
hard about the fingerprinting issue.

As spec'ed a site could call registerProtocolHandler('web+uniqueID',
...) where uniqueID is unique to a user.  The site could then call
isProtocolHandlerRegistered with that matching 'web+uniqueID' to
verify who the user is.

One of the use cases for these methods is to allow a client site the
ability to show alternative UI for protocols/content that are not
capable of being handled by any service.  Web Intents also requires a
solution for this use case, as showing an empty picker* is a
non-starter.

* The picker refers to the UI in the UA that shows registered services
for a given intent, allowing the user to pick which service to
activate.

Instead of creating analogous functionality of these methods for Web
Intents, we decided to tackle the problem state of an empty picker.
The proposed solution is to allow a client site to suggest a service
(URL) that is displayed by the UA in the picker.  The
|suggestedService| parameter is optional.

 startActivity(..., suggestedService);

In addition declarative registration removes the need to fashion
registration as:

if (!isProtocolHandlerRegistered(x))
  registerProtocolHandler(x);

The work of maintaining that state is displaced to the UA.


unregisterProtocolHandler / unregisterContentHandler
===

The analogous functionality for these methods in Web Intents already
exists and is the same as the removal of any type of service: remove
the declarative registration from the content, and the UA will
unregister the service as a handler.


[1] 
http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#custom-handlers
[2] http://dvcs.w3.org/hg/web-intents/raw-file/tip/spec/Overview.html

Thanks,
James


Re: [whatwg] Proposal: intent tag for Web Intents API

2011-12-12 Thread James Hawkins
On Thu, Dec 8, 2011 at 12:43 PM, Ian Hickson i...@hixie.ch wrote:
 On Tue, 6 Dec 2011, James Hawkins wrote:

 One of the critical pieces of the API is a declarative registration
 which allows sites to declare which intents they may be registered for.
 The current draft of the API calls for a new HTML tag, intent, the
 attributes of which describe the service registration: [...]

 Separate from the issue of what precisely the element should look like, I
 wonder if you could expand on the precise use case for the element. In
 particular, I'm interested in whether this use case might also apply to
 some of the register*Handler() methods we have now.

 Ideally, it would be good to have the current protocol and content type
 handlers and the Web Intent stuff all use a coherent and consistent API.


Absolutely, we're very keen on providing RPH/RCH functionality via Web
Intents.  Let me start with the use case for the intent element, then
I'll get to R*H.

*** Use cases ***

The intent element serves as a declaration of functionality of a web
app.  For example, Twitter exposes share functionality, Picnik exposes
editing functionality, Dropbox exposes pick/save functionality, etc.

Once the user accepts these registrations (gives permission), the UA
can connect a client requesting a given set of functionality to the
service that previously exposed that functionality.

The fact that the element is declarative is a win wrt sites that may
wish to crawl the web to index which web app handles which
functionality.  See www.openintents.org/en/intentstable for an example
of this for Android Intents.

*** RPH/RCH ***

registerProtocolHandler gives services a way to imperatively expose
functionality that is to specific to protocols.  Web Intents will
handle this use case by adding a scheme/URL pattern attribute to the
intent registration.  Android Intents exposes scheme/URL pattern
filtering as well, so this addition moves Web Intents that much closer
to its model API.

navigator.registerProtocolHandler(mailto,
https://www.example.com/?uri=%s;, Mail Service);

becomes

intent scheme=mailto title=Mail Service
 Click here to install our Mail Service application!
/intent

registerContentHandler allows services to imperatively expose
functionality that is specific to content types.  Web Intents will
provide this use case by special-casing the intent element when no
action is provided for a particular MIME type.

navigator.registerContentHandler(image/png,
http://www.example.com/?foo=%s;, My Image Viewer);

becomes

intent type=image/png title=My Image Viewer
 Click here to install our Image Viewer application!
/intent

Of course the fallback content is optional and determined by the
service, but we believe it's a great way to expose fallback
functionality via installable extensions/apps/whatnot.

*** Advantages ***

Client-side handling.  For R*H, ?foo=%s normally requires server side
processing.  With Web Intents, this data is passed completely
client-side on the intent object.

Wildcard matching.  R*H does not allow wildcard matching, where as Web
Intents would allow a service to register for image/* in one succinct
registration.

Thanks,
James


[whatwg] Proposal: intent tag for Web Intents API

2011-12-06 Thread James Hawkins
*** Overview ***

The W3C Web Intents Task Force is working on the Web Intents API at
public-web-inte...@w3.org: see the bottom of this email for details.

Web Intents is a web platform API that provides client-side service
discovery and inter-application communication.  Services register to
handle high-level actions (e.g., share, edit, pick), while clients
invoke an intent (action + type + data).  For example twitter.com may
allow the user to register the site as a provider of the 'share'
action.

One of the critical pieces of the API is a declarative registration
which allows sites to declare which intents they may be registered
for.  The current draft of the API calls for a new HTML tag, intent,
the attributes of which describe the service registration:

!ENTITY % Disposition {window|inline}

!ELEMENT INTENT - O EMPTY  -- a Web Intents registration -
!ATTLIST INTENT
 action  %URI;  #REQUIRED -- URI specifying action --
 type%ContentTypes; #IMPLIED  -- advisory content types --
 href%URI;  #IMPLIED  -- URI for linked resource --
 title   %i18n; #IMPLIED  -- service title --
 disposition %Disposition   window-- where the service is created --
 

We settled on the intent tag after reviewing several alternatives
(see below).  The intent tag offers the greatest ease-of-use for
developers, and the ability to crawl/index sites that support Intents.

One of the cool things about the declarative syntax is that it allows
one to create sites (like http://www.openintents.org/en/intentstable)
which serve as a database of services that support intents.  We're
currently adding a section on webintents.org that allows the developer
of a service to be add his service to the registry by entering the
service URL, which we then crawl and index the intents.

One could also imagine exposing intent services using search engine technology.

*** Proposal ***

Add the intent tag to the HTML spec.

*** Alternatives ***

Imperative DOM registration: registerIntentHandler(...).
Pros:
 * Analogous to registerProtocolHandler, registerContentHandler.
 * Doesn't require addition to the HTML spec.
Cons:
 * Not declarative, not as easy to index.
 * Timing requirements unclear (Is the registration removed if a
service does not call registerIntentHandler() on the next visit? If so
how long does the UA need to wait to 'be sure'?)
 * Heavier footprint in the DOM API.
 * Less self-documenting code:

registerIntentHandler('webintents.org/share',
 'text/uri-list',
 'handler.html',
 'My Sharer',
 'inline');

intent action=webintents.org
 type=text/uri-list
 href=handler.html
 title=My Sharer
 disposition=inline
/intent

link rel=intents:
Pros:
 * Declarative.
Cons:
 * link rel has become a dumping ground for these type of usages.
 * Need to modify HTML spec to add appropriate attributes.

CRX-less Web Apps
(http://code.google.com/intl/en-US/chrome/apps/docs/no_crx.html):
Pros:
 * Declarative.
Cons:
 * Not standardized.
 * Requires extra level of indirection.

*** API Status ***

Within the W3C the Webapps WG is rechartering to include Web Intents
as a joint-deliverable with the DAP WG (which already had Intents in
its charter).  Discussion is taking place about the API at
public-web-inte...@w3.org.

The draft API is current hosted at [1], though I'm working feverishly
to convert this into a W3C-style draft format.

[1] 
https://sites.google.com/a/chromium.org/dev/developers/design-documents/webintentsapi

Our use cases, JavaScript shim, and example pages are hosted at
http://webintents.org.

Thanks,
James Hawkins


Re: [whatwg] Proposal: intent tag for Web Intents API

2011-12-06 Thread James Hawkins
To clarify, my use of the word 'we' below is we the designers of the
API, not the participants of the Web Intents TF.

As stated in the 'API Status' section below, discussions about Web
Intents are ongoing in the TF.  In addition, note that nothing is
finalized in the Web Intents API as of yet.

Since the registration aspect of the current draft of the API requires
the addition of a new tag, I decided to hold that discussion on the
appropriate ML, namely this ML.

Thanks,
James

On Tue, Dec 6, 2011 at 10:00 AM, James Hawkins jhawk...@google.com wrote:
 *** Overview ***

 The W3C Web Intents Task Force is working on the Web Intents API at
 public-web-inte...@w3.org: see the bottom of this email for details.

 Web Intents is a web platform API that provides client-side service
 discovery and inter-application communication.  Services register to
 handle high-level actions (e.g., share, edit, pick), while clients
 invoke an intent (action + type + data).  For example twitter.com may
 allow the user to register the site as a provider of the 'share'
 action.

 One of the critical pieces of the API is a declarative registration
 which allows sites to declare which intents they may be registered
 for.  The current draft of the API calls for a new HTML tag, intent,
 the attributes of which describe the service registration:

 !ENTITY % Disposition {window|inline}

 !ELEMENT INTENT - O EMPTY      -- a Web Intents registration -
 !ATTLIST INTENT
  action      %URI;          #REQUIRED -- URI specifying action --
  type        %ContentTypes; #IMPLIED  -- advisory content types --
  href        %URI;          #IMPLIED  -- URI for linked resource --
  title       %i18n;         #IMPLIED  -- service title --
  disposition %Disposition   window    -- where the service is created --
  

 We settled on the intent tag after reviewing several alternatives
 (see below).  The intent tag offers the greatest ease-of-use for
 developers, and the ability to crawl/index sites that support Intents.

 One of the cool things about the declarative syntax is that it allows
 one to create sites (like http://www.openintents.org/en/intentstable)
 which serve as a database of services that support intents.  We're
 currently adding a section on webintents.org that allows the developer
 of a service to be add his service to the registry by entering the
 service URL, which we then crawl and index the intents.

 One could also imagine exposing intent services using search engine 
 technology.

 *** Proposal ***

 Add the intent tag to the HTML spec.

 *** Alternatives ***

 Imperative DOM registration: registerIntentHandler(...).
 Pros:
  * Analogous to registerProtocolHandler, registerContentHandler.
  * Doesn't require addition to the HTML spec.
 Cons:
  * Not declarative, not as easy to index.
  * Timing requirements unclear (Is the registration removed if a
 service does not call registerIntentHandler() on the next visit? If so
 how long does the UA need to wait to 'be sure'?)
  * Heavier footprint in the DOM API.
  * Less self-documenting code:

 registerIntentHandler('webintents.org/share',
                             'text/uri-list',
                             'handler.html',
                             'My Sharer',
                             'inline');

 intent action=webintents.org
         type=text/uri-list
         href=handler.html
         title=My Sharer
         disposition=inline
 /intent

 link rel=intents:
 Pros:
  * Declarative.
 Cons:
  * link rel has become a dumping ground for these type of usages.
  * Need to modify HTML spec to add appropriate attributes.

 CRX-less Web Apps
 (http://code.google.com/intl/en-US/chrome/apps/docs/no_crx.html):
 Pros:
  * Declarative.
 Cons:
  * Not standardized.
  * Requires extra level of indirection.

 *** API Status ***

 Within the W3C the Webapps WG is rechartering to include Web Intents
 as a joint-deliverable with the DAP WG (which already had Intents in
 its charter).  Discussion is taking place about the API at
 public-web-inte...@w3.org.

 The draft API is current hosted at [1], though I'm working feverishly
 to convert this into a W3C-style draft format.

 [1] 
 https://sites.google.com/a/chromium.org/dev/developers/design-documents/webintentsapi

 Our use cases, JavaScript shim, and example pages are hosted at
 http://webintents.org.

 Thanks,
 James Hawkins


Re: [whatwg] Proposal: intent tag for Web Intents API

2011-12-06 Thread James Hawkins
On Tue, Dec 6, 2011 at 1:08 PM, James Graham jgra...@opera.com wrote:
 On Tue, 6 Dec 2011, Anne van Kesteren wrote:

 Especially changing the way head is parsed is hairy. Every new element
 we introduce there will cause a body to be implied before it in down-level
 clients. That's very problematic.


 Yes, I consider adding new elements to head to be very very bad for this
 reason. Breaking DOM consistency between supporting and non-supporting
 browsers can cause adding an intent to cause unrelated breakage (e.g. by
 changing document.body.firstChild).

Originally we envisioned using a self-closing tag placed in head for
the intent tag; however, we're now leaning towards not using
self-closing and having the tag be placed in the body with fallback
content, e.g., to install an extension to provide similar
functionality.

intent action=webintents.org/share
  Click here to install our extension that implements sharing!
/intent

What are your thoughts on this route?

James


Re: [whatwg] Proposal: intent tag for Web Intents API

2011-12-06 Thread James Hawkins
On Tue, Dec 6, 2011 at 1:16 PM, Tab Atkins Jr. jackalm...@gmail.com wrote:
 On Tue, Dec 6, 2011 at 1:14 PM, James Hawkins jhawk...@google.com wrote:
 Originally we envisioned using a self-closing tag placed in head for
 the intent tag; however, we're now leaning towards not using
 self-closing and having the tag be placed in the body with fallback
 content, e.g., to install an extension to provide similar
 functionality.

 intent action=webintents.org/share
  Click here to install our extension that implements sharing!
 /intent

 What are your thoughts on this route?

 So, when the intent tag is supported, it's not displayed at all, and
 instead solely handled by the browser?  This seems okay to me.


Correct.