Firefox OS 1.2 is at a pre-release stage right now. Its Gecko component is based on Firefox 26 (encompassing all Gecko additions between Firefox 19 and Firefox 26; see Firefox 26 release notes for developers for the latest.) This page details the developer features newly implemented in Firefox OS 1.2.
Developer Tools
- Firefox OS versions 1.2 and above are compatible with the Firefox App Manager.
HTML
General Gecko:
- The
srcdocattribute of<iframe>, allowing the inline specification of the content of an<iframe>, is now supported (bug 802895). - When used with a
"image/jpeg"type, the methodHTMLCanvasElement.toBlobnow accepts a third attribute defining the quality of the image (bug 891884). - The
<track>element has been implemented behind themedia.webvtt.enabledproperty (bug 833385). - The
<blink>element support is now completely dropped. The<blink>tag now implements theHTMLUnknownElementinterface (bug 857820). - The
rangestate of the<input>element (<input type="range">) has been switched on by default (bug 841950). - The HTML5
<data>element has been implemented (bug 839371). - The HTML5
<time>element has been implemented (bug 629801). - The
rangestate of the<input>element (<input type="range">) has been implemented, behind the preferencedom.experimental_forms_range, only enabled by default on Nightly and Aurora channel (bug 841948). - The support for the
<template>element, part of the Web component specification has been implemented (bug 818976). - The
scopedattribute has been added to the<style>element. It allows to include styles that are isolated from the rest of the document. Such styles can be selected using the:scopeCSS pseudo-element introduced in Firefox 20. (bug 508725). - The new HTML
<main>element has been implemented (bug 820508). - Support for the
downloadattribute on the<a>and<area>element has been added (bug 676619). - The value
autofor the global attributedirhas been implemented (bug 548206).
CSS
General Gecko:
- @font-feature-values rule support (bug 549861)
- StyleRule{Added,Removed,Changed}, StyleSheetApplicableStateChange, StyleSheetChange events (bug 839103)
- The
text-decoration-lineproperty, still prefixed, now considers'blink'as a valid value, though it doesn't blink the content at all (bug 812995). - The non-standard
-moz-text-blinkproperty has been removed (bug 812995). - Support for the
image-orientationproperty, in its CSS Images & Values Level 4 version, that is with thefrom-imagekeyword and EXIF support, has been added (bug 825771). - Support for
position: stickycan be enabled by preflayout.css.sticky.enabled(bug 886646). - The support for the keyword
localas a value of thebackground-attachmentCSS property has been added (bug 483446). - Support of a non-standard Mozilla-only media query to determine the operating system version has been added:
-moz-os-version(bug 810399). The property is currently only implemented on Windows. - The
-moz-osx-font-smoothingCSS property has been added (bug 857142) - The two values
-moz-zoom-inand-moz-zoom-outof thecursorproperty have been unprefixed tozoom-inandzoom-out(bug 772153)). - The blink effect for
text-decoration: blink;has no more effect, but is still a valid value (bug 857820). - In-flow
::afterand::beforepseudo-elements are now flex items (bug 867454). - Following a spec change, the initial value for
min-widthandmin-heighthas been changed back to0, even on flex items (bug 848539). - Support for CSS Conditionals (
@supportsandCSS.supports) has been enabled by default (bug 855455). - Support for
background-clipandbackground-originproperties in thebackgroundshorthand has been implemented (bug 570896). - The
nonevalue of-moz-user-selecthas now the same behavior than the-moz-nonevalue, aligning Gecko on WebKit (Chrome, Safari), Presto (Opera) and Trident (Internet Explorer) (bug 816298). - On XHTML content, the
autovalue of-moz-hyphensincorrectly applied hyphenation rules when the language was not explicitly declared. This is fixed by (bug 702121). - An
autovalue has been added to the CSS-moz-orientproperty. Theautovalue is equivalent tohorizontalwhen applied to<meter>and<progress>(bug 835883). - The media query
-moz-windows-glasshas been added on Windows 7 and earlier Windows system (bug 816803). - CSS Flexbox has been unprefixed, and is now enabled by default (bug 841876).
- The
mask-typeproperty from the CSS Masking specification has been added (bug 793617). - Experimental support for the
:scopepseudo-class has been added. Enabled by default in Aurora and Nightly, it can be enabled in release and beta version by setting thelayout.css.scope-pseudo.enabledabout:config preference totrue(bug 648722). - Support for the viewport-relative
<length>units,vh,vw,vmin, andvmax, has landed (bug 503720). - The
-moz-initialvalue has been unprefixed (bug 806068).-moz-initialwill be kept for a while as an alias; however, authors are strongly encouraged to switch over toinitial. - The CSS
text-transformproperty now supports thefull-widthkeyword, which allows a more seamless inclusion of Latin characters in text using ideographic fixed-width characters, like Chinese or Japanese (bug 774560). - The CSS
page-break-insidehas been implemented (bug 685012). - The CSS
calc()function can now be used on<color-stop>(on<gradient>). - The CSS
@pageat-rule is now supported (bug 115199). Note that the pseudo-classes:first,:right, and:leftare not yet implemented. - The
:-moz-placeholderpseudo-class is replaced by the::-moz-placeholderpseudo-element (bug 737786).
JavaScript
General Gecko:
EcmaScript 6 (Harmony) implementation continues!
- New mathematical methods have been implemented on
Math:Math.fround()(bug 900125). - The method
Array.of()is now implemented onArray(bug 866849). - The methods
Number.parseInt()andNumber.parseFloat()have been implemented (bug 886949) - The methods
Map.prototype.forEach()andSet.prototype.forEach()are now implemented (bug 866847) - New mathematical methods have been implemented on
Math:Math.log10(),Math.log2(),Math.log1p(),Math.expm1(),Math.cosh(),Math.sinh(),Math.tanh(),Math.acosh(),Math.asinh(),Math.atanh(),Math.trunc(),Math.sign()andMath.cbrt()(bug 717379). - Support for binary and octal integer literals has been added:
0b10101010,0B1010,0o777,0O237are now valid (bug 894026). - The machine epsilon constant, that is the smallest representible number that added to 1 will not be 1, is now available as
Number.EPSILON(bug 885798). - Arrow functions are no longer automatically in strict mode unless explicitly requested with
"use strict"(bug 852762)). - The
String.prototype.repeatJS method has been implemented (bug 815431). - The
Object.definePropertymethod can now be used to redefine thelengthproperty of anArrayobject. - The option to disable JavaScript, including the options to allow moving windows/replace context menu, have been removed. You may still disable JavaScript by double clicking the "javascript.enabled" option in about:config.
- Asm.js optimizations are enabled, making it possible to compile C/C++ applications to a subset of Javascript for better performance.
- ES6 Arrow Function syntax has been implemented (bug 846406).
- The new Object.is function has been added (bug 839979).
- E4X, an ancient JavaScript extension, has been removed. Implemented only in Gecko, it never got significant traction (bug 788293).
- parseInt no longer treats strings with leading "0" as octal (bug 786135).
- Support for the
Weakmap.prototype.clear()method, recently added to the Harmony (EcmaScript 6) draft proposal has been added (bug 814562). - Support for the
Math.imul()method, a C-style 32-bit multiplication function. Though proposed for Harmony (EcmaScript 6) it has not yet accepted and still is non-standard (bug 808148). - Web apps using draggable text with Kinetic 3.x are working, even when using the Cairo canvas backend (bug 835064).
- The
for each…instatement has been deprecated and should not be used. Consider using the newfor…ofstatement (bug 804834). - Support for the
Map.prototype.keys,, andMap.prototype.valueshas been added (bug 817368).Map.prototype.entries MapandSetobjects have changed from having asize()method to asizeproperty (bug 807001).MapandSetobjects also have a clear() method now. (bug 805003).
Telephony-specific additions (mostly API-related)
- Fuzzy matcher API for phone numbers (bug 883923)
- CDMA
- Registration info (bug 882984)
- (bug 882984)
- multiple new CDMA specific attributes in
MozMobileCellInfo - dom/network/interfaces/nsIDOMMobileConnection.idl
- Emergency callback mode support (bug 887690)
- new method
exitEmergencyCbModeand new eventemergencycbmodechangeinMozMobileConnection - dom/network/interfaces/nsIDOMMozEmergencyCbModeEvent.idl
- new method
- OTASP (bug 882983)
- new event
otastatuschangeinMozMobileConnection - dom/network/interfaces/nsIDOMMozOtaStatusEvent.idl
- new event
- MDN/MIN (bug 869778)
- new interface
MozGsmIccInfo&MozCdmaIccInfo - new attribute
iccTypeinMozIccInfo - dom/icc/interfaces/nsIDOMIccInfo.idl
- new interface
- Preferred voice mode (bug 869769)
- new methods
setVoicePrivacyModeandgetVoicePrivacyModeinMozMobileConnection - dom/network/interfaces/nsIDOMMobileConnection.idl
- new methods
- Roaming preference (bug 869768)
- new methods
setRoamingPreferenceandgetRoamingPreferenceinMozMobileConnection - dom/network/interfaces/nsIDOMMobileConnection.idl
- new methods
- Call Waiting (bug 822210)
- new attribute
secondNumberinTelephonyCall - dom/webidl/TelephonyCall.webidl
- new attribute
- Registration info (bug 882984)
- Support Change Call Barring Password (bug 905479)
- new method
changeCallBarringPasswordinMozMobileConnection - dom/network/interfaces/nsIDOMMobileConnection.idl
- new method
- Move ICC functions out from
MobileConnection(bug 875721, bug 874744, bug 860585, bug 859220)MozIccInfonavigator.mozIccManager.iccInfo- new interface
- dom/icc/interfaces/nsIDOMIccInfo.idl
MozIccManagernavigator.mozIccManager- new attributes, methods, and events
- dom/icc/interfaces/nsIDOMIccManager.idl
MozMobileConnectionnavigator.mozMobileConnection- numerous attributes, methods and events removed
- dom/network/interfaces/nsIDOMMobileConnection.idl
nsIDOMMozMobileICCInfonavigator.mozMobileConnection.iccInfo- interface removed
- ICC card lock improvements
- Rename
ICCCardLockErrorEventtoIccCardLockErrorEvent- dom/webidl/IccCardLockErrorEvent.webidl
- Retry count (bug 886239, bug 875710)
- attribute
retryCountremoved fromMozMobileConnection - new method
getCardLockRetryCountinMozIccManager - dom/network/interfaces/nsIDOMMobileConnection.idl
- dom/icc/interfaces/nsIDOMIccManager.idl
- attribute
- Rename
- Import/export SIM Contacts (bug 847741, bug 847820)
- new methods
readContacts,updateContactinMozIccManager - dom/icc/interfaces/nsIDOMIccManager.idl
- new methods
- ICC Secure Elements (bug 840780)
- new methods
iccOpenChannel,iccExchangeAPDU,iccCloseChannelinMozIccManager - dom/icc/interfaces/nsIDOMIccManager.idl
- new methods
- STK improvements
- 'duration' for Display Text, Setup Call commands (bug 831630)
- new attribute
durationin bothMozStkTextMessageandMozStkSetUpCall - dom/icc/interfaces/SimToolKit.idl
- new attribute
- support "Language Selection Event" (bug 831627)
- new dictionary
MozStkLanguageSelectionEvent - dom/icc/interfaces/SimToolKit.idl
- new dictionary
- support "Idle Screen Available Event" (bug 831628)
- new dictionary
MozStkGeneralEvent - dom/icc/interfaces/SimToolKit.idl
- new dictionary
- 'duration' for Display Text, Setup Call commands (bug 831630)
- MobileMessage
- Turn
getSegmentInfoForTextinto an async call (bug 903403)- dom/mobilemessage/interfaces/nsIDOMMobileMessageManager.idl
- Remove navigator.mozSms (bug 891235)
- Turn
- Telephony
- support "Conference Call" (certified only) (bug 772765)
navigator.mozTelephony.conferenceGroup- new interface
- support "Conference Call" (certified only) (bug 772765)
DOM/API
Firefox OS-specific:
- Device Storage API: When getting a cursor callback from
navigator.getDeviceStorage("sdcard").enumerate,this.donewas undefined in Firefox <1.2 (see bug 902565). This is now fixed. The referenced bug discusses possible compatibility checks/workarounds for this issue. - The
RTCPeerConnectionInterface from WebRTC is implemented, but currently disabled by default in B2G, as it is not yet functional on Firefox OS devices (see bug 942343.) Web notificationsare supported in Firefox 1.2, therefore theNotificationobject should be used in preference to the old deprecatedmozNotificationobject (see bug 899574 .)mozInputMethodhas been added to allow for people to write 3rd party keyboards. See the test application in gaia/test_apps for a reference implementation.- The Media Recording API has been implemented (see bug 803414, bug 889720)
- KeyboardEvent.repeat now supported (bug 600117)
- 3rd party keyboards now supported (bug 816869)
New WebGL 1 extensions supported in Firefox OS 1.2:
- OES_element_index_uint
- OES_texture_float_linear
- OES_vertex_array_object
- WEBGL_draw_buffers
- ANGLE_instanced_arrays
Note: availability of these extensions depends on device capabilities; not all extensions will be available on all devices.
General Gecko:
- A
.defaultattribute has now been added to the DeviceStorage API (bug 874213) - The TCP Socket API has landed (bug 797561)
- Make the last argument (doctype) to
DOMImplementation.createDocumentoptional (bug 909859). - Implement the new
element.classListspecification which permits adding/removing several classes with one call (bug 814014). - The
URL()constructor have been implemented on theURLinterface (bug 887364). - The properties
URLUtils.origin,URLUtils.password, andURLUtils.usernameare now available to all interfaces implementingURLUtils:URL,Location,HTMLAnchorElement, andHTMLAreaElement(bug 887364). - The
URLinterface is now accessible from Web Workers (bug 887364). - IndexedDB can now be used as a "optimistic" storage area so it doesn't require any prompts and data is stored in a pool with LRU eviction policy, in short temporary storage (bug 785884).
- Path of the persistent storage has been changed from <profile>/indexedDB to <profile>/storage/persistent (on b2g from /data/local/indexedDB to /data/local/storage/persistent).
- The Web Audio API is now supported. An incomplete implementation was previously available behind a preference (bug 779297).
- Some IME related keys on Windows are supported by
KeyboardEvent.key(bug 865565), see the key name table for the detail. - Firefox for Metro now dispatches key events in the same way as the desktop version (bug 843236).
keypressevent is no longer dispatched ifpreventDefault()of precedingkeydownevent is called (bug 501496), see the document ofkeydownevent for the detail.- Renamed the
Futureinterface toPromise(bug 884279). - The
srcDocproperty on theHTMLIFrameElementinterface, allowing the inline specification of the content of an<iframe>, is now supported (bug 802895). - The
createTBody()method on theHTMLTableElementinterface, allowing to get its<tbody>, is now supported (bug 813034). - The
Range.collapse()methodtoStartparameter is now optional and default tofalse, like defined in the spec (bug 891340). - Support of
ParentNodeinterface onDocumentandDocumentFragmenthas been added (bug 895974). - The
previousElementSiblingandnextElementSiblinghave been moved toChildNodeallowing them to be called not only on aElementobject but also on aCharacterDataorDocumentTypeobject (bug 895974). - The
navigator.geolocationproperty has been updated to match the spec. It never returnsnull. When the preferencegeo.enabledis set tofalse, it now returnsundefined(bug 884921). - The
videoPlaybackQualityattribute on theHTMLVideoElementinterface has been changed to thegetVideoPlaybackQualitymethod. (bug 889205) - Support for the
Range()constructor has been added (bug 868999). - Support for the
Text()constructor has been added (bug 869000). - Support for the
Comment()constructor has been added (bug 869006). - Support for the
DocumentFragment()constructor has been added (bug 869002). - The
FocusEventinterface has been implemented (bug 855741). - Support for the
ChildNode.remove()method has been added (bug 856629). - The interfaces related to the
<track>element,HTMLTrackElement,TextTrack,TextTrackCue,TextTrackList, andTextTrackCueListhave been implemented behind themedia.webvtt.enabledproperty, defaulting tofalse(bug 833385). - The
Gamepadinterface, andNavigator.getGamepadshave been implemented behind thedom.gamepad.enabledproperty, defaulting tofalse(bug 690935). - On desktop Firefox only,
HTMLCanvasElement.getContext()can now take thewebglvalue, in addition toexperimental-webgl(bug 870232). - The non-standard method
mozLoadFrom()ofHTMLMediaElementhas been removed (bug 877135). - D3E
KeyboardEvent.keyis now supported, but only for non-printable keys (bug 842927). - The
titleattribute ofDOMImplementation.createHTMLDocumentis now optional as per updated DOM specification. - The ability to add a sidebar panel (
window.sidebar.addPanel) has been dropped (bug 691647). - The unprefixed
Window.requestAnimationFrameandWindow.cancelAnimationFramemethods has been added (bug 704063). - The callback for
Window.requestAnimationFramenow receives aDOMHighResTimeStampas argument instead of the less preciseDOMTimeStampused in the unprefixed version (bug 753453). - The text argument for
window.alertandwindow.confirmis now optional (bug 861605). - The
HTMLMediaElement.initialTimeproperty, removed from the spec, is no more supported (bug 742537). - The
AnimationEvent()constructor has been added (bug 848293). - The
AnimationEvent.pseudoElementproperty has been implemented (bug 848293). - The
TransitionEvent()constructor has been added (bug 848291). - The
TransitionEvent.pseudoElementproperty has been implemented (bug 848291). - The non-standard
TransitionEvent.initTransitionEvent()andAnimationEvent.initAnimationEvent()have been removed (bug 868751). - Support for the
multipartproperty onXMLHttpRequestandmultipart/x-mixed-replaceresponses inXMLHttpRequesthas been removed. This was a Gecko-only feature that was never standardized. Server-Sent Events, Web Sockets or inspectingresponseTextfrom progress events can be used instead. - Support for Web Notifications has been landed (bug 782211).
- The
FormDataappendmethod now accepts a third optionalfilenameparameter (bug 690659). Node.isSupportedhas been removed (bug 801562).Node.setUserDataandNode.getUserDatahas been removed for web content and are deprecated for chrome content (bug 842372).- The
Element.attributesproperty has been moved there fromNodeas required by the spec (bug 844134). - The Mac OS X backend for
Ambient Light Eventshas been implemented. - Elements in the HTML namespace with local names
<bgsound>,<multicol>, and<image>no longer implement theHTMLSpanElementinterface.<bgsound>and<bgsound>implementHTMLUnknownElementand<image>implementsHTMLElement. - The
NodeIterator.detachmethod has been changed to do nothing (bug 823549). - The
BlobEventinterface has been implemented (bug 834165). - The properties
HTMLMediaElement.crossoriginandHTMLInputElement.inputmodehas been removed to match the spec inHTMLMediaElement.crossOriginandHTMLInputElement.inputMode, respectively (bug 847370 and bug 850346). - WebRTC: the Media Stream API and Peer Connection API are now supported by default.
- Web Components: the
Document.registermethod has been implemented (bug 783129). - The
ProgressEvent.initProgressEvent()constructor method has been removed. Uses the standard constructor,ProgressEvent()to construc and initializeProgressEvent(bug 843489). - Manipulated data associated with a
cut,copy, orpasteevent can now be accessed via theClipboardEvent.clipboardDataproperty (bug 407983). - The
HTMLTimeElementinterface has been implemented (bug 629801). - When a
Workerconstructor is passed an invalid URL, it now throwsDOMExceptionof typeSECURITY_ERR(bug 587251). - The
originproperty has been added to thewindow.location(bug 828261). - The
valueAsDateandvalueAsNumbermethods have been added for<input type="time">(bug 781570). - The
minandmaxattributes now apply to<input type="time">too (bug 781572). - Some new keyCodes for volume control are supported (bug 674739).
- Some new keyCodes for ancient keyboard layout such as AS/400 are now supported on Windows and Linux (bug 833719).
- Various keyCode values for OEM sepecific keys on Windows are now supported again (bug 833719).
- The function
window.crypto.getRandomValueshas been implemented (bug 440046). - The methods
NodeIterator.expandEntityReferences()andTreeWalker.expandEntityReferences(), no more in the latest DOM spec, has been removed (bug 672190). - CSSOM: the method
CSSKeyframesRule.insertRulehas been removed toCSSKeyframesRule.appendRuleto match a spec change (bug 841896). - CSSOM If the given parameter given to
CSSStyleSheet.insertRulecontains more than one rule, aDOMExceptionwith aSYNTAX_ERRis now thrown (bug 765599). - Until now, when the same headers were repeatedly set with
XMLHttpRequest.setRequestHeader, the last-specified value was used. This behavior has been changed to comply with the spec, so those values will be properly combined (bug 819051). HTMLMediaElementsupports nowplaybackRate(both read and write), with pitch correction. Pitch correction can be controlled using the propertymozPreservesPitch(bug 495040).- CSSOM: Support for the new
CSSGroupingRuleandCSSConditionRulehas been added (bug 814907). - CSSOM: On
CSSRulethe constant CSSRule.MOZ_KEYFRAME_RULE and CSSRule.MOZ_KEYFRAMES_RULE have been unprefixed to CSSRule.KEYFRAME_RULE and CSSRule.KEYFRAMES_RULE. The prefixed version are temporarily kept for helping Web author to transition their code bug 816431). - CSSOM: It is now possible to set the value of
conditionTextforCSSMediaRule(bug 815021). - The
DOMParserparseFromStreamandparseFromBuffermethods are no longer available from web content (bug 816410). - The
XMLSerializerserializeToStreammethod is no longer available from web content (bug 816410). TextDecoderandTextEncoderinterfaces have been updated to match the latest spec (bug 801487) and are now available in Workers (bug 795542).- Support for the
CSS.supports()method has been added, behind thepref (off by default) (bug 779917).layout.css.supports-rule.enabled - Support for UndoManager has been added (bug 617532).
- The CSSOM
document.caretPositionFromPointmethod, which returns aCaretPositionhas been implemented. - The index argument of the
tableRow.insertCellandtable.insertRowmethods has been made optional as per HTML specification. Navigator.getUserMedia, still prefixed asNavigator.mozGetUserMediais now activated by default.- The third, optional,
transferargument ofWindow.postMessageis now supported. It allows to transfer a sequence ofTransferableobjects to the destination (bug 822094). - The
element.getElementsByTagNamemethod will now returnHTMLCollection(bug 799464). - The
FilemozLastModifiedDateproperty has been implemented. (bug 793955). - The
FilelastModifiedDateproperty returns the current date, when the date of the last modification is unknown. (bug 793459. - The
CanvasRenderingContext2DisPointInStrokemethod has been implemented (bug 803124). - The
HTMLCanvasElementtoBlobmethod has been implemented (bug 648610). - The
Node.isSupportedand thedocument.implementation.hasFeature()methods have been changed to always returntrue(bug 801425). - When calling
document.createElement(null),nullwill now be stringified and works likedocument.createElement("null").
SVG
General Gecko:
- Inconsistent renderings of
<mmultiscripts>,<msub>,<msup>and<msubsup>have been unified and the error handling of these elements has been improved (bug 827713). - The paint-order attribute has been implemented (bug 828805).
- The implementation of the
contentScriptTypeandcontentStyleTypeproperties has been removed fromSVGSVGElementalong with the removal from SVG2 (bug 819731).
MathML
General Gecko:
- The
dirattribute for controlling directionality of formulas on e.g.<math>or<mrow>elements is now equivalent to using thedirectionCSS property. - The equal sign ("=") is now stretchable.
- The "
updiagonalarrow" value for thenotationattribute on<menclose>elements has been added. - Negative widths for the
<mspace>element has been implemented (bug 717546). - The
<semantics>element now determines the visible child as described in the MathML3 specification. - To help MathML authors debugging "invalid-markup" errors in their documents, MathML parsing errors (such as having too many / too few child elements) and warnings about deprecated attributes or wrong attribute values are now reported to the Error Console.
- The
scriptminsizeattribute now accepts unitless values and percent values. They are interpreted as multiples of the default value ("8pt"). - Unitless values are now also allowed for the
mathsizeandfontsizeattributes; they multiply the default value.
Network
General Gecko:
- We continue to update our CSP implementation to match the CSP 1.0 spec, which reached Candidate Recommendation:
- Support for the spec-compliant
Content-Security-PolicyHTTP header (in addition to the experimentalX-Content-Security-Policy) has been added (bug 783049). Note: the patch for this new header landed in Firefox 21, it is disabled on builds (bug 842657).
- Support for the spec-compliant
Worker
General Gecko:
- The functions
URL.createObjectURLandURL.revokeObjectURLare now included in the set of functions available to workers.
Security
General Gecko:
- Mixed content blocking. Firefox will no longer load non-secure (http) resources on secure (https) pages (bug 834836).
- The standard syntax of CSP 1.0 policies are now implemented and enforced by default.
XForms
General Gecko:
Support for XForms has been removed in Firefox 19.
See also
Older versions
Share this article: http://mzl.la/1av9ZRr
Document Tags and Contributors
Tags:
Contributors to this page:
chrisdavidmills,
Sebastianz,
RAMACHANDRAN,
Milayne,
Meghraj,
janjongboom,
trevorh
Last updated by:
chrisdavidmills,