WebAPI/Inter App Communication Alt proposal: Difference between revisions

no edit summary
No edit summary
 
(9 intermediate revisions by 4 users not shown)
Line 1: Line 1:
= Description =
= Description =


This proposal is just a tweaked version of the [https://wiki.mozilla.org/WebAPI/Inter_App_Communication Inter App Communication API]. Its description, intend and use cases do not defer from the previous proposal, only the API does. See [https://bugzilla.mozilla.org/show_bug.cgi?id=876397 bug 876397] for implementation.
This proposal is just a tweaked version of the [https://wiki.mozilla.org/WebAPI/Inter_App_Communication Inter App Communication API]. Its description, intent, and use cases do not defer from the previous proposal, only the API does. See [https://bugzilla.mozilla.org/show_bug.cgi?id=876397 bug 876397] for implementation.


= API =
= API =
Line 25: Line 25:
* ''rules'' (optional) is an object containing a set of constraints for the requested connection. Only apps fulfilling these constraints will receive a connection request. These rules may contain:
* ''rules'' (optional) is an object containing a set of constraints for the requested connection. Only apps fulfilling these constraints will receive a connection request. These rules may contain:
** ''minimumAccessLevel'' is the minimum level of access (one of https://developer.mozilla.org/en-US/docs/Web/Apps/Manifest#type) that the subscriber app requires in order to be able to receive the connection request. The default value will be 'web'.
** ''minimumAccessLevel'' is the minimum level of access (one of https://developer.mozilla.org/en-US/docs/Web/Apps/Manifest#type) that the subscriber app requires in order to be able to receive the connection request. The default value will be 'web'.
** ''manifestURLs'' (array) can be used to set specific subscribers by a list of manifestURLs.
** ''developers'' (array) list of objects identifying app authors whose apps are allowed to receive a connection request.
** ''installOrigins'' (array) list of install origins from where subscriber apps should have been installed. Since certified apps has not a ''valid'' install origin, these constraint does not apply to them.
** ''installOrigins'' (array) list of install origins from where subscriber apps should have been installed. Since certified apps has not a ''valid'' install origin, these constraint does not apply to them.


Line 41: Line 39:
         'rules': {
         'rules': {
           'minimumAccessLevel': 'web',
           'minimumAccessLevel': 'web',
          'manifestURLs': ['manifestURL_1', 'manifestURL_n'],
           'installOrigins': ['install_origin_1', 'install_origin_n']
           'installOrigins': ['install_origin_1', 'install_origin_n'],
          'developers': [{
            'name': 'developer_name',
            'url': 'developer_url'
          }]
         }
         }
       },
       },
Line 62: Line 55:
* ''rules'' is an object containing a set of constraints to be fulfilled by connection requesters. These rules may contain:
* ''rules'' is an object containing a set of constraints to be fulfilled by connection requesters. These rules may contain:
** ''minimumAccessLevel'' is the minimum level of access (one of https://developer.mozilla.org/en-US/docs/Web/Apps/Manifest#type) that the requester app requires in order to be able to send a connection request. The default value will be 'web'.
** ''minimumAccessLevel'' is the minimum level of access (one of https://developer.mozilla.org/en-US/docs/Web/Apps/Manifest#type) that the requester app requires in order to be able to send a connection request. The default value will be 'web'.
** ''manifestURLs'' (array) can be used to set specific requesters by a list of manifestURLs.
** ''developers'' (array) list of objects identifying app authors whose apps are allowed to send connection requests.
** ''installOrigins'' (array) list of install origins from where the requester apps should have been installed. Since certified apps has not a ''valid'' install origin, these constraint does not apply to them.
** ''installOrigins'' (array) list of install origins from where the requester apps should have been installed. Since certified apps has not a ''valid'' install origin, these constraint does not apply to them.


Line 136: Line 127:
where it advertises itself as able to receive connections through the 'musictrack' keyword, requested by apps installed from the Firefox Marketplace and handled within the ''musicmanager.html'' page.
where it advertises itself as able to receive connections through the 'musictrack' keyword, requested by apps installed from the Firefox Marketplace and handled within the ''musicmanager.html'' page.


On the other side, the Gaia Music app that wants to be controlled from the lockscreen (and only from there) should add the following 'connect' field to its manifest:
On the other side, the Gaia Music app that wants to be controlled from the lockscreen (and only from there) should add the following 'connections' field to its manifest:
   {
   {
     'name': 'Music',
     'name': 'Music',
Line 144: Line 135:
         'description': 'Play, pause and stop music tracks',
         'description': 'Play, pause and stop music tracks',
         'rules': {
         'rules': {
          'manifestURLs': ['app://system.gaiamobile.org/manifest.webapp']
         }
         }
       }
       }
Line 216: Line 206:
  });
  });


A similar connection request coming from Sonbirdy would also be allowed by the platform, cause we said that this app was installed from the Firefox Marketplace. However a connection request coming from iTunos would be rejected by the platform, since this app is unprivileged web content installed from an unknown source non listed within the lockscreen app rules. This request will not trigger any system messages and so the subscriber won't ever be awake because of it (in this case the receiver (System app) is already live though).
A similar connection request coming from Sonbirdy would also be allowed by the platform, cause we said that this app was installed from the Firefox Marketplace. However a connection request coming from iTunos would be rejected by the platform, since this app is unprivileged web content installed from an unknown source non listed within the lockscreen app rules. This request will not trigger any system messages and so the subscriber won't ever be awake because of it (in this case the subscriber (System app) is already live though).


=== Music controls in the lockscreen ===
=== Music controls in the lockscreen ===
Line 222: Line 212:
The lockscreen, in this example, wants to control '''only''' (no reasons, just an example) the music from the Gaia Music app (known origin). Once the lockscreen is ready, it sends a connection request of this kind:
The lockscreen, in this example, wants to control '''only''' (no reasons, just an example) the music from the Gaia Music app (known origin). Once the lockscreen is ready, it sends a connection request of this kind:


  connect('musicremotecontrol', {
  connect('musicremotecontrol').then((function onConnectionAccepted(ports) {
  manifestURLs: ['app://music.gaiamobile.org/manifest.webapp']
}).then((function onConnectionAccepted(ports) {
   if (ports.length > 1) {
   if (ports.length > 1) {
     // We shouldn't be here as we only want to communicate with the Gaia Music app.
     // We shouldn't be here as we only want to communicate with the Gaia Music app.
Line 260: Line 248:
'Do you want to allow ''System'' (system.gaiamobile.org) to communicate with ''Music'' (music.gaiamobile.org) to ''Play, pause and stop music tracks''? [Accept|Reject]'
'Do you want to allow ''System'' (system.gaiamobile.org) to communicate with ''Music'' (music.gaiamobile.org) to ''Play, pause and stop music tracks''? [Accept|Reject]'


Even if ''Songbirdy'' and ''iTunos'' advertise themselves as able to connect through the 'musicremotecontrol' keyword, as the request is done with a specific rule that requires the receiver to have the 'music.gaiamobile.org' origin, these apps won't be listed in the above UI and won't receive any system message with a connection request.
Even if ''Songbirdy'' and ''iTunos'' advertise themselves as able to connect through the 'musicremotecontrol' keyword, as the request is done with a specific rule that requires the subscriber to have the 'music.gaiamobile.org' origin, these apps won't be listed in the above UI and won't receive any system message with a connection request.


The user allows that connection and a system message is sent to the Music app.
The user allows that connection and a system message is sent to the Music app.
Line 292: Line 280:


* We might want to have a bigger set of types to allow apps to connect (web, installed, signed, privileged, certified).
* We might want to have a bigger set of types to allow apps to connect (web, installed, signed, privileged, certified).
[[Category:Web APIs]]
Confirmed users
1,340

edits