Updated on 7/25
This project page was updated with current status of all the important UX and API bugs that were being worked on. The current info can be found on the sections UX front, API front, and Future. Timeline/Dependencies are kept as original for reference.
This project aims to improve Firefox support for touchscreen devices. These improvements include making the browser experience better for users of touch screens (on desktop and mobile) and making it possible for webpages to make use of this new form of user input.
- Allow users to interact with the browser via touchscreens
- Provide good usability for surfing the web
- Feature a new form of input method and allow web developers to make use of it
- Support this API in Desktop and Mobile
- Implement advanced form of interactions such as custom gestures
- Alter any behavior for non-touchscreen users
- IN FLIGHT - Approaching airport, getting ready to land
- project lead: felipe
- project members:
- started implementation, working on two fronts
- tracking bugs: bug 548100
- bug 547997 – Perform hit target detection/correction on tap clicks
- Finished: platform support and front-end implementation on Fennec - Also relevant: hit-area measurements of new theme in bug 572472. tl;dr results: the sizes are bigger making Firefox 4 more easily clickable
- bug 547996 – Be able to tell when a click was generated by touch
- Done: mouseEvent.mozInputSource attribute
- bug 548005 – Browser zoom should stay centered when coordinates are available
- Wrote a patch for it, but after getting feedback a better approach on layout/ is needed. I want to revisit this soon.
- bug 548012 – Browser zoom should be cancelable to be handled by webpage
- This handling is possible to do with the multitouch API, and therefore an special and non-standard way to do it (as was the intent of the original bug) won't be needed.
- bug 549446 - Possibility to hide brower's scrollbars
- This should be targeted for the future when we revamp our full-screen UI to be friendly for tablet-sized devices.
Multitouch API front
- Implemented a Moz* API for Windows 7. Patches on final review line.
- Implementation ready for Landing 1 described on the timeline - expose multitouch data from hardware to web content, letti
- All original Constraints / Dependencies were taken care of:
- get rid of manual multitouch switch
- make the work compatible with native widget removal bug 130078
- deliver touch API in a beta (with demos and example code) and get feedback from web developers
More to the future:
- work on standards
- work on gestures
Timeline / Milestones
The following set of steps represent the main plan to be able to ship the new API by taking into account the 2 issues above
- Get rid of the manual document.multitouchData switch and work on switching modes when the page requests any touch events [how to do this on Dependencies section]
- This deactivates page scrolling and win7 gesture recognition on pages with touch events
- Work on our events implementation for desktop and mobile to get them close to a possible spec (following smaug's proposal?)
- [LANDING 1] Deliver the raw events input first
- Check on using windows gesture processors or implement our own gesture engine
- [LANDING 2] Deliver the gesture events
- Re-implement [kinetic] panning on our engine for the pages using the touch events
- [LANDING 3] Deliver panning on our engine
Note 1: for pages that will not make use of the touch apis, nothing will change, and we will continue to use window's own gesture and scrolling processors. If, after LAND 3 or later we think our own stack is good enough to replace windows's one we can make the full switch
Note 2: Most demos out there related to touch (e.g. ) never combine it with a page with scrolling, so disabling it as a first step doesn't seem to be a big problem.
Constraints and Dependencies
- Most of the work right now is focused on Win7 only for being the only OS to provide a standard API for multitouch
- Keep an eye on the native widget removal project because it directly impacts this one
- Steps needed to get rid of manual switch:
- Hook-up counters of listeners of touch events, calling RegisterTouchWindow on 0 -> 1, and UnregisterTouchWindow on 1 -> 0 and setting a flag
- Since child widgets will be removed, on any tab/page change we will need to check the flag and call UnregisterTouchWindow/RegisterTouchWindow
- Steps needed to get rid of manual switch:
- TBD - We would need the regular testing schemes for events, plus some manual testing or simulation of multitouch events from the OS