- From: Zoltan Kis via GitHub <sysbot+gh@w3.org>
- Date: Mon, 26 Oct 2015 15:22:37 +0000
- To: public-web-nfc@w3.org
However, it is tricky to handle errors with the merged model. If you have multiple adapters, and a push, or setting a watch succeeds on some of them and fails on others, how do we handle the situation? If we say succeeding on any adapter is success, from where would the user know which adapter is usable? Without explicit adapter enumeration and management (which I would like to avoid), what is better: 1. making the user, or the UA select an adapter, then every NFC operation belongs to that adapter, or 2. using all adapters transparently (those that have a connected device), and consider any success a success and resolve the Promise, or 3. using all adapters transparently (those that have a connected device), and consider any failure a failure and reject the Promise. Note that 1. is possible with the navigator.nfc model as well, e.g. 1.a.) by using a Web NFC specific policy, like: - select the built-in adapter if no external is connected and there is only one built-in adapter, or - select the connected adapter if only one external adapter is connected, - otherwise show a dialog when ```nfc.push()``` or ```nfc.watch()``` is invoked first time (but then you cannot change it until the page is reloaded), or 1.b.) by using an explicit (new) ```nfc.selectAdapter()``` method which triggers a selection dialog, but the default policy would be active (i.e. there always would be a default adapter, if there is any). Please choose between 1.a., 1.b., 2, 3, or propose another policy. Personally I would be most comfortable with 1.b. (or 1.a. in the first version), and I would like to avoid using all the adapters in parallel (2 and 3). In this case the API would look like: ```javascript partial interface Navigator { readonly attribute NFC nfc; }; interface NFC { Promise<void> push(NFCMessage message, optional NFCPushOptions options); void cancelPush(NFCPushTarget target); Promise<long> watch(NFCWatchOptions options, MessageCallback callback); Promise<void> unwatch(long id); // Promise<void> selectAdapter(); // triggers a dialog }; ``` (NB. The other proposed changes, e.g. content handling and removing push target etc. will be discussed separately) -- GitHub Notif of comment by zolkis See https://github.com/w3c/web-nfc/issues/67#issuecomment-151172158
Received on Monday, 26 October 2015 15:22:38 UTC