WebAPI: Difference between revisions
No edit summary |
(adding link to MDN documentation in highlighted box) |
||
(280 intermediate revisions by 37 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 | 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 | 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=== | |||
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}} | |||
STATUS = notPlanned | certifiedOnly | implemented | notImplemented | offByDefault | |||
PLATFORM = Desktop | Android | B2G | |||
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" | ||
|- | |- | ||
! API | ! API | ||
! Description | ! Description | ||
! | ! Standardization | ||
! colspan="3"|Availability | |||
! See also | |||
|- | |- | ||
| [[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. | ||
| | | [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|Android}} | |||
| {{WebAPIPlatformAvailability|certifiedOnly|B2G}} | |||
| {{bug|674726}}, [[WebAPI/Security/WebTelephony|Security]] | |||
|- | |- | ||
| [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. | ||
| | | [http://www.w3.org/TR/vibration/ W3C REC] (Device APIs) | ||
<!-- | |||
* dom.vibrator.enabled set to true in Navigator.cpp | |||
--> | |||
| {{WebAPIPlatformAvailability|notPlanned|Desktop}} | |||
| {{WebAPIPlatformAvailability|implemented|Android}} | |||
| {{WebAPIPlatformAvailability|implemented|B2G}} | |||
| {{bug|679966}}, [[WebAPI/Security/Vibration|Security]] | |||
|- | |- | ||
| [[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. | ||
| | | [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|offByDefault|Android}} | |||
| {{WebAPIPlatformAvailability|certifiedOnly|B2G}} | |||
| {{bug|674725}}, [[WebAPI/Security/SMS|Security]] | |||
|- | |- | ||
| [[WebAPI/IdleAPI|Idle API]] | | [[WebAPI/IdleAPI|Idle API]] | ||
| Get notifications when user is idle. | | Get notifications when user is idle. | ||
| | | 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|Android}} | |||
| {{WebAPIPlatformAvailability|certifiedOnly|B2G}} | |||
| {{bug|715041}}, [[WebAPI/Security/Idle|Security]] | |||
|- | |- | ||
| [[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. | ||
| | | [https://w3c.github.io/screen-orientation/ W3C WD] (WebApps) | ||
<!-- | |||
* implementations in widget/{android,gonk} | |||
--> | |||
| {{WebAPIPlatformAvailability|notPlanned|Desktop}} | |||
| {{WebAPIPlatformAvailability|implemented|Android}} | |||
| {{WebAPIPlatformAvailability|implemented|B2G}} | |||
| {{bug|720794}} {{bug|740188}} {{bug|673922}}, [[WebAPI/Security/ScreenOrientation|Security]] | |||
|- | |- | ||
| [[WebAPI/SettingsAPI|Settings API]] | | [[WebAPI/SettingsAPI|Settings API]] | ||
| Set system-wide configurations that are saved permanently on the device. | | Set system-wide configurations that are saved permanently on the device. | ||
| | | Future? | ||
| | <!-- | ||
| | * dom.mozSettings.enabled=false in all.js, true in b2g.js | ||
| {{ | --> | ||
| | | {{WebAPIPlatformAvailability|notPlanned|Desktop}} | ||
| | | {{WebAPIPlatformAvailability|notPlanned|Android}} | ||
| {{WebAPIPlatformAvailability|certifiedOnly|B2G}} | |||
| {{bug|678695}}, [[WebAPI/Security/Settings|Security]] | |||
|- | |- | ||
| [[WebAPI/PowerManagementAPI|Power Management API]] | | [[WebAPI/PowerManagementAPI|Power Management API]] | ||
| 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? | ||
<!-- | |||
* MozPowerManager.webidl | |||
* how do we know this is b2g-only? | |||
* certified only check is done in nsIPermissionManager | |||
--> | |||
| {{WebAPIPlatformAvailability|notPlanned|Desktop}} | |||
| {{WebAPIPlatformAvailability|notImplemented|Android}} | |||
| {{WebAPIPlatformAvailability|certifiedOnly|B2G}} | |||
| {{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? | ||
<!-- | |||
* 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|notImplemented|Android}} | |||
| {{WebAPIPlatformAvailability|certifiedOnly|B2G}} | |||
| {{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. | ||
| | | [http://www.w3.org/2012/sysapps/tcp-udp-sockets/ W3C ED] (SysApps) | ||
<!-- | |||
| | * dom.mozTCPSocket.enabled only true in b2g/app/b2g.js, not in all.js | ||
| {{ | --> | ||
| | | {{WebAPIPlatformAvailability|privilegedAndCertified|Desktop}} | ||
| | | {{WebAPIPlatformAvailability|privilegedAndCertified|Android}} | ||
| {{WebAPIPlatformAvailability|privilegedAndCertified|B2G}} | |||
| {{bug|733573}} {{bug|892833}}, [[WebAPI/Security/TCPSocket|Security]] | |||
|- | |- | ||
| | | [http://www.w3.org/TR/geolocation-API/ Geolocation API] | ||
| {{ | | Access to the end user's location. | ||
| | | [http://www.w3.org/TR/geolocation-API/ W3C REC] | ||
| | <!-- | ||
* geolocation PROMPT_ACTION for app/privileged/certified | |||
--> | |||
| {{WebAPIPlatformAvailability|implemented|Desktop}} | |||
| {{WebAPIPlatformAvailability|implemented|Android}} | |||
| {{WebAPIPlatformAvailability|implemented|B2G}} | |||
| [[WebAPI/Security/Geolocation|Security]] | |||
|- | |- | ||
| [http://groups.google.com/group/mozilla.dev.webapi/browse_thread/thread/ed980c42261c5f4a WiFi Information API] | | [http://groups.google.com/group/mozilla.dev.webapi/browse_thread/thread/ed980c42261c5f4a WiFi Information API] | ||
| | | Privileged API to get a list of available WiFi networks. Also get signal strength and name of currently connected network, etc. | ||
| Future? | |||
| | <!-- | ||
* wifi-manage permission | |||
* dom/moz.build won't go into dom/wifi unless MOZ_WIDGET_TOOLKIT==gonk | |||
--> | |||
| {{WebAPIPlatformAvailability|notPlanned|Desktop}} | |||
| {{WebAPIPlatformAvailability|notImplemented|Android}} | |||
| {{WebAPIPlatformAvailability|certifiedOnly|B2G}} | |||
| [[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. | ||
| | | Needs plan | ||
| | <!-- | ||
| | * device.storage.enabled pref=false in all.js, true in b2g.js | ||
| | * webapps-manage permission | ||
| | --> | ||
| | | {{WebAPIPlatformAvailability|offByDefault|Desktop}} | ||
| {{WebAPIPlatformAvailability|offByDefault|Android}} | |||
| {{WebAPIPlatformAvailability|privilegedAndCertified|B2G}} | |||
| {{bug|717103}}, [[WebAPI/Security/DeviceStorage|Security]] | |||
|- | |- | ||
| [[WebAPI/ContactsAPI|Contacts API]] | | [[WebAPI/ContactsAPI|Contacts API]] | ||
| Add/Read/Modify the device contacts address book. | | Add/Read/Modify the device contacts address book. | ||
| | | [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|offByDefault|Android}} | ||
| {{WebAPIPlatformAvailability|privilegedAndCertified|B2G}} | |||
| {{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. | |||
| [http://www.w3.org/TR/pointerlock/ W3C CR] (WebApps) | |||
<!-- | |||
* FIXME: I see implementation but it's unclear how it's not implemented on b2g | |||
-->| {{WebAPIPlatformAvailability|implemented|Desktop}} | |||
| {{WebAPIPlatformAvailability|notPlanned|Android}} | |||
| {{WebAPIPlatformAvailability|notPlanned|B2G}} | |||
| {{bug|633602}} | | {{bug|633602}} | ||
|- | |- | ||
| [https://developer.mozilla.org/en/ | | [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 an Open WebApps app store. | |||
| Install web apps and manage installed webapps. Also allows an installed webapp to get payment information. Everything needed to build | | [http://w3c.github.io/manifest/ W3C ED] (WebAps) | ||
| | <!-- | ||
* interfaces/apps in dom/moz.build with no conditionals | |||
| | --> | ||
| {{ | | {{WebAPIPlatformAvailability|implemented|Desktop}} | ||
| | | {{WebAPIPlatformAvailability|implemented|Android}} | ||
| | | {{WebAPIPlatformAvailability|implemented|B2G}} | ||
| {{bug|697006}}, [[WebAPI/Security/OpenWebApp|Security]] | |||
|- | |- | ||
| [[WebAPI/WebBluetooth|WebBluetooth]] | | [[WebAPI/WebBluetooth|WebBluetooth]] | ||
| Low level access to Bluetooth hardware. | | Low level access to Bluetooth hardware. | ||
| | | Future? | ||
<!-- | |||
| | * only certified in dom/apps/src/PermissionsTable.jsm | ||
| {{ | * MOZ_B2G_BT=1 with --enable-b2g-bt | ||
| | --> | ||
| | | {{WebAPIPlatformAvailability|notPlanned|Desktop}} | ||
| {{WebAPIPlatformAvailability|notPlanned|Android}} | |||
| {{WebAPIPlatformAvailability|certifiedOnly|B2G}} | |||
| {{bug|674737}}, [[WebAPI/Security/Bluetooth|Security]] | |||
|- | |- | ||
| [http://dvcs.w3.org/hg/dap/raw-file/tip/network-api/index.html Network Information API] | | [http://dvcs.w3.org/hg/dap/raw-file/tip/network-api/index.html Network Information API] | ||
| {{bug|677166}} {{bug|713199}} | | Get basic information about current network connectivity. Example: "How fast of a connection do I have?". | ||
| | | 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|implemented|Android}} | |||
| {{WebAPIPlatformAvailability|notImplemented|B2G}} | |||
| {{bug|677166}} {{bug|713199}}, [[WebAPI/Security/NetworkInfo|Security]] | |||
|- | |- | ||
| [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. | ||
| | | [http://www.w3.org/TR/battery-status/ W3C CR] (Device APIs) | ||
| | <!-- | ||
| | * no explicit permission | ||
| | * hal/*/*Battery.cpp | ||
| | --> | ||
| | | {{WebAPIPlatformAvailability|implemented|Desktop}} | ||
| {{WebAPIPlatformAvailability|implemented|Android}} | |||
| {{WebAPIPlatformAvailability|implemented|B2G}} | |||
| {{bug|678694}}, [[WebAPI/Security/Battery|Security]] | |||
|- | |- | ||
| Alarm API | | [[WebAPI/AlarmAPI|Alarm API]] | ||
| 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) | ||
<!-- | |||
* dom.mozAlarms.enabled = true only in b2g.js (checked for in AlarmsManager.js) | |||
--> | |||
| {{WebAPIPlatformAvailability|Implemented|Desktop}} | |||
| {{WebAPIPlatformAvailability|notImplemented|Android}} | |||
| {{WebAPIPlatformAvailability|implemented|B2G}} | |||
| {[[WebAPI/Security/Alarm|Security]] | |||
|- | |- | ||
| Browser API | | [[WebAPI/BrowserAPI|Browser API]] | ||
| Enables implementing a browser completely in web technologies. | | Enables implementing a browser completely in web technologies. | ||
| | | Future? | ||
<!-- | |||
* dom.mozBrowserFramesEnabled only set (and true) in b2g.js | |||
--> | |||
| {{WebAPIPlatformAvailability|notImplemented|Desktop}} | |||
| {{WebAPIPlatformAvailability|notImplemented|Android}} | |||
| {{WebAPIPlatformAvailability|privilegedAndCertified|B2G}} | |||
| {{bug|693515}}, [[WebAPI/Security/BrowserAPI|Security]] | |||
|- | |- | ||
| Time/Clock API | | Time/Clock API | ||
| Set current time. Timezone will go in the Settings API. | | Set current time. Timezone will go in the Settings API. | ||
| | | Future? | ||
<!-- | |||
* implementation is in dom/time | |||
* TimeManager::PrefEnabled returns true since MOZ_TIME_MANAGER=1 in b2g/confvars.sh | |||
--> | |||
| {{WebAPIPlatformAvailability|notimplemented|Desktop}} | |||
| {{WebAPIPlatformAvailability|notimplemented|Android}} | |||
| {{WebAPIPlatformAvailability|certifiedOnly|B2G}} | |||
| {{bug|714357}}, {{bug|714358}}, [http://groups.google.com/group/mozilla.dev.webapi/browse_thread/thread/f382abb068abd4c5 API proposed] | |||
|- | |||
| [[WebAPI/WebActivities|Web Activities]] | |||
| Delegate an activity to another application. | |||
| Discussed in Device APIs | |||
<!-- | |||
* we only package XPCOM components and interfaces in b2g/installer/package-manifest.in | |||
--> | |||
| {{WebAPIPlatformAvailability|notImplemented|Desktop}} | |||
| {{WebAPIPlatformAvailability|notImplemented|Android}} | |||
| {{WebAPIPlatformAvailability|implemented|B2G}} | |||
| {{bug|715814}} {{bug|776027}} for Android | |||
|- | |||
| [[WebAPI/SimplePush|Push Notifications API]] | |||
| Allow the platform to send notification messages to specific applications. | |||
| [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|Android}} | |||
| {{WebAPIPlatformAvailability|Implemented|B2G}} | |||
| {{bug|822712}} for B2G, {{bug|834033}} for Android | |||
|- | |||
| Permissions API | |||
| Allow Settings app to manage all app permissions in a centralized location | |||
| Future? | |||
<!-- | |||
* dom.mozPermissionSettings.enabled=true in b2g.js, false in all.js | |||
--> | |||
| {{WebAPIPlatformAvailability|notPlanned|Desktop}} | |||
| {{WebAPIPlatformAvailability|notPlanned|Android}} | |||
| {{WebAPIPlatformAvailability|certifiedOnly|B2G}} | |||
| {{bug|707625}}, [[WebAPI/Security/PermissionsAPI|Security]] | |||
|- | |||
| [https://groups.google.com/forum/?fromgroups#!topic/mozilla.dev.webapi/PraULCQntqA WebFM API] | |||
| For FM radio feature. | |||
| 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|Android}} | |||
| {{WebAPIPlatformAvailability|implemented|B2G}} | |||
| {{bug|749053}}, [[WebAPI/Security/FMRadioAPI|Security]] | |||
|- | |||
| [[WebAPI/FileHandleAPI|FileHandle API]] | |||
| Writable files with locking. | |||
| Needs plan | |||
<!-- | |||
* implemented everywhere in 5f93a8930 (git SHA-1) (bug 726593) | |||
--> | |||
| {{WebAPIPlatformAvailability|implemented|Desktop}} | |||
| {{WebAPIPlatformAvailability|implemented|Android}} | |||
| {{WebAPIPlatformAvailability|implemented|B2G}} | |||
| {{bug|726593}} | |||
|- | |||
| Network Stats API | |||
| Monitor data usage and expose data to privileged apps | |||
| Future? | |||
<!-- | |||
* dom.mozNetworkStats.enabled=true in b2g.js, false in all.js | |||
--> | |||
| {{WebAPIPlatformAvailability|notPlanned|Desktop}} | |||
| {{WebAPIPlatformAvailability|notPlanned|Android}} | |||
| {{WebAPIPlatformAvailability|certifiedOnly|B2G}} | |||
| {{bug|746069}} | |||
|- | |- | ||
| | | [[WebAPI/WebPayment|WebPayment]] | ||
| 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/2013May/0025.html Beginning] | |||
<!-- | |||
* dom.mozPay.enabled=true in at least b2g.js and mobile/...js | |||
--> | |||
| {{WebAPIPlatformAvailability|Implemented|Desktop}} | |||
| {{WebAPIPlatformAvailability|implemented|Android}} | |||
| {{WebAPIPlatformAvailability|implemented|B2G}} | |||
| | | | ||
|- | |- | ||
| | | [http://www.w3.org/TR/IndexedDB/ IndexedDB] | ||
| Client-side storage of structured data and high performance searches on this data | |||
| [http://www.w3.org/TR/IndexedDB/ W3C REC] (WebApps) | |||
<!-- | |||
* in dom/moz.build | |||
--> | |||
| {{WebAPIPlatformAvailability|implemented|Desktop}} | |||
| {{WebAPIPlatformAvailability|implemented|Android}} | |||
| {{WebAPIPlatformAvailability|implemented|B2G}} | |||
| {{bug|553412}}, [[WebAPI/Security/indexDB|Security]] | |||
|- | |||
| [[WebAPI/ArchiveAPI|Archive API]] | |||
| Blob support for Zip file contents | |||
| Future? | |||
<!-- | |||
* dom.archivereader.enabled = false in all.js | |||
--> | |||
| {{WebAPIPlatformAvailability|offByDefault|Desktop}} | |||
| {{WebAPIPlatformAvailability|offByDefault|Android}} | |||
| {{WebAPIPlatformAvailability|offByDefault|B2G}} | |||
| {{bug|772434}} | |||
|- | |||
| [http://www.w3.org/TR/ambient-light/ Ambient light sensor] | |||
| Device light sensor support | |||
| 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|implemented|Android}} | |||
| {{WebAPIPlatformAvailability|implemented|B2G}} | |||
| {{bug|738465}} | |||
|- | |||
| [http://www.w3.org/TR/proximity/ Proximity sensor] | |||
| Device proximity sensor support | |||
| W3C WD | |||
<!-- | |||
* implementations spread out | |||
--> | |||
| {{WebAPIPlatformAvailability|notPlanned|Desktop}} | |||
| {{WebAPIPlatformAvailability|implemented|Android}} | |||
| {{WebAPIPlatformAvailability|implemented|B2G}} | |||
| {{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}} | |||
| ? | |||
|} | |||
===Planned for the future=== | |||
{| cellpadding="2" border="1" | |||
|- | |||
! API | |||
! Bugs | |||
! Description | |||
! Progress | |||
! colspan="3"|Availability | |||
|- | |||
|- | |||
| [[WebAPI/ResourceLockAPI|Resource lock API]] | |||
| {{bug|697132}} | |||
| 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]]. There is renewed interest in a standard here: http://w3c.github.io/screen-wake . | |||
|- | |||
| UDP Datagram Socket API | |||
| {{bug|745283}} | |||
| Low-level UDP API. | |||
| There are patches up for review as of mid-July 2014. | |||
|- | |||
| USB file-reading API | |||
| {{bug|748350}} {{bug|737153}} | |||
| When enabled, allows mounting of device storage as a USB filesystem on the tethered computer. | |||
| Must be complete by June/July.<br>Not really a webAPI, no security design. | |||
|- | |||
| [[Platform/Features/VideoConferencing|Camera API]] | |||
| | | | ||
| | | This is part of the larger WebRTC effort. This is a big piece of work so see the link. | ||
| API | | API and implementation underway. <br>[[WebAPI/Security/Camera|Security Design Complete]] | ||
|- | |- | ||
| | | [[Platform/Features/VideoConferencing|Peer to Peer API]] | ||
| | | | ||
| | | This is part of the larger WebRTC effort. This is a big piece of work so see the link. | ||
| | | API and implementation underway. | ||
|- | |||
| [[WebAPI/WebUSB|WebUSB]] | |||
| {{bug|674718}} | |||
| Low level access to USB hardware. | |||
| [[WebAPI/Security/WebUSB|Security Design Complete]] | |||
|- | |- | ||
| | | HTTP-cache API | ||
| | | | ||
| | | 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 | ||
|- | |||
| [[WebAPI/CalendarAPI|Calendar API]] | |||
| | |||
| Add/Read/Modify to the device calendar. | |||
| Implementation not planned ATM. If/when implemented, it should mimic [[WebAPI/ContactsAPI]]. | |||
|- | |- | ||
| Spellcheck API | | Spellcheck API | ||
Line 189: | 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. | | 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]] | |||
| | |||
| Allows to register the user activity on the phone. | |||
| API proposal exists. Not planned for 1.0. | |||
|- | |||
| [[WebAPI/KeboardIME|Keyboard/IME API]] | |||
| {{bug|737110}} ([https://groups.google.com/forum/?fromgroups#!topic/mozilla.dev.webapi/Vs3-HGv9NNw WebAPI mailing list post], [https://groups.google.com/forum/?fromgroups=#!topic/mozilla.dev.webapi/A7dIBaR3lpU Extended API mailing list post]) | |||
| Enables implementing virtual keyboards. | |||
| 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. | |||
| | | | ||
| Allow the | | {{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|Android}} | |||
| {{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}} | |||
|} | |||
===Legend=== | |||
{| cellpadding="2" border="1" | |||
|- | |||
| D = Desktop, A = Android, B = B2G | |||
|- | |||
| style="background-color:#8CF;"|only available to certified apps on this platform | |||
|- | |||
| style="background-color:#009999;"|only available to privileged and certified apps on this platform | |||
|- | |||
| style="background-color:#90ff90;"|implemented and preference enabled by default on on this platform | |||
|- | |||
| style="background-color:#FC6;"|implemented but requires explicitly turning on the preference on this platform | |||
|- | |||
| style="background-color:#ff9090;"|not implemented for this platform | |||
|- | |||
| style="background-color: silver;"|not currently planned for this platform | |||
|} | |} | ||
== 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 209: | 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 218: | Line 574: | ||
In many cases we are going to want to do both high level and low level APIs, with an initial priority on low level. High level APIs will let us create more friendly APIs, which are both easier to use for developers, and better for users since we can provide better security guarantees. However low level APIs will provide support for a wider range of hardware and use cases and will get the browser out of the critical path for innovation. | In many cases we are going to want to do both high level and low level APIs, with an initial priority on low level. High level APIs will let us create more friendly APIs, which are both easier to use for developers, and better for users since we can provide better security guarantees. However low level APIs will provide support for a wider range of hardware and use cases and will get the browser out of the critical path for innovation. | ||
== Plans == | |||
* [[WebAPI/PlannedWork|Old planning document]] | |||
* Old (2013) [[WebAPI/Storage2013|storage discussion notes]] | |||
== Meetings == | == Meetings == | ||
We used to have weekly meetings but as of 1 October 2014 we no longer do. | |||
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. | |||
== | === Meeting Notes === | ||
=== | <!-- | ||
Create a new weekly agenda from the [[WebAPI/0-0-0|template]]: | |||
<createbox> | |||
align=left | |||
type=create | |||
preload=WebAPI/0-0-0 | |||
default={{#time: Y-m-d | tuesday}} | |||
prefix=WebAPI/ | |||
</createbox> | |||
You | '''''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 collapsed" style="width: 100%" | |||
! 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 | |||
* [[WebAPI/2013-03-26|March 26 2013]] | |||
* [[WebAPI/2013-03-19|March 19 2013]] | |||
* [[WebAPI/2013-03-12|March 12 2013]] | |||
* [[WebAPI/2013-03-05|March 5 2013]] | |||
* [[WebAPI/2013-02-26|February 26 2013]] | |||
* [[WebAPI/2013-02-19|February 19 2013]] | |||
* [[WebAPI/2013-02-12|February 12 2013]] | |||
* No meeting 2013-02-05 due to work week | |||
* [[WebAPI/2013-01-29|January 29 2013]] | |||
* [[WebAPI/2013-01-22|January 22 2013]] | |||
* [[WebAPI/2013-01-15|January 15 2013]] | |||
* No meeting 2013-01-08 due to work week | |||
* No meeting 2013-01-01 due to New Year's Day holiday | |||
|} | |||
{| class="wikitable collapsible collapsed" style="width: 100%" | |||
! 2012 | |||
|- | |||
| | |||
* No meeting 2012-12-25 due to Christmas holiday | |||
* [[WebAPI/2012-12-18|December 18 2012]] | |||
* [[WebAPI/2012-12-11|December 11 2012]] | |||
* [[WebAPI/2012-12-04|December 4 2012]] | |||
* [[WebAPI/2012-11-27|November 27 2012]] | |||
* [[WebAPI/2012-11-20|November 20 2012]] | |||
* [[WebAPI/2012-11-13|November 13 2012]] | |||
* No meeting 2012-11-06 due to work week | |||
* [[WebAPI/2012-10-30|October 30 2012]] | |||
* [[WebAPI/2012-10-23|October 23 2012]] | |||
* [[WebAPI/2012-10-16|October 16 2012]] | |||
* [[WebAPI/2012-10-09|October 9 2012]] | |||
* [[WebAPI/2012-10-02|October 2 2012]] | |||
* [[WebAPI/2012-09-25|September 25 2012]] | |||
* [[WebAPI/2012-09-18|September 18 2012]] | |||
* [[WebAPI/2012-09-11|September 11 2012]] | |||
* [[WebAPI/2012-09-04|September 4 2012]] | |||
* No meetings 2012-08-21 or 2012-08-28 due to work weeks | |||
* [[WebAPI/2012-08-14|August 14 2012]] | |||
* [[WebAPI/2012-08-07|August 7 2012]] | |||
* [[WebAPI/2012-07-31|July 31 2012]] | |||
* [[WebAPI/2012-07-24|July 24 2012]] | |||
* [[WebAPI/2012-07-17|July 17 2012]] | |||
* [[WebAPI/2012-07-10|July 10 2012]] | |||
* [[WebAPI/2012-07-03|July 3 2012]] | |||
* [[WebAPI/2012-06-26|June 26 2012]] | |||
* [[WebAPI/2012-06-19|June 19 2012]] | |||
* [[WebAPI/2012-06-12|June 12 2012]] | |||
* [[WebAPI/2012-06-05|June 5 2012]] | |||
* [[WebAPI/2012-05-29|May 29 2012]] | |||
* [[WebAPI/2012-05-22|May 22 2012]] | |||
* [[WebAPI/2012-05-15|May 15 2012]] | |||
* [[WebAPI/2012-05-08|May 8 2012]] | |||
* [[WebAPI/2012-05-01|May 1 2012]] | |||
* [[WebAPI/2012-04-24|April 24 2012]] | |||
* [[WebAPI/2012-04-10|April 10 2012]] | |||
* [[WebAPI/2012-04-03|April 3 2012]] | |||
* [[WebAPI/2012-03-20|March 20 2012]] | |||
* [[WebAPI/2012-03-13|March 13 2012]] | |||
* [[WebAPI/2012-03-06|March 6 2012]] | |||
* [[WebAPI/2012-02-28|February 28 2012]] | |||
* [[WebAPI/2012-02-14|February 14 2012]] | |||
* [[WebAPI/2012-02-07|February 7 2012]] | |||
* [[WebAPI/2012-01-31|January 31 2012]] | |||
* [[WebAPI/2012-01-24|January 24 2012]] | |||
* [[WebAPI/2012-01-17|January 17 2012]] | |||
* [[WebAPI/2012-01-10|January 10 2012]] | |||
* [[WebAPI/2012-01-03|January 3 2012]] | |||
|} | |||
== | {| class="wikitable collapsible collapsed" style="width: 100%" | ||
! 2011 | |||
[[ | |- | ||
| | |||
* [[WebAPI/2011-12-20|December 20 2011]] | |||
* [[WebAPI/2011-12-13|December 13 2011]] | |||
* [[WebAPI/2011-11-29|November 29 2011]] | |||
* [[WebAPI/2011-11-22|November 22 2011]] | |||
* [[WebAPI/2011-11-15|November 15 2011]] | |||
* [[WebAPI/2011-11-08|November 8 2011]] | |||
* [[WebAPI/2011-11-01|November 1 2011]] | |||
* [[WebAPI/2011-10-25|October 25 2011]] | |||
* [[WebAPI/2011-10-18|October 18 2011]] | |||
* [[WebAPI/2011-10-11|October 11 2011]] | |||
* [[WebAPI/2011-10-04|October 4 2011]] | |||
* [[WebAPI/2011-09-27|September 27 2011]] | |||
* [[WebAPI/2011-09-20|September 20 2011]] | |||
* [[WebAPI/2011-09-06|September 6 2011]] | |||
* [[WebAPI/2011-08-30|August 30 2011]] | |||
* [[WebAPI/2011-08-23|August 23 2011]] | |||
|} | |||
=== See also === | === See also === | ||
Line 250: | Line 787: | ||
* [http://robnyman.github.com/vibration/ Vibration API by Robert Nyman] | * [http://robnyman.github.com/vibration/ Vibration API by Robert Nyman] | ||
* [http://people.mozilla.org/~jhammink/webapi_test_pages/ Demos by John Hammink] | * [http://people.mozilla.org/~jhammink/webapi_test_pages/ Demos by John Hammink] | ||
* [http://colinfrei.com/networkapi.html Network API by Colin Frei] | |||
==== Other efforts ==== | ==== Other efforts ==== |
Latest revision as of 19:50, 2 December 2016
The Mozilla WebAPI team is pushing the envelope of the web to include --- and in places exceed --- the capabilities of competing stacks.
Contributing
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
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
Unless otherwise noted, APIs listed in the table below were available in Firefox OS v1.0.1 or will be available in v1.1.
API | Description | Standardization | Availability | See also | ||
---|---|---|---|---|---|---|
WebTelephony | Allow placing and answering phone calls as well as build in-call UI. | W3C ED (SysApps) | D | A | B | bug 674726, Security |
Vibration API | Control device vibration for things like haptic feedback in games. Not intended to solve things like vibration for notification. | W3C REC (Device APIs) | D | A | B | bug 679966, Security |
WebSMS | Send/receive SMS messages as well as manage messages stored on device. | W3C ED (SysApps) | D | A | B | bug 674725, Security |
Idle API | Get notifications when user is idle. | Needs plan | D | A | B | bug 715041, Security |
Screen Orientation | Get notification when screen orientation changes as well as control which screen orientation a page/app wants. | W3C WD (WebApps) | D | A | B | bug 720794 bug 740188 bug 673922, Security |
Settings API | Set system-wide configurations that are saved permanently on the device. | Future? | D | A | B | bug 678695, Security |
Power Management API | Turn on/off screen, cpu, device power, etc. Listen and inspect resource lock events. | Future? | D | A | B | bug 708964, Security bug 1017232, implement for Android |
Mobile Connection API | Expose signal strength, operator, etc for GSM and other mobile connections. This does not cover WiFi. | Future? | D | A | B | bug 729173, Security bug 1017233, implementation on Android |
TCP Socket API | Low-level TCP socket API. Will also include SSL support. | W3C ED (SysApps) | D | A | B | bug 733573 bug 892833, Security |
Geolocation API | Access to the end user's location. | W3C REC | D | A | B | Security |
WiFi Information API | Privileged API to get a list of available WiFi networks. Also get signal strength and name of currently connected network, etc. | Future? | D | A | B | Security bug 1017234, Android implementation bug |
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. | Needs plan | D | A | B | bug 717103, Security |
Contacts API | Add/Read/Modify the device contacts address book. | W3C ED (SysApps) | D | A | B | bug 674720, bug 857730 for Android, Security |
Mouse Lock API | Lock access to mouse and get access to movement deltas rather than coordinates. | W3C CR (WebApps) | D | A | B | bug 633602 |
Open WebApps | 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 ED (WebAps) | D | A | B | bug 697006, Security |
WebBluetooth | Low level access to Bluetooth hardware. | Future? | D | A | B | bug 674737, Security |
Network Information API | Get basic information about current network connectivity. Example: "How fast of a connection do I have?". | W3C ED | D | A | B | bug 677166 bug 713199, Security |
Battery Status API | Information about battery charge level and if device is plugged in. | W3C CR (Device APIs) | D | A | B | bug 678694, Security |
Alarm API | Schedule a notification, or for an application to be started, at a specific time. | W3C WD (SysApps) | D | A | B | {Security |
Browser API | Enables implementing a browser completely in web technologies. | Future? | D | A | B | bug 693515, Security |
Time/Clock API | Set current time. Timezone will go in the Settings API. | Future? | D | A | B | bug 714357, bug 714358, API proposed |
Web Activities | Delegate an activity to another application. | Discussed in Device APIs | D | A | B | bug 715814 bug 776027 for Android |
Push Notifications API | Allow the platform to send notification messages to specific applications. | W3C ED (Webapps) | D | A | B | bug 822712 for B2G, bug 834033 for Android |
Permissions API | Allow Settings app to manage all app permissions in a centralized location | Future? | D | A | B | bug 707625, Security |
WebFM API | For FM radio feature. | Future? | D | A | B | bug 749053, Security |
FileHandle API | Writable files with locking. | Needs plan | D | A | B | bug 726593 |
Network Stats API | Monitor data usage and expose data to privileged apps | Future? | D | A | B | bug 746069 |
WebPayment | Allow web content to initiate payments and refunds for virtual goods. For the server implementation, see WebPaymentProvider. | Beginning | D | A | B | |
IndexedDB | Client-side storage of structured data and high performance searches on this data | W3C REC (WebApps) | D | A | B | bug 553412, Security |
Archive API | Blob support for Zip file contents | Future? | D | A | B | bug 772434 |
Ambient light sensor | Device light sensor support | W3C WD | D | A | B | bug 738465 |
Proximity sensor | Device proximity sensor support | W3C WD | D | A | B | bug 738131 |
SystemXHR | External (non-same origin) XMLHttpRequests | ? | D | A | B | ? |
Planned for the future
API | Bugs | Description | Progress | Availability | ||
---|---|---|---|---|---|---|
Resource lock API | bug 697132 | Prevent resources from being turned off, for example screen dimming, WiFi turning off, CPU going into sleep mode etc. | Complete. Security Design Complete. There is renewed interest in a standard here: http://w3c.github.io/screen-wake . | |||
UDP Datagram Socket API | bug 745283 | Low-level UDP API. | There are patches up for review as of mid-July 2014. | |||
USB file-reading API | bug 748350 bug 737153 | When enabled, allows mounting of device storage as a USB filesystem on the tethered computer. | Must be complete by June/July. Not really a webAPI, no security design. | |||
Camera API | This is part of the larger WebRTC effort. This is a big piece of work so see the link. | API and implementation underway. Security Design Complete | ||||
Peer to Peer API | This is part of the larger WebRTC effort. This is a big piece of work so see the link. | API and implementation underway. | ||||
WebUSB | bug 674718 | Low level access to USB hardware. | Security Design Complete | |||
HTTP-cache API | Query what's stored in the browsers http-cache. Add/remove entries. Update expiration time. Get data directly from cache. Likely superseded by Service Workers' cache API. | None | ||||
Calendar API | Add/Read/Modify to the device calendar. | Implementation not planned ATM. If/when implemented, it should mimic WebAPI/ContactsAPI. | ||||
Spellcheck API | Enable webpages to check if a piece of text is correctly spelled as well as get suggestions for corrections. | None | ||||
Background services | Enable a web application to run in the background and perform tasks like syncing or respond to incoming messages. | Initial proposal of API. Security Design Active. Potentially superseded by the Service Worker-based Background Synchronization proposal. | ||||
LogAPI | Allows to register the user activity on the phone. | API proposal exists. Not planned for 1.0. | ||||
Keyboard/IME API | bug 737110 (WebAPI mailing list post, Extended API mailing list post) | Enables implementing virtual keyboards. | Only exposed to certified apps for V1. Controlled via a setting instead.] | D | A | B |
DataStore API | bug 871445 | Shared app/site data stores with a mechanism for multiple applications to concurrently synchronize shared data into local caches | Standardization: W3C ED (SysApps) | D | A | B |
Mobile Identity API | bug 1021594 | Allow apps to obtain a verified phone number. | D | A | B | |
WebNFC | bug 674741 | Low level access to NFC hardware. So far focusing on NDEF support. | Shipped in FxOS 1.3. Security Design Complete |
D | A | B |
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. Standardization: W3C ED (TV Control API) |
D | A | B |
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. Standardization: Presentation API |
D | A | B |
Legend
D = Desktop, A = Android, B = B2G |
only available to certified apps on this platform |
only available to privileged and certified apps on this platform |
implemented and preference enabled by default on on this platform |
implemented but requires explicitly turning on the preference on this platform |
not implemented for this platform |
not currently planned for this platform |
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. See also tips for standardizing APIs.
The goal is to standardize all APIs.
Design Principles
Security
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. 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.
Low Level vs. High Level
One question that often comes up, is should we do low level APIs, like USB access, or high level APIs, like camera access?
In many cases we are going to want to do both high level and low level APIs, with an initial priority on low level. High level APIs will let us create more friendly APIs, which are both easier to use for developers, and better for users since we can provide better security guarantees. However low level APIs will provide support for a wider range of hardware and use cases and will get the browser out of the critical path for innovation.
Plans
- Old planning document
- Old (2013) storage discussion notes
Meetings
We used to have weekly meetings but as of 1 October 2014 we no longer do.
If there's something you'd like to discuss, ask on dev-platform. Since much of this effort is under Mozilla's DOM team, #content isn't a bad place for IRC conversation.
Meeting Notes
2014 |
---|
|
2012 |
---|
|
2011 |
---|
See also
- Introducing WebAPI blog post by Robert Nyman
- More details about the WebAPI effort blog post by Jonas Sicking
- Mozilla joins the W3C DAP – WebAPI progress blog post by Robert Nyman and Jonas Sicking
- A look at the latest WebAPIs a demo/blog post by John Hammink
Demos
- Battery API by Robert Nyman
- Vibration API by Robert Nyman
- Demos by John Hammink
- Network API by Colin Frei
Other efforts
- W3C Device APIs (DAP). Mozilla developers are members of the DAP working group (announcement).
- Wholesale Applications Community (WAC)
Subpages of WebAPI
- WebAPI/0-0-0
- WebAPI/2011-08-23
- WebAPI/2011-08-30
- WebAPI/2011-09-06
- WebAPI/2011-09-20
- WebAPI/2011-09-27
- WebAPI/2011-10-04
- WebAPI/2011-10-11
- WebAPI/2011-10-18
- WebAPI/2011-10-25
- WebAPI/2011-11-01
- WebAPI/2011-11-08
- WebAPI/2011-11-15
- WebAPI/2011-11-22
- WebAPI/2011-11-29
- WebAPI/2011-12-13
- WebAPI/2011-12-20
- WebAPI/2012-01-03
- WebAPI/2012-01-10
- WebAPI/2012-01-17
- WebAPI/2012-01-24
- WebAPI/2012-01-31
- WebAPI/2012-02-07
- WebAPI/2012-02-14
- WebAPI/2012-02-28
- WebAPI/2012-03-06
- WebAPI/2012-03-13
- WebAPI/2012-03-20
- WebAPI/2012-04-03
- WebAPI/2012-04-10
- WebAPI/2012-04-24
- WebAPI/2012-05-01
- WebAPI/2012-05-08
- WebAPI/2012-05-15
- WebAPI/2012-05-22
- WebAPI/2012-05-29
- WebAPI/2012-06-05
- WebAPI/2012-06-12
- WebAPI/2012-06-19
- WebAPI/2012-06-26
- WebAPI/2012-07-03
- WebAPI/2012-07-10
- WebAPI/2012-07-17
- WebAPI/2012-07-24
- WebAPI/2012-07-31
- WebAPI/2012-08-07
- WebAPI/2012-08-14
- WebAPI/2012-08-21
- WebAPI/2012-09-04
- WebAPI/2012-09-11
- WebAPI/2012-09-18
- WebAPI/2012-09-25
- WebAPI/2012-10-02
- WebAPI/2012-10-09
- WebAPI/2012-10-16
- WebAPI/2012-10-23
- WebAPI/2012-10-30
- WebAPI/2012-11-13
- WebAPI/2012-11-20
- WebAPI/2012-11-27
- WebAPI/2012-12-04
- WebAPI/2012-12-11
- WebAPI/2012-12-18
- WebAPI/2013-01-15
- WebAPI/2013-01-22
- WebAPI/2013-01-29
- WebAPI/2013-02-12
- WebAPI/2013-02-19
- WebAPI/2013-02-26
- WebAPI/2013-03-05
- WebAPI/2013-03-12
- WebAPI/2013-03-19
- WebAPI/2013-03-26
- WebAPI/2013-04-02
- WebAPI/2013-04-09
- WebAPI/2013-04-23
- WebAPI/2013-04-30
- WebAPI/2013-05-07
- WebAPI/2013-05-14
- WebAPI/2013-05-21
- WebAPI/2013-05-28
- WebAPI/2013-06-04
- WebAPI/2013-06-11
- WebAPI/2013-06-18
- WebAPI/2013-06-25
- WebAPI/2013-07-02
- WebAPI/2013-07-16
- WebAPI/2013-07-23
- WebAPI/2013-07-30
- WebAPI/2013-08-06
- WebAPI/2013-08-13
- WebAPI/2013-08-20
- WebAPI/2013-08-27
- WebAPI/2013-09-03
- WebAPI/2013-09-10
- WebAPI/2013-09-17
- WebAPI/2013-09-24
- WebAPI/2013-10-01
- WebAPI/2013-10-08
- WebAPI/2013-10-15
- WebAPI/2013-10-22
- WebAPI/2013-10-29
- WebAPI/2013-11-05
- WebAPI/2013-11-12
- WebAPI/2013-11-19
- WebAPI/2013-11-26
- WebAPI/2013-12-03
- WebAPI/2013-12-10
- WebAPI/2013-12-17-take2
- WebAPI/2014-01-07
- WebAPI/2014-01-14
- WebAPI/2014-01-21
- WebAPI/2014-02-04
- WebAPI/2014-02-11
- WebAPI/2014-02-18
- WebAPI/2014-03-04
- WebAPI/2014-03-11
- WebAPI/2014-03-18
- WebAPI/2014-03-25
- WebAPI/2014-04-01
- WebAPI/2014-04-15
- WebAPI/2014-04-18
- WebAPI/2014-04-22
- WebAPI/2014-04-29
- WebAPI/2014-05-06
- WebAPI/2014-05-20
- WebAPI/2014-05-27
- WebAPI/2014-06-10
- WebAPI/2014-06-24
- WebAPI/2014-07-22
- WebAPI/2014-08-05
- WebAPI/2014-08-12
- WebAPI/2014-09-09
- WebAPI/2014-09-30
- WebAPI/AlarmAPI
- WebAPI/AppDefinedTeleophony
- WebAPI/AppDefinedTelephony
- WebAPI/ArchiveAPI
- WebAPI/AudioChannels
- WebAPI/B2G1.0
- WebAPI/BatteryAPI
- WebAPI/BrowserAPI
- WebAPI/BrowserAPI/Common Subset
- WebAPI/BrowserAPI/KeyboardEvent
- WebAPI/CalendarAPI
- WebAPI/CameraControl
- WebAPI/ContactsAPI
- WebAPI/ContactsAPI/2012
- WebAPI/DataStore
- WebAPI/DesignGuidelines
- WebAPI/DeviceIndexedDB
- WebAPI/DeviceStorageAPI
- WebAPI/DeviceStorageAPI2
- WebAPI/Direct Billing
- WebAPI/Docs schedule
- WebAPI/FileHandleAPI
- WebAPI/IdleAPI
- WebAPI/InputMethod API with hardware keyboard
- WebAPI/InputPortAPI
- WebAPI/Inter App Communication
- WebAPI/Inter App Communication Alt proposal
- WebAPI/KeboardIME
- WebAPI/LogAPI
- WebAPI/MobileIdentity
- WebAPI/Navigator.hasFeature
- WebAPI/NetworkAPI
- WebAPI/PlannedWork
- WebAPI/PowerManagementAPI
- WebAPI/PresentationAPI
- WebAPI/PresentationAPI/Meeting Minutes 20151208
- WebAPI/PresentationAPI/ProgramManagement
- WebAPI/PresentationAPI:CoreService
- WebAPI/PresentationAPI:Protocol Draft
- WebAPI/PresentationAPI:WebIDL Implementation
- WebAPI/PresentationDeviceInfoAPI
- WebAPI/ProposedDeviceStorageAPIWithNotifications
- WebAPI/Push
- WebAPI/Push/Meetings
- WebAPI/Push/Requirements
- WebAPI/PushAPI
- WebAPI/PushAPI old
- WebAPI/ResourceLockAPI
- WebAPI/ResourceStats
- WebAPI/ScreenOrientation
- WebAPI/Security
- WebAPI/Security/Alarm
- WebAPI/Security/Background
- WebAPI/Security/Battery
- WebAPI/Security/Bluetooth
- WebAPI/Security/BrowserAPI
- WebAPI/Security/Camera
- WebAPI/Security/Contacts
- WebAPI/Security/DeviceStorage
- WebAPI/Security/FMRadioAPI
- WebAPI/Security/Geolocation
- WebAPI/Security/Idle
- WebAPI/Security/MobileConnection
- WebAPI/Security/NetworkInfo
- WebAPI/Security/NetworkInformation
- WebAPI/Security/OpenWebApp
- WebAPI/Security/PermissionsAPI
- WebAPI/Security/PowerManagement
- WebAPI/Security/ResourceLock
- WebAPI/Security/SMS
- WebAPI/Security/ScreenOrientation
- WebAPI/Security/Sensor
- WebAPI/Security/Settings
- WebAPI/Security/TCPSocket
- WebAPI/Security/Vibration
- WebAPI/Security/WebNFC
- WebAPI/Security/WebTelephony
- WebAPI/Security/WebUSB
- WebAPI/Security/Wifi
- WebAPI/Security/indexDB
- WebAPI/Security/pushNotificationsAPI
- WebAPI/SettingsAPI
- WebAPI/SimpleCellID
- WebAPI/SimplePush
- WebAPI/SimplePush/Meetings
- WebAPI/SimplePush/Meetings/2013-02-26
- WebAPI/SimplePush/Meetings/2013-02-27
- WebAPI/SimplePush/Protocol
- WebAPI/SimplePush/ServerAPI
- WebAPI/Softkey through context menu
- WebAPI/SpeakManager
- WebAPI/SpeakerManager
- WebAPI/Storage2013
- WebAPI/SystemUpdateAPI
- WebAPI/TVAPI
- WebAPI/ThoughtsOnProposals
- WebAPI/WebActivities
- WebAPI/WebActivities/LessonsLearned
- WebAPI/WebBluetooth
- WebAPI/WebBluetooth (Until Firefox OS 2.1)
- WebAPI/WebIccManager/Multi-SIM
- WebAPI/WebMMS
- WebAPI/WebMobileConnection
- WebAPI/WebMobileConnection/Multi-SIM
- WebAPI/WebMobileConnection嗎
- WebAPI/WebNFC
- WebAPI/WebNFC/WebNFCv2 draft
- WebAPI/WebPayment
- WebAPI/WebPayment/Multi-SIM
- WebAPI/WebPaymentProvider
- WebAPI/WebPrintAPI
- WebAPI/WebSMS
- WebAPI/WebSMS/Multi-SIM
- WebAPI/WebSTK
- WebAPI/WebSerial
- WebAPI/WebSocketOverApps
- WebAPI/WebTelephony
- WebAPI/WebTelephony/Multi-SIM
- WebAPI/WebUSB
- WebAPI/WebVoicemail
- WebAPI/WebVoicemail/Multi-SIM
- WebAPI/WidgetAPI
- WebAPI/XHRBatch