WebAPI/PresentationAPI: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
m (→‎WebIDL Implementation: link to WebIDL implementation detail)
(→‎Interface: align latest m-c)
Line 13: Line 13:


== Interface ==
== 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 ===
=== Presentation ===
* [https://w3c.github.io/presentation-api/#interface-presentation WebIDL]
* [https://w3c.github.io/presentation-api/#interface-presentation WebIDL]
* defaultRequest is not supported yet.
* No UI support for defaultRequest.


=== PresentationRequest ===
=== PresentationRequest ===
* [https://w3c.github.io/presentation-api/#interface-presentationrequest WebIDL]
* [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 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 device
* support URL with app:// protocol scheme to launch an packaged app installed on target B2G device
** can only launch packaged apps with '''''"presentation"''''' permission declared
* only available in controlling browsing context
* session reconnect is not supported yet. [https://bugzilla.mozilla.org/show_bug.cgi?id=1197690 bug 1197690 (NEW)]


=== PresentationReceiver ===
=== PresentationReceiver ===
* [https://w3c.github.io/presentation-api/#interface-presentationreceiver WebIDL]
* [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)]
* many-to-one session is not supported yet. [https://bugzilla.mozilla.org/show_bug.cgi?id=1195605 bug 1195605 (NEW)]


=== PresentationConnection ===
=== PresentationConnection ===
* [https://w3c.github.io/presentation-api/#interface-presentationconnection WebIDL]
* [https://w3c.github.io/presentation-api/#interface-presentationconnection WebIDL]
* Binary type message is not supported yet. [https://bugzilla.mozilla.org/show_bug.cgi?id=1148307 bug 1148307 (ONGOING)]
 
* session close is not supported yet. [https://bugzilla.mozilla.org/show_bug.cgi?id=1210340 bug 1210340 (NEW)]
=== PresentationConnectionList ===
* [https://w3c.github.io/presentation-api/#interface-presentationconnectionlist WebIDL]
* only available in receiving browsing context


=== PresentationAvailability ===
=== PresentationAvailability ===
* [https://w3c.github.io/presentation-api/#interface-presentationavailability WebIDL]
* [https://w3c.github.io/presentation-api/#interface-presentationavailability WebIDL]
* only available in controlling browsing context


== Architecture ==
== Architecture ==

Revision as of 06:31, 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

See 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

  • 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

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.

Architecture overview of Presentation API

WebIDL Implementation

Core Service

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

Advanced Functionalities

  • Enable 1-UA mode for Chromecast/DIAL app to increase device compatibility
  • Support different URL scheme, e.g. data, file
  • Support session resume for improving cross device task continuity (Bug 1197690 (NEW))
  • Support multiple session (n:1) to support wider user scenario, e.g. multi-player game. (Bug 1195605 (NEW))