WebAPI/PresentationAPI: Difference between revisions
< WebAPI
(To add more use cases for multiple CP to on PP) |
(→Advanced Functionalities: update for latest progress) |
||
(18 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
== | == Introduction == | ||
Presentation API enables web content to access external presentation-type displays and use them for presenting web content. | |||
With this API, web page can initiate and control an presentation request. | |||
For retrieving available devices information, please refer to [[WebAPI/PresentationDeviceInfoAPI|Presentation Device Info API]]. | |||
== Specification == | |||
* [https://www.w3.org/TR/presentation-api/ Latest W3C specification] | |||
* [[WebAPI/PresentationAPI:Protocol Draft|Protocol Draft]] | |||
== Use case == | == Use case == | ||
See [https://github.com/w3c/presentation-api/blob/gh-pages/uc-req.md Use Cases and Requirements] | |||
== Interface == | |||
* For 1-UA user agent, three preferences "dom.presentation.enabled", "dom.presentation.controller.enabled", and "dom.presentation.receiver.enabled" need to be set to true. | |||
* For 2-UAs controlling user agent, two preferences "dom.presentation.enabled" and "dom.presentation.controller.enabled" need to be set to true. | |||
* For 2-UAs receiving user agent, two preferences "dom.presentation.enabled" and "dom.presentation.receiver.enabled" need to be set to true. | |||
=== Presentation === | |||
* [https://w3c.github.io/presentation-api/#interface-presentation WebIDL] | |||
* No UI support for defaultRequest. | |||
=== PresentationRequest === | |||
* [https://w3c.github.io/presentation-api/#interface-presentationrequest WebIDL] | |||
* support URL with http:// protocol scheme to open web page in private browsing mode | |||
* support URL with app:// protocol scheme to launch an packaged app installed on target B2G device | |||
* only available in controlling browsing context | |||
=== PresentationReceiver === | |||
* [https://w3c.github.io/presentation-api/#interface-presentationreceiver WebIDL] | |||
* only available in receiving browsing context | |||
* many-to-one session is not supported yet. [https://bugzilla.mozilla.org/show_bug.cgi?id=1195605 bug 1195605 (NEW)] | |||
=== PresentationConnection === | |||
* [https://w3c.github.io/presentation-api/#interface-presentationconnection WebIDL] | |||
=== PresentationConnectionList === | |||
* [https://w3c.github.io/presentation-api/#interface-presentationconnectionlist WebIDL] | |||
* only available in receiving browsing context | |||
=== PresentationAvailability === | |||
* [https://w3c.github.io/presentation-api/#interface-presentationavailability WebIDL] | |||
* only available in controlling browsing context | |||
== Architecture == | |||
Here is the high-level architecture overview of Presentation API. | |||
[[File:Presentation_API_Architecture_overview.png|thumb|650px|Architecture overview of Presentation API]] | |||
=== | === WebIDL Implementation === | ||
* Provide the WebAPI interface | |||
* Detail at [[WebAPI/PresentationAPI:WebIDL_Implementation]] | |||
* | |||
* | |||
=== Core Service === | |||
* | * Maintain the session state and app-to-app transportation channel | ||
** | * Handle the session setup / reconnect / terminate procedure | ||
* Live in chrome process | |||
** except for DataChannelTransportBuilder and DataChannelTransport | |||
* Detail at [[WebAPI/PresentationAPI:CoreService]] | |||
* | === Device Manager === | ||
** | * Load registered device provider at start-up automatically | ||
** | * Provide device list and firing availability event | ||
* | * Live in chrome process | ||
* | === Device Provider === | ||
* Implement device discovery mechanism | |||
* Handle control channel setup procedure | |||
* Live in chrome process | |||
=== Browser/System UI Glue === | |||
* Handle device selection and application launch | |||
* Live in chrome process | |||
=== | == Development Plan == | ||
* | === Basic Functionalities === | ||
* ( | *Stage 1: Enable 2-UAs mode on Firefox OS, for privilege apps only. | ||
** Implement Presentation API ([https://bugzilla.mozilla.org/show_bug.cgi?id=1069230 Bug 1069230 (RESOLVED)] and [https://bugzilla.mozilla.org/show_bug.cgi?id=1148307 Bug 1148307 (RESOLVED)]) | |||
** Provide MDNS provider on Firefox OS ([https://bugzilla.mozilla.org/show_bug.cgi?id=1115480 Bug 1115480 (RESOLVED)]) | |||
** Provide device selection/configuration UI on Firefox OS ([https://bugzilla.mozilla.org/show_bug.cgi?id=1161440 Bug 1161440 (RESOLVED)]) | |||
*** The initial version of UI should be simple without detailed security design, but keep pref off after check-in | |||
*** pref on after security team confirmation. | |||
*Stage 2: Integrated with media fling on Firefox for Android. | |||
** Provide MDNS provider on Firefox for Android. ([https://bugzilla.mozilla.org/show_bug.cgi?id=1158029 Bug 1158029 (RESOLVED)]) | |||
** Add Presentation Device as a fling service device. ([https://bugzilla.mozilla.org/show_bug.cgi?id=1129785 Bug 1129785 (RESOLVED)]) | |||
*Stage 3: Enable 1-UAs mode on Firefox OS for HDMI display. | |||
** Enable multi-window for HDMI ([https://bugzilla.mozilla.org/show_bug.cgi?id=1116089 Bug 1116089 (RESOLVED)]) | |||
** Implement HDMI device provider ([https://bugzilla.mozilla.org/show_bug.cgi?id=1208417 Bug 1208417 (RESOLVED)]) | |||
** Make Gaia use presentation API ([https://bugzilla.mozilla.org/show_bug.cgi?id=1235124 Bug 1235124 (RESOLVED)]) | |||
*Stage 4: Enable 1-UAs mode in HTTPS web pages on Firefox For Android. | |||
** Enable 1-UA mode for Chromecast ([https://bugzilla.mozilla.org/show_bug.cgi?id=1252788 Bug 1252788 (ON GOING)]). | |||
** Provide device selection/configuration UI on Firefox for Android ([https://bugzilla.mozilla.org/show_bug.cgi?id=1232105 Bug 1232105 (RESOLVED)]). | |||
** Change permission model for Presentation API ([https://bugzilla.mozilla.org/show_bug.cgi?id=1278205 Bug 1278205 (RESOLVED)]). | |||
*Stage 5: Enable in HTTPS web pages for Firefox desktop. | |||
** Provide MDNS provider on all supported desktop platforms | |||
*** Windows ([https://bugzilla.mozilla.org/show_bug.cgi?id=1239909 Bug 1239909 (NEW)]) | |||
*** Linux ([https://bugzilla.mozilla.org/show_bug.cgi?id=1225736 Bug 1225736 (NEW)]) | |||
*** Mac OSX ([https://bugzilla.mozilla.org/show_bug.cgi?id=1225726 Bug 1225726 (RESOLVED)]) | |||
** Provide device selection/configuration UI on Firefox ([https://bugzilla.mozilla.org/show_bug.cgi?id=1289974 Bug 1289974 (ON GOING)]). | |||
== | === Advanced Functionalities === | ||
* Enable 1-UA mode for DIAL app to increase device compatibility | |||
* Support different URL scheme, e.g. data, file | |||
* Support multiple session (n:1) to support wider user scenario, e.g. multi-player game. ([https://bugzilla.mozilla.org/show_bug.cgi?id=1195605 Bug 1195605 (NEW)]) |
Latest revision as of 07:01, 12 October 2016
Introduction
Presentation API enables web content to access external presentation-type displays and use them for presenting web content. With this API, web page can initiate and control an presentation request.
For retrieving available devices information, please refer to Presentation Device Info API.
Specification
Use case
Interface
- For 1-UA user agent, three preferences "dom.presentation.enabled", "dom.presentation.controller.enabled", and "dom.presentation.receiver.enabled" need to be set to true.
- For 2-UAs controlling user agent, two preferences "dom.presentation.enabled" and "dom.presentation.controller.enabled" need to be set to true.
- For 2-UAs receiving user agent, two preferences "dom.presentation.enabled" and "dom.presentation.receiver.enabled" need to be set to true.
Presentation
- WebIDL
- No UI support for defaultRequest.
PresentationRequest
- WebIDL
- support URL with http:// protocol scheme to open web page in private browsing mode
- support URL with app:// protocol scheme to launch an packaged app installed on target B2G device
- only available in controlling browsing context
PresentationReceiver
- WebIDL
- only available in receiving browsing context
- many-to-one session is not supported yet. bug 1195605 (NEW)
PresentationConnection
PresentationConnectionList
- WebIDL
- only available in receiving browsing context
PresentationAvailability
- WebIDL
- only available in controlling browsing context
Architecture
Here is the high-level architecture overview of Presentation API.
WebIDL Implementation
- Provide the WebAPI interface
- Detail at WebAPI/PresentationAPI:WebIDL_Implementation
Core Service
- Maintain the session state and app-to-app transportation channel
- Handle the session setup / reconnect / terminate procedure
- Live in chrome process
- except for DataChannelTransportBuilder and DataChannelTransport
- Detail at WebAPI/PresentationAPI:CoreService
Device Manager
- Load registered device provider at start-up automatically
- Provide device list and firing availability event
- Live in chrome process
Device Provider
- Implement device discovery mechanism
- Handle control channel setup procedure
- Live in chrome process
Browser/System UI Glue
- Handle device selection and application launch
- Live in chrome process
Development Plan
Basic Functionalities
- Stage 1: Enable 2-UAs mode on Firefox OS, for privilege apps only.
- Implement Presentation API (Bug 1069230 (RESOLVED) and Bug 1148307 (RESOLVED))
- Provide MDNS provider on Firefox OS (Bug 1115480 (RESOLVED))
- Provide device selection/configuration UI on Firefox OS (Bug 1161440 (RESOLVED))
- The initial version of UI should be simple without detailed security design, but keep pref off after check-in
- pref on after security team confirmation.
- Stage 2: Integrated with media fling on Firefox for Android.
- Provide MDNS provider on Firefox for Android. (Bug 1158029 (RESOLVED))
- Add Presentation Device as a fling service device. (Bug 1129785 (RESOLVED))
- Stage 3: Enable 1-UAs mode on Firefox OS for HDMI display.
- Enable multi-window for HDMI (Bug 1116089 (RESOLVED))
- Implement HDMI device provider (Bug 1208417 (RESOLVED))
- Make Gaia use presentation API (Bug 1235124 (RESOLVED))
- Stage 4: Enable 1-UAs mode in HTTPS web pages on Firefox For Android.
- Enable 1-UA mode for Chromecast (Bug 1252788 (ON GOING)).
- Provide device selection/configuration UI on Firefox for Android (Bug 1232105 (RESOLVED)).
- Change permission model for Presentation API (Bug 1278205 (RESOLVED)).
- Stage 5: Enable in HTTPS web pages for Firefox desktop.
- Provide MDNS provider on all supported desktop platforms
- Windows (Bug 1239909 (NEW))
- Linux (Bug 1225736 (NEW))
- Mac OSX (Bug 1225726 (RESOLVED))
- Provide device selection/configuration UI on Firefox (Bug 1289974 (ON GOING)).
- Provide MDNS provider on all supported desktop platforms
Advanced Functionalities
- Enable 1-UA mode for DIAL app to increase device compatibility
- Support different URL scheme, e.g. data, file
- Support multiple session (n:1) to support wider user scenario, e.g. multi-player game. (Bug 1195605 (NEW))