Browser-based kiosk features
A Firefox-based kiosk will probably have many of these features, either as OS or driver features, browser settings, or browser extensions.
Per-site or per-page controls
- Allow control over which sites can be visited, either as a whitelist or blacklist. (With the Allowed Sites extension, you can mix whitelist and blacklist rules so that the first matching rule determines whether the site is allowed.)
- Allow control over which sites can be printed.
Privacy
- Clear all personal data on exit. (Massey says it can be done from JS. Fred wants it.)
- Reset after a period of inactivity.
- Disable form history.
- Always validate pages in cache when going back. (So if the user has logged out of Hotmail, the user's inbox no longer appears upon hitting Back.)
- Disallow access to the JavaScript console or clear it as part of resetting.
Security
- Disallow user access to chrome: URLs and about: URLs like about:config.
- Disallow (user) access to file: URLs.
- Disallow user from typing javascript: or data: URLs?
- Disallow all access to external protocols, such as mailto: and telnet:.
- Disallow changing bookmarks (or reset to normal bookmarks when the user leaves)
- Disallow changing prefs. Obviously don't let users see the prefs window, but also prevent users from changing prefs by other means such as dragging a link onto the Home button.
Uploading and downloading files
- Disable downloading and launching helper apps by left-clicking links. (Massey wants it. Seems like something everyone needs.)
- Replace unknown content handler with a sorry dialog
- Treat unknown content types as text/plain (for example, for C++ source). Not as hard as 57342?
- Make the "What do you want to do with this file?" dialog available but gray out "Open" and/or "Save" more often than normal.
- Allow files to be downloaded only to specific locations (e.g. all downloads go to Desktop).
- Disable plugin finder.
- Disable file upload controls.
- Disallow dragging things to the desktop.
Windows and Tabs
- Disallow web pages from opening new windows, even in response to user clicks.
- Block unrequested pop-ups and make requested pop-ups load in the same window.
- Do something clever if a site calls window.close(). For example, CNN's choose-edition window.
Touchscreen input
- Wider scrollbars to make them easier to click. On Windows, this is a Windows setting in Control Panel > Display > Appearance > Advanced. Firefox obeys this setting.
- When the user clicks on something that isn't a link, assume they "missed" and activate the closest link. (Problem: if there's a cursor visible, you either have to move the cursor onto the link or activate the link without the cursor over it. Both look strange.) (NetCDS)
- Turn off drag and drop, since it causes problems for touchscreens. (Turn off selection too? Make mousedown follow links? But then it could just be an OS setting rather than a Mozilla setting.)
- Turn off pointer for touchscreens. Some touchscreen drivers include this feature.
- On-screen keyboard.
Chrome
- For special-purpose kiosks (banks), little chrome or even no chrome so you can't tell it's a web browser.
- For public web browsing (libraries and internet cafes), normal chrome.
- Page-loading indicator (a.k.a. throbber) replaced with company's logo, spinning while a page loads.
OS
- Disable special OS shortcuts: Ctrl+Alt+Del on Windows, Ctrl+Alt+Backspace on X.
- Disable other OS shortcuts: Alt+Tab on Windows.
Other
- Display an attract loop when not in use.
- Intercept connection and server errors in order to enter an "Out of service" state. In this state, a simple "Out of service" error message is shown (instead of a more specific error message) and it tries to load the home page in the background every 15 seconds or so.
- Report kiosk state to central manager. Should be queriable in order to find health (up or down), whether there's a customer present (whether the attract loop is playing), and URLs visited.
- Restart the browser if it closes, crashes, or hangs.