WebAPI: Difference between revisions

10,083 bytes added ,  2 December 2016
adding link to MDN documentation in highlighted box
(adding link to MDN documentation in highlighted box)
 
(100 intermediate revisions by 21 users not shown)
Line 1: Line 1:
<div style="border: thick solid red; width: 50%; padding: 5px;"><em><center>Warning: Information on this page is mostly obsolete! Check the general [[Platform/Roadmap]] for up to date projects. Use [https://lists.mozilla.org/listinfo/dev-platform dev-platform] and [irc://irc.mozilla.org/developers #developers] or [irc://irc.mozilla.org/content #content] to get in touch.
[https://developer.mozilla.org/en-US/docs/WebAPI See MDN documentation on WebAPI]
</center></em></div>
The Mozilla WebAPI team is pushing the envelope of the web to include --- and in places exceed --- the capabilities of competing stacks.
The Mozilla WebAPI team is pushing the envelope of the web to include --- and in places exceed --- the capabilities of competing stacks.


== Contributing ==
== Contributing ==


WebAPI work is being tracked by Mozilla {{bug|673923}}.  Find an dependent bug that interests you (and is unassigned), and assign it to yourself.
WebAPI work is being tracked by Mozilla {{bug|673923}}.  Find a dependent bug that interests you (and is unassigned), and assign it to yourself.
 
== Documentation ==
 
This wiki page's purpose is mostly to be able to track the advancement of the work on the different APIs covered by the WebAPI team and help working on those. If you are interested in documentation for these Web APIs, you should look at the following MDN documentation page: https://developer.mozilla.org/docs/WebAPI


== APIs ==
== APIs ==


Here's a list of the APIs that we're working on. Some of them are done, and some of them we haven't gotten further than acknowledge that we probably need them.
Here's a list of the APIs that we're working on. Some of them are done, and some of them we haven't gotten further than acknowledging that we probably need them.


===Planned for initial release of B2G (aka Basecamp)===
===Planned for initial release of B2G===
Unless otherwise noted, APIs listed in the table below were available in Firefox OS v1.0.1 or will be available in v1.1.
<!--
<!--
{{WebAPIPlatformAvailability|STATUS|PLATFORM}}
{{WebAPIPlatformAvailability|STATUS|PLATFORM}}
Line 17: Line 27:


See definition of template or mouseovers for definitions of status.
See definition of template or mouseovers for definitions of status.
-->
<!--
See https://mxr.mozilla.org/mozilla-central/source/dom/apps/src/PermissionsTable.jsm for "app", "privileged", and "certified" access information
-->
-->
{| cellpadding="2" border="1"
{| cellpadding="2" border="1"
Line 28: Line 41:
| [[WebAPI/WebTelephony|WebTelephony]]
| [[WebAPI/WebTelephony|WebTelephony]]
| Allow placing and answering phone calls as well as build in-call UI.
| Allow placing and answering phone calls as well as build in-call UI.
| W3C ED (SysApps)
| [http://www.w3.org/2012/sysapps/telephony/ W3C ED] (SysApps)
<!--
* dom.telephony.enabled=false in all.js, true in b2g.js
-->
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Android}}
| {{WebAPIPlatformAvailability|notPlanned|Android}}
Line 36: Line 52:
| [http://dev.w3.org/2009/dap/vibration/ Vibration API]
| [http://dev.w3.org/2009/dap/vibration/ Vibration API]
| Control device vibration for things like haptic feedback in games. Not intended to solve things like vibration for notification.
| Control device vibration for things like haptic feedback in games. Not intended to solve things like vibration for notification.
| W3C CR (Device APIs)
| [http://www.w3.org/TR/vibration/ W3C REC] (Device APIs)
<!--
* dom.vibrator.enabled set to true in Navigator.cpp
-->
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|implemented|Android}}
| {{WebAPIPlatformAvailability|implemented|Android}}
Line 44: Line 63:
| [[WebAPI/WebSMS|WebSMS]]
| [[WebAPI/WebSMS|WebSMS]]
| Send/receive SMS messages as well as manage messages stored on device.
| Send/receive SMS messages as well as manage messages stored on device.
| W3C ED (SysApps)
| [http://www.w3.org/2012/sysapps/messaging/ W3C ED] (SysApps)
<!--
* dom.sms.enabled=false in all.js, true in b2g.js
-->
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|offByDefault|Android}}
| {{WebAPIPlatformAvailability|offByDefault|Android}}
Line 52: Line 74:
| [[WebAPI/IdleAPI|Idle API]]
| [[WebAPI/IdleAPI|Idle API]]
| Get notifications when user is idle.
| Get notifications when user is idle.
| Future?
| Needs plan
<!--
* dom.idle-observers-api.enabled=true in all.js, not set elsewhere
* Navigator.cpp checks for nsIPrincipal::APP_STATUS_CERTIFIED
-->
| {{WebAPIPlatformAvailability|implemented|Desktop}}
| {{WebAPIPlatformAvailability|implemented|Desktop}}
| {{WebAPIPlatformAvailability|implemented|Android}}
| {{WebAPIPlatformAvailability|implemented|Android}}
Line 60: Line 86:
| [[WebAPI/ScreenOrientation|Screen Orientation]]
| [[WebAPI/ScreenOrientation|Screen Orientation]]
| Get notification when screen orientation changes as well as control which screen orientation a page/app wants.
| Get notification when screen orientation changes as well as control which screen orientation a page/app wants.
| W3C WD (WebApps)
| [https://w3c.github.io/screen-orientation/ W3C WD] (WebApps)
<!--
* implementations in widget/{android,gonk}
-->
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|implemented|Android}}
| {{WebAPIPlatformAvailability|implemented|Android}}
Line 69: Line 98:
| Set system-wide configurations that are saved permanently on the device.
| Set system-wide configurations that are saved permanently on the device.
| Future?
| Future?
<!--
* dom.mozSettings.enabled=false in all.js, true in b2g.js
-->
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Android}}
| {{WebAPIPlatformAvailability|notPlanned|Android}}
Line 77: Line 109:
| Turn on/off screen, cpu, device power, etc. Listen and inspect resource lock events.
| Turn on/off screen, cpu, device power, etc. Listen and inspect resource lock events.
| Future?
| Future?
<!--
* MozPowerManager.webidl
* how do we know this is b2g-only?
* certified only check is done in nsIPermissionManager
-->
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Android}}
| {{WebAPIPlatformAvailability|notImplemented|Android}}
| {{WebAPIPlatformAvailability|certifiedOnly|B2G}}
| {{WebAPIPlatformAvailability|certifiedOnly|B2G}}
| {{bug|708964}}, [[WebAPI/Security/PowerManagement|Security]]
| {{bug|708964}}, [[WebAPI/Security/PowerManagement|Security]]<br />{{bug|1017232}}, implement for Android
|-
|-
| [[WebAPI/WebMobileConnection|Mobile Connection API]]
| [[WebAPI/WebMobileConnection|Mobile Connection API]]
| Expose signal strength, operator, etc for GSM and other mobile connections. This does not cover WiFi.
| Expose signal strength, operator, etc for GSM and other mobile connections. This does not cover WiFi.
| Future?
| Future?
<!--
* dom/network/interfaces/moz.build contains
** if CONFIG['MOZ_B2G_RIL']: ... nsIMobileConnectionProvider.idl
* permission check in dom/network/src/MobileConnection.cpp
-->
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Android}}
| {{WebAPIPlatformAvailability|notImplemented|Android}}
| {{WebAPIPlatformAvailability|certifiedOnly|B2G}}
| {{WebAPIPlatformAvailability|certifiedOnly|B2G}}
| {{bug|729173}}, [[WebAPI/Security/MobileConnection|Security]]
| {{bug|729173}}, [[WebAPI/Security/MobileConnection|Security]]<br />{{bug|1017233}}, implementation on Android
|-
|-
| TCP Socket API
| TCP Socket API
| Low-level TCP socket API. Will also include SSL support.
| Low-level TCP socket API. Will also include SSL support.
| W3C ED (SysApps)
| [http://www.w3.org/2012/sysapps/tcp-udp-sockets/ W3C ED] (SysApps)
| {{WebAPIPlatformAvailability|notImplemented|Desktop}}
<!--
| {{WebAPIPlatformAvailability|notImplemented|Android}}
* dom.mozTCPSocket.enabled only true in b2g/app/b2g.js, not in all.js
-->
| {{WebAPIPlatformAvailability|privilegedAndCertified|Desktop}}
| {{WebAPIPlatformAvailability|privilegedAndCertified|Android}}
| {{WebAPIPlatformAvailability|privilegedAndCertified|B2G}}
| {{WebAPIPlatformAvailability|privilegedAndCertified|B2G}}
| {{bug|733573}}, [[WebAPI/Security/TCPSocket|Security]]
| {{bug|733573}} {{bug|892833}}, [[WebAPI/Security/TCPSocket|Security]]
|-
|-
| [http://www.w3.org/TR/geolocation-API/ Geolocation API]
| [http://www.w3.org/TR/geolocation-API/ Geolocation API]
| Access to the end user's location.
| Access to the end user's location.
| W3C CR
| [http://www.w3.org/TR/geolocation-API/ W3C REC]
<!--
* geolocation PROMPT_ACTION for app/privileged/certified
-->
| {{WebAPIPlatformAvailability|implemented|Desktop}}
| {{WebAPIPlatformAvailability|implemented|Desktop}}
| {{WebAPIPlatformAvailability|implemented|Android}}
| {{WebAPIPlatformAvailability|implemented|Android}}
Line 109: Line 157:
| Privileged API to get a list of available WiFi networks. Also get signal strength and name of currently connected network, etc.
| Privileged API to get a list of available WiFi networks. Also get signal strength and name of currently connected network, etc.
| Future?
| Future?
<!--
* wifi-manage permission
* dom/moz.build won't go into dom/wifi unless MOZ_WIDGET_TOOLKIT==gonk
-->
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Android}}
| {{WebAPIPlatformAvailability|notImplemented|Android}}
| {{WebAPIPlatformAvailability|certifiedOnly|B2G}}
| {{WebAPIPlatformAvailability|certifiedOnly|B2G}}
| [[WebAPI/Security/Wifi|Security]]
| [[WebAPI/Security/Wifi|Security]]<br />{{bug|1017234}}, Android implementation bug
|-
|-
| [[WebAPI/DeviceStorageAPI|Device Storage API]]
| [[WebAPI/DeviceStorageAPI|Device Storage API]]
| Add/Read/Modify files stored on a central location on the device. For example the "pictures" folder on modern desktop platforms or the photo storage in mobile devices.
| Add/Read/Modify files stored on a central location on the device. For example the "pictures" folder on modern desktop platforms or the photo storage in mobile devices.
| Future?
| Needs plan
<!--
* device.storage.enabled pref=false in all.js, true in b2g.js
* webapps-manage permission
-->
| {{WebAPIPlatformAvailability|offByDefault|Desktop}}
| {{WebAPIPlatformAvailability|offByDefault|Desktop}}
| {{WebAPIPlatformAvailability|offByDefault|Android}}
| {{WebAPIPlatformAvailability|offByDefault|Android}}
Line 124: Line 180:
| [[WebAPI/ContactsAPI|Contacts API]]
| [[WebAPI/ContactsAPI|Contacts API]]
| Add/Read/Modify the device contacts address book.
| Add/Read/Modify the device contacts address book.
| W3C ED (SysApps)
| [http://www.w3.org/2012/sysapps/contacts-manager-api/ W3C ED] (SysApps)
<!--
* privileged:  prompt
* certified:  allowed
* android:  #ifdef NIGHTLY_BUILD in mobile/android/base/AndroidManifest.xml.in
-->
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notImplemented|Android}}
| {{WebAPIPlatformAvailability|offByDefault|Android}}
| {{WebAPIPlatformAvailability|privilegedAndCertified|B2G}}
| {{WebAPIPlatformAvailability|privilegedAndCertified|B2G}}
| {{bug|674720}}, [[WebAPI/Security/Contacts|Security]]
| {{bug|674720}}, {{bug|857730}} for Android, [[WebAPI/Security/Contacts|Security]]
|-
|-
| [http://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html Mouse Lock API]
| [http://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html Mouse Lock API]
| Lock access to mouse and get access to movement deltas rather than coordinates.
| Lock access to mouse and get access to movement deltas rather than coordinates.
| W3C ED
| [http://www.w3.org/TR/pointerlock/ W3C CR] (WebApps)
| {{WebAPIPlatformAvailability|implemented|Desktop}}
<!--
* FIXME:  I see implementation but it's unclear how it's not implemented on b2g
-->| {{WebAPIPlatformAvailability|implemented|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Android}}
| {{WebAPIPlatformAvailability|notPlanned|Android}}
| {{WebAPIPlatformAvailability|notPlanned|B2G}}
| {{WebAPIPlatformAvailability|notPlanned|B2G}}
Line 139: Line 202:
|-
|-
| [https://developer.mozilla.org/en-US/docs/JavaScript_API Open WebApps]
| [https://developer.mozilla.org/en-US/docs/JavaScript_API Open WebApps]
| Install web apps and manage installed webapps. Also allows an installed webapp to get payment information. Everything needed to build a Open WebApps app store.
| Install web apps and manage installed webapps. Also allows an installed webapp to get payment information. Everything needed to build an Open WebApps app store.
| W3C WD (SysApps)
| [http://w3c.github.io/manifest/ W3C ED] (WebAps)
<!--
* interfaces/apps in dom/moz.build with no conditionals
-->
| {{WebAPIPlatformAvailability|implemented|Desktop}}
| {{WebAPIPlatformAvailability|implemented|Desktop}}
| {{WebAPIPlatformAvailability|implemented|Android}}
| {{WebAPIPlatformAvailability|implemented|Android}}
Line 149: Line 215:
| Low level access to Bluetooth hardware.
| Low level access to Bluetooth hardware.
| Future?
| Future?
<!--
* only certified in dom/apps/src/PermissionsTable.jsm
* MOZ_B2G_BT=1 with --enable-b2g-bt
-->
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Android}}
| {{WebAPIPlatformAvailability|notPlanned|Android}}
Line 157: Line 227:
| Get basic information about current network connectivity.  Example:  "How fast of a connection do I have?".
| Get basic information about current network connectivity.  Example:  "How fast of a connection do I have?".
| W3C ED
| W3C ED
<!--
* no explicit permission
* Android implementation in {hal,widget}/android
* dom/network/src/moz.build won't build NetworkStatsService unless MOZ_WIDGET_TOOLKIT==gonk
-->
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|implemented|Android}}
| {{WebAPIPlatformAvailability|implemented|Android}}
Line 164: Line 239:
| [http://dvcs.w3.org/hg/dap/raw-file/tip/battery/Overview.html Battery Status API]
| [http://dvcs.w3.org/hg/dap/raw-file/tip/battery/Overview.html Battery Status API]
| Information about battery charge level and if device is plugged in.
| Information about battery charge level and if device is plugged in.
| W3C CR (DAP)
| [http://www.w3.org/TR/battery-status/ W3C CR] (Device APIs)
<!--
* no explicit permission
* hal/*/*Battery.cpp
-->
| {{WebAPIPlatformAvailability|implemented|Desktop}}
| {{WebAPIPlatformAvailability|implemented|Desktop}}
| {{WebAPIPlatformAvailability|implemented|Android}}
| {{WebAPIPlatformAvailability|implemented|Android}}
Line 173: Line 252:
| Schedule a notification, or for an application to be started, at a specific time.
| Schedule a notification, or for an application to be started, at a specific time.
| W3C WD (SysApps)
| W3C WD (SysApps)
| {{WebAPIPlatformAvailability|notImplemented|Desktop}}
<!--
* dom.mozAlarms.enabled = true only in b2g.js (checked for in AlarmsManager.js)
-->
| {{WebAPIPlatformAvailability|Implemented|Desktop}}
| {{WebAPIPlatformAvailability|notImplemented|Android}}
| {{WebAPIPlatformAvailability|notImplemented|Android}}
| {{WebAPIPlatformAvailability|implemented|B2G}}
| {{WebAPIPlatformAvailability|implemented|B2G}}
| {{bug|749551}}, [[WebAPI/Security/Alarm|Security]]
| {[[WebAPI/Security/Alarm|Security]]
|-
|-
| [[WebAPI/BrowserAPI|Browser API]]
| [[WebAPI/BrowserAPI|Browser API]]
| Enables implementing a browser completely in web technologies.
| Enables implementing a browser completely in web technologies.
| Future?
| Future?
<!--
* dom.mozBrowserFramesEnabled only set (and true) in b2g.js
-->
| {{WebAPIPlatformAvailability|notImplemented|Desktop}}
| {{WebAPIPlatformAvailability|notImplemented|Desktop}}
| {{WebAPIPlatformAvailability|notImplemented|Android}}
| {{WebAPIPlatformAvailability|notImplemented|Android}}
Line 189: Line 274:
| Set current time. Timezone will go in the Settings API.
| Set current time. Timezone will go in the Settings API.
| Future?
| Future?
<!--
* implementation is in dom/time
* TimeManager::PrefEnabled returns true since MOZ_TIME_MANAGER=1 in b2g/confvars.sh
-->
| {{WebAPIPlatformAvailability|notimplemented|Desktop}}
| {{WebAPIPlatformAvailability|notimplemented|Desktop}}
| {{WebAPIPlatformAvailability|notimplemented|Android}}
| {{WebAPIPlatformAvailability|notimplemented|Android}}
| {{WebAPIPlatformAvailability|implemented|B2G}}
| {{WebAPIPlatformAvailability|certifiedOnly|B2G}}
| {{bug|714357}}, {{bug|714358}}, [http://groups.google.com/group/mozilla.dev.webapi/browse_thread/thread/f382abb068abd4c5 API proposed]
| {{bug|714357}}, {{bug|714358}}, [http://groups.google.com/group/mozilla.dev.webapi/browse_thread/thread/f382abb068abd4c5 API proposed]
|-
|-
Line 197: Line 286:
| Delegate an activity to another application.
| Delegate an activity to another application.
| Discussed in Device APIs
| Discussed in Device APIs
<!--
* we only package XPCOM components and interfaces in b2g/installer/package-manifest.in
-->
| {{WebAPIPlatformAvailability|notImplemented|Desktop}}
| {{WebAPIPlatformAvailability|notImplemented|Desktop}}
| {{WebAPIPlatformAvailability|notImplemented|Android}}
| {{WebAPIPlatformAvailability|notImplemented|Android}}
Line 204: Line 296:
| [[WebAPI/SimplePush|Push Notifications API]]
| [[WebAPI/SimplePush|Push Notifications API]]
| Allow the platform to send notification messages to specific applications.
| Allow the platform to send notification messages to specific applications.
| [http://telefonicaid.github.com/WebAPISpecs/Push/index.html Beginning]
| [https://w3c.github.io/push-api/index.html W3C ED] (Webapps)
<!--
* pref "services.push.enabled" true on b2g, false on Android and in libpref all.js
* Desktop: ae0f6c30aaf (git SHA-1) (bug 863599) but services.push.enabled still false
-->
| {{WebAPIPlatformAvailability|notImplemented|Desktop}}
| {{WebAPIPlatformAvailability|notImplemented|Desktop}}
| {{WebAPIPlatformAvailability|notImplemented|Android}}
| {{WebAPIPlatformAvailability|notImplemented|Android}}
| {{WebAPIPlatformAvailability|notImplemented|B2G}}
| {{WebAPIPlatformAvailability|Implemented|B2G}}
| {{bug|747907}}, [https://groups.google.com/forum/?fromgroups#!topic/mozilla.dev.webapps/Sff8MqFSO4E Security]
| {{bug|822712}} for B2G, {{bug|834033}} for Android
|-
|-
| Permissions API
| Permissions API
| Allow Settings app to manage all app permissions in a centralized location
| Allow Settings app to manage all app permissions in a centralized location
| Future?
| Future?
<!--
* dom.mozPermissionSettings.enabled=true in b2g.js, false in all.js
-->
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Android}}
| {{WebAPIPlatformAvailability|notPlanned|Android}}
Line 221: Line 320:
| For FM radio feature.  
| For FM radio feature.  
| Future?
| Future?
<!--
* dom/fmradio/moz.build has if CONFIG'[MOZ_B2G_FM]' => non-B2G unimplemented
* configure.in sets MOZ_B2G_FM=1 if target=android && --with-gonk set
-->
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Android}}
| {{WebAPIPlatformAvailability|notPlanned|Android}}
Line 228: Line 331:
| [[WebAPI/FileHandleAPI|FileHandle API]]
| [[WebAPI/FileHandleAPI|FileHandle API]]
| Writable files with locking.
| Writable files with locking.
| Future?
| Needs plan
<!--
* implemented everywhere in 5f93a8930 (git SHA-1) (bug 726593)
-->
| {{WebAPIPlatformAvailability|implemented|Desktop}}
| {{WebAPIPlatformAvailability|implemented|Desktop}}
| {{WebAPIPlatformAvailability|implemented|Android}}
| {{WebAPIPlatformAvailability|implemented|Android}}
| {{WebAPIPlatformAvailability|notImplemented|B2G}}
| {{WebAPIPlatformAvailability|implemented|B2G}}
| {{bug|726593}}
| {{bug|726593}}
|-
|-
Line 237: Line 343:
| Monitor data usage and expose data to privileged apps
| Monitor data usage and expose data to privileged apps
| Future?
| Future?
<!--
* dom.mozNetworkStats.enabled=true in b2g.js, false in all.js
-->
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Android}}
| {{WebAPIPlatformAvailability|notPlanned|Android}}
Line 244: Line 353:
| [[WebAPI/WebPayment|WebPayment]]
| [[WebAPI/WebPayment|WebPayment]]
| Allow web content to initiate payments and refunds for virtual goods. For the server implementation, see [[WebAPI/WebPayment|WebPaymentProvider]].
| Allow web content to initiate payments and refunds for virtual goods. For the server implementation, see [[WebAPI/WebPayment|WebPaymentProvider]].
| [http://lists.w3.org/Archives/Public/public-webpayments/2013Jan/0029.html Beginning]
| [http://lists.w3.org/Archives/Public/public-webpayments/2013May/0025.html Beginning]
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
<!--
| {{WebAPIPlatformAvailability|notPlanned|Android}}
* dom.mozPay.enabled=true in at least b2g.js and mobile/...js
-->
| {{WebAPIPlatformAvailability|Implemented|Desktop}}
| {{WebAPIPlatformAvailability|implemented|Android}}
| {{WebAPIPlatformAvailability|implemented|B2G}}
| {{WebAPIPlatformAvailability|implemented|B2G}}
| {{bug|767818}}
|  
|-
|-
| [http://www.w3.org/TR/IndexedDB/ IndexedDB]
| [http://www.w3.org/TR/IndexedDB/ IndexedDB]
| Client-side storage of structured data and high performance searches on this data
| Client-side storage of structured data and high performance searches on this data
| W3C WD
| [http://www.w3.org/TR/IndexedDB/ W3C REC] (WebApps)
<!--
* in dom/moz.build
-->
| {{WebAPIPlatformAvailability|implemented|Desktop}}
| {{WebAPIPlatformAvailability|implemented|Desktop}}
| {{WebAPIPlatformAvailability|implemented|Android}}
| {{WebAPIPlatformAvailability|implemented|Android}}
Line 261: Line 376:
| Blob support for Zip file contents
| Blob support for Zip file contents
| Future?
| Future?
<!--
* dom.archivereader.enabled = false in all.js
-->
| {{WebAPIPlatformAvailability|offByDefault|Desktop}}
| {{WebAPIPlatformAvailability|offByDefault|Desktop}}
| {{WebAPIPlatformAvailability|offByDefault|Android}}
| {{WebAPIPlatformAvailability|offByDefault|Android}}
Line 269: Line 387:
| Device light sensor support
| Device light sensor support
| W3C WD
| W3C WD
<!--
* dom/system/nsDeviceSensors.cpp
* b2g:  hal/gonk/GonkSensor.cpp
* Android:  mobile/android/base/GeckoEvent.java and widget/android/nsAppShell.cpp
-->
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|implemented|Android}}
| {{WebAPIPlatformAvailability|implemented|Android}}
Line 277: Line 400:
| Device proximity sensor support
| Device proximity sensor support
| W3C WD
| W3C WD
<!--
* implementations spread out
-->
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|implemented|Android}}
| {{WebAPIPlatformAvailability|implemented|Android}}
Line 282: Line 408:
| {{bug|738131}}
| {{bug|738131}}
|-
|-
| [https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#Non-standard_properties SystemXHR]
| External (non-same origin) XMLHttpRequests
| ?
<!--
* nsXMLHttpRequest.cpp checks for "systemXHR" permission
* available for chrome everywhere and only content with the permission check (Firefox OS)
-->
| {{WebAPIPlatformAvailability|notImplemented|Desktop}}
| {{WebAPIPlatformAvailability|notImplemented|Android}}
| {{WebAPIPlatformAvailability|privilegedAndCertified|B2G}}
| ?
|}
|}


Line 297: Line 434:
| {{bug|697132}}
| {{bug|697132}}
| Prevent resources from being turned off, for example screen dimming, WiFi turning off, CPU going into sleep mode etc.
| Prevent resources from being turned off, for example screen dimming, WiFi turning off, CPU going into sleep mode etc.
| Complete.  <br>[[WebAPI/Security/ResourceLock|Security Design Complete]]
| Complete.  <br>[[WebAPI/Security/ResourceLock|Security Design Complete]].  There is renewed interest in a standard here:  http://w3c.github.io/screen-wake .
|-
|-
| UDP Datagram Socket API
| UDP Datagram Socket API
| {{bug|745283}}
| {{bug|745283}}
| Low-level UDP API.
| Low-level UDP API.
| Planning. (Not P1 for basecamp)
| There are patches up for review as of mid-July 2014.
|-
|-
| USB file-reading API
| USB file-reading API
Line 318: Line 455:
| This is part of the larger WebRTC effort. This is a big piece of work so see the link.
| This is part of the larger WebRTC effort. This is a big piece of work so see the link.
| API and implementation underway.
| API and implementation underway.
|-
| [[WebAPI/WebNFC|WebNFC]]
| {{bug|674741}}
| Low level access to NFC hardware. So far focusing on NDEF support.
| API drafted, implementation underway for B2G (not Andorid/Desktop), must be complete by June/July. <br>[[WebAPI/Security/WebNFC|Security Design Complete]]
|-
|-
| [[WebAPI/WebUSB|WebUSB]]
| [[WebAPI/WebUSB|WebUSB]]
Line 331: Line 463:
| HTTP-cache API
| HTTP-cache API
|
|
| Query what's stored in the browsers http-cache. Add/remove entries. Update expiration time. Get data directly from cache.
| Query what's stored in the browsers http-cache. Add/remove entries. Update expiration time. Get data directly from cache.  Likely superseded by [https://github.com/slightlyoff/ServiceWorker/ Service Workers]' cache API.
| None
| None
|-
|-
Line 347: Line 479:
|
|
| Enable a web application to run in the background and perform tasks like syncing or respond to incoming messages.
| Enable a web application to run in the background and perform tasks like syncing or respond to incoming messages.
| Initial proposal of API.<br>[http://groups.google.com/group/mozilla.dev.webapps/browse_thread/thread/f54c52d015d90fd3 Security Design Active]
| Initial proposal of API.<br>[http://groups.google.com/group/mozilla.dev.webapps/browse_thread/thread/f54c52d015d90fd3 Security Design Active].  Potentially superseded by the Service Worker-based [https://github.com/slightlyoff/BackgroundSync/ Background Synchronization] proposal.
|-
|-
| [[WebAPI/LogAPI|LogAPI]]
| [[WebAPI/LogAPI|LogAPI]]
Line 358: Line 490:
| Enables implementing virtual keyboards.
| Enables implementing virtual keyboards.
| Only exposed to certified apps for V1. Controlled via a setting instead.]
| Only exposed to certified apps for V1. Controlled via a setting instead.]
| {{WebAPIPlatformAvailability|offByDefault|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Android}}
| {{WebAPIPlatformAvailability|privilegedAndCertified|B2G}}
|-
| [[WebAPI/DataStore|DataStore API]]
| {{bug|871445}}
| Shared app/site data stores with a mechanism for multiple applications to concurrently synchronize shared data into local caches
| Standardization:  [http://airpingu.github.io/data-store-api/index.html W3C ED (SysApps)]
| {{WebAPIPlatformAvailability|offByDefault|Desktop}}
| {{WebAPIPlatformAvailability|offByDefault|Android}}
| {{WebAPIPlatformAvailability|certifiedOnly|B2G}}
|-
| [[WebAPI/MobileIdentity|Mobile Identity API]]
| {{bug|1021594}}
| Allow apps to obtain a verified phone number.
|
| {{WebAPIPlatformAvailability|notImplemented|Desktop}}
| {{WebAPIPlatformAvailability|notImplemented|Android}}
| {{WebAPIPlatformAvailability|privilegedAndCertified|B2G}}
|-
| [[WebAPI/WebNFC|WebNFC]]
| {{bug|674741}}
| Low level access to NFC hardware. So far focusing on NDEF support.
| Shipped in FxOS 1.3. <br>[[WebAPI/Security/WebNFC|Security Design Complete]]
| {{WebAPIPlatformAvailability|notImplemented|Desktop}}
| {{WebAPIPlatformAvailability|notImplemented|Android}}
| {{WebAPIPlatformAvailability|certifiedOnly|B2G}}
|-
| [[WebAPI/TVAPI|TV API]]
| {{bug|998872}}
| Allow apps to acquire the information from TV service providers as well as to manage the native TV hardwares (i.e. tuners).
| Shipped in FxOS 2.2. But requires explicitly turning on the preference. <br> Standardization: [http://w3c.github.io/tvapi/spec/ W3C ED (TV Control API)]
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Desktop}}
| {{WebAPIPlatformAvailability|notPlanned|Android}}
| {{WebAPIPlatformAvailability|notPlanned|Android}}
| {{WebAPIPlatformAvailability|certifiedOnly|B2G}}
| {{WebAPIPlatformAvailability|certifiedOnly|B2G}}
|-
| [[WebAPI/PresentationAPI|Presentation API]]
| {{bug|1184073}} {{bug|1184036}}
| Enable web content to access external presentation-type displays and use them for presenting web content.
| Shipped in FxOS 2.5 for receiver side. <br> Standardization: [http://www.w3.org/TR/presentation-api/ Presentation API]
| {{WebAPIPlatformAvailability|notImplemented|Desktop}}
| {{WebAPIPlatformAvailability|notImplemented|Android}}
| {{WebAPIPlatformAvailability|privilegedAndCertified|B2G}}
|}
|}


Line 383: Line 555:
== Process ==
== Process ==


A draft specification and prototype implementation of new Web APIs will be discussed publicly on our mailing list and at our public meetings (see below). Once we have an API that we feel that we are satisfied with, we will submit the new API for standardization to the W3C.
A draft specification and prototype implementation of new Web APIs will be discussed publicly on our mailing list and at our public meetings (see below). Once we have an API that we feel that we are satisfied with, we will submit the new API for standardization to the W3C.  See also [[WebAPI/DesignGuidelines|tips for standardizing APIs]].


The goal is to standardize all APIs.
The goal is to standardize all APIs.
Line 393: Line 565:
Security will be a central aspect of all the APIs that we design. We wouldn't want any random webpage to be able to read the user's contact list, or able to issue arbitrary commands to any USB device which is hooked up to the user's computer.
Security will be a central aspect of all the APIs that we design. We wouldn't want any random webpage to be able to read the user's contact list, or able to issue arbitrary commands to any USB device which is hooked up to the user's computer.


In some cases the solution will be to simply ask the user, like we do today for Geolocation for example. In other cases, where security implications are scarier or where describing the risk to the user is harder, we'll have to come up with better solutions.
In some cases the solution will be to simply ask the user, like we do today for Geolocation for example. In other cases, where security implications are scarier or where describing the risk to the user is harder, we'll have to come up with better solutions. For example, enumerating sensitive information or exposing device specific configuration to the web can be avoided by implementing dialogs (like the file picker for <input type=file>). Those can be implemented in the platform and ask the user which information to expose to the current website specifically.


This is an area where we're still doing a lot of research. I really want to emphasize that we don't have all the answers yet, but that we plan on having them before we roll out these APIs to millions of users.
This is an area where we're still doing a lot of research. I really want to emphasize that we don't have all the answers yet, but that we plan on having them before we roll out these APIs to millions of users.
Line 404: Line 576:


== Plans ==
== Plans ==
* [[WebAPI/PlannedWork|Work we'd like to do in the future]]
* [[WebAPI/PlannedWork|Old planning document]]
=== Plans for 2013 ===
* Old (2013) [[WebAPI/Storage2013|storage discussion notes]]
 
* [[WebAPI/Storage2013|Storage discussion notes]]


== Meetings ==
== Meetings ==
We used to have weekly meetings but as of 1 October 2014 we no longer do.


Meeting Details:
If there's something you'd like to discuss, ask on [https://lists.mozilla.org/listinfo/dev-platform dev-platform]. Since much of this effort is under Mozilla's DOM team, [irc://irc.mozilla.org/content #content] isn't a bad place for IRC conversation.
* [[WebAPI/{{#time: Y-m-d | tuesday}}|Agenda for this week (create below if it doesn't exist yet)]]
* Tuesdays at [http://www.timeanddate.com/worldclock/fixedtime.html?msg=WebAPI+meeting&iso=20130326T10&p1=224&am=30 10:00 AM Pacific Time] (17:00 UTC)
* [https://v.mozilla.com/flex.html?roomdirect.html&key=H1q64MSinl9H|'''WebAPI Vidyo room''']
{{conf|98413}}
* San Francisco:  Amoeba conference room (7th floor)
* London:  Allo Allo conference room
* Toronto:  Spadina conference room
* Join irc.mozilla.org [irc://irc.mozilla.org/webapi|IRC #webapi] for back channel
 
Notes will be taken on etherpad:  https://etherpad.mozilla.org/webapi-meetingnotes


=== Meeting Notes ===
=== Meeting Notes ===
<!--
Create a new weekly agenda from the [[WebAPI/0-0-0|template]]:
Create a new weekly agenda from the [[WebAPI/0-0-0|template]]:
<createbox>
<createbox>
Line 434: Line 596:


'''''Remember:''''' You'll still need to link it below!
'''''Remember:''''' You'll still need to link it below!
-->
{| class="wikitable collapsible" style="width: 100%"
! 2014
|-
|
* [[WebAPI/2014-09-30|September 30 2014]]
* No meeting 2014-09-23 due to no topics
* No meeting 2014-09-16 due to no topics
* [[WebAPI/2014-09-09|September 09 2014]]
* No meeting 2014-09-02 due to no topics
* No meeting 2014-08-26 due to no topics
* No meeting 2014-08-19 due to no topics
* [[WebAPI/2014-08-12|August 12 2014]]
* [[WebAPI/2014-08-05|August 05 2014]]
* No meeting 2014-07-29 due to no topics
* [[WebAPI/2014-07-22|July 22 2014]]
* No meeting 2014-07-15 due to no topics
* No meeting 2014-07-08 due to no topics
* No meeting 2014-07-01 due to many people on holiday
* [[WebAPI/2014-06-24|June 24 2014]]
* No meeting 2014-06-17 due to no topics
* [[WebAPI/2014-06-10|June 10 2014]]
* No meeting 2014-06-03 due to no topics
* [[WebAPI/2014-05-27|May 27 2014]]
* [[WebAPI/2014-05-20|May 20 2014]]
* No meeting 2014-05-13 due to many people attending an event
* [[WebAPI/2014-05-06|May 06 2014]]
* [[WebAPI/2014-04-29|April 29 2014]]
* [[WebAPI/2014-04-22|April 22 2014]]
* [[WebAPI/2014-04-15|April 15 2014]]
* No meeting 2014-04-08 due to Vidyo being down (and no topics)
* [[WebAPI/2014-04-01|April 01 2014]]
* [[WebAPI/2014-03-25|March 25 2014]]
* [[WebAPI/2014-03-18|March 18 2014]]
* [[WebAPI/2014-03-11|March 11 2014]]
* [[WebAPI/2014-03-04|March 04 2014]]
* No meeting 2014-02-25 due to no topics :)
* [[WebAPI/2014-02-18|February 18 2014]]
* [[WebAPI/2014-02-11|February 11 2014]]
* [[WebAPI/2014-02-04|February 4 2014]]
* No meeting 2014-01-28 due to work week
* [[WebAPI/2014-01-21|January 21 2014]]
* [[WebAPI/2014-01-14|January 14 2014]]
* [[WebAPI/2014-01-07|January 7 2014]]
|}


{| class="wikitable collapsible" style="width: 100%"
{| class="wikitable collapsible collapsed" style="width: 100%"
! 2013  
! 2013  
|-
|-
|
|
* No meeting 2013-12-31 due to holidays
* No meeting 2013-12-24 due to holidays
* [[WebAPI/2013-12-17-take2|December 17 2013]]
* [[WebAPI/2013-12-10|December 10 2013]]
* [[WebAPI/2013-12-03|December 03 2013]]
* [[WebAPI/2013-11-26|November 26 2013]]
* [[WebAPI/2013-11-19|November 19 2013]]
* [[WebAPI/2013-11-12|November 12 2013]]
* [[WebAPI/2013-11-05|November 05 2013]]
* [[WebAPI/2013-10-29|October 29 2013]]
* [[WebAPI/2013-10-22|October 22 2013]]
* [[WebAPI/2013-10-15|October 15 2013]]
* [[WebAPI/2013-10-08|October 8 2013]]
* [[WebAPI/2013-10-01|October 1 2013]]
* [[WebAPI/2013-09-24|September 24 2013]]
* [[WebAPI/2013-09-17|September 17 2013]]
* [[WebAPI/2013-09-10|September 10 2013]]
* [[WebAPI/2013-09-03|September 03 2013]]
* [[WebAPI/2013-08-27|August 27 2013]]
* [[WebAPI/2013-08-20|August 20 2013]]
* [[WebAPI/2013-08-13|August 13 2013]]
* [[WebAPI/2013-08-06|August 6 2013]]
* [[WebAPI/2013-07-30|July 30 2013]]
* [[WebAPI/2013-07-23|July 23 2013]]
* [[WebAPI/2013-07-16|July 16 2013]]
* No meeting 2013-07-09 due to work week
* [[WebAPI/2013-07-02|July 2 2013]]
* [[WebAPI/2013-06-25|June 25 2013]]
* [[WebAPI/2013-06-18|June 18 2013]]
* [[WebAPI/2013-06-11|June 11 2013]]
* [[WebAPI/2013-06-04|June 04 2013]]
* [[WebAPI/2013-05-28|May 28 2013]]
* [[WebAPI/2013-05-21|May 21 2013]]
* [[WebAPI/2013-05-14|May 14 2013]]
* [[WebAPI/2013-05-07|May 7 2013]]
* [[WebAPI/2013-04-30|April 30 2013]]
* [[WebAPI/2013-04-23|April 23 2013]]
* No meeting 2013-04-16 due to work week
* [[WebAPI/2013-04-09|April 9 2013]]
* April 02 2013 - planning session ([[WebAPI/PlannedWork|output]]) was done instead of regular meeting
* April 02 2013 - planning session ([[WebAPI/PlannedWork|output]]) was done instead of regular meeting
* [[WebAPI/2013-03-26|March 26 2013]]
* [[WebAPI/2013-03-26|March 26 2013]]
Line 530: Line 776:
* [[WebAPI/2011-08-23|August 23 2011]]
* [[WebAPI/2011-08-23|August 23 2011]]
|}
|}
== Communication ==
=== Mailing-list / Newsgroup ===
You can subscribe to the mailing list here: https://lists.mozilla.org/listinfo/dev-webapi
And the web based API is here: http://groups.google.com/group/mozilla.dev.webapi/topics
The newsgroup lives on the news.mozilla.org server and has the name mozilla.dev.webapi
=== IRC ===
Find us on irc.mozilla.org in #webapi.
[[IRC|Need help to use Mozilla IRC servers?]]


=== See also ===
=== See also ===
6

edits