HTML Forms
Overview
Welcome to the project page for the HTML form controls. Form controls are the various widgets that can be used in an HTML form and that can
participate in form submission. The code in the engine that talks to the controls is in the WebCore framework. The DOM elements are
under the khtml/html directory, and the rendering objects are under the khtml/rendering directory. At the moment the controls are
all grouped together into single files, and one change we plan to make is to split these out into one class per file in order to make it easier to
locate each control's implementation.
Get Involved!
View bugs in the HTML Forms component on OpenDarwin.
Below is a sampling of interesting open issues with our HTML form controls. To get involved contact us!
- Support the label element
- WebKit does not properly support the label element.
- Use WebKit to implement the controls
- The HTML form controls are currently implemented without using the WebKit engine. Right now WebKit talks to Qt interfaces that represent the controls.
On OS X our implementation of these Qt interfaces uses App Kit. The major architectural change that we are planning for form controls in the coming year
is to re-implement the form controls using the WebKit engine itself to render. This will allow us to support more CSS properties for form controls, make
our code more portable to other platforms, and - most importantly - will improve our performance significantly on pages with a large number of controls.
For input fields and text areas, we plan to use HTML editing to implement these controls, and for the other controls custom
renderers will be made. A new theme abstraction will be used to encapsulate the rendering of a native look on the platform with NSCells being used to
determine the correct appearance of controls like checkboxes and buttons on OS X.
- Implement Web Forms
- The WhatWG has outlined extensions to existing HTML forms. We are interested in supporting these extensions (along with Opera
and Mozilla). The specification details all of these enhancements. We welcome bugs, contributions and
testers to help us implement these improvements.