diff --git a/Required-Browser-Features.md b/Required-Browser-Features.md
index 6d949dd..e3bfc26 100644
--- a/Required-Browser-Features.md
+++ b/Required-Browser-Features.md
@@ -9,6 +9,26 @@ The required features tests can be run at http://mozilla.github.com/pdf.js/featu
Support of the CANVAS element and 2D context is required feature for PDF.js.
No emulation of the CANVAS element is provided for the browsers that do not support it.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
## get-literal properties
@@ -22,12 +42,52 @@ var obj = {
The browsers that don't understand this syntax will not be able to execute the code.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
## addEventListener is present
The `addEventListener` method is used to bind event listeners for DOM elements.
No emulation of the `addEventListener` method is provided in the browsers that do not support it.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
## Typed arrays are present
@@ -37,64 +97,305 @@ Only `subarray`, `buffer`, `set` and `byteLength` are similated. The `subarray`
If the `Float32Array` native implementation exists and the `Float64Array` is absent, then the `Float32Array` will be used instead of `Float64Array`.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
+
## Object.create() is present
The `Object.create` method will be added to the `Object` function if the native implementation is absent.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
## Object.defineProperty() is present
The `Object.defineProperty` method will be added to the `Object` function if the native implementation is absent. The `__defineGetter__` / `__defineSetter__` will be used instead.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
## Object.defineProperty() can be used with DOM objects
Some browsers do not allow using the `Object.defineProperty` with DOM objects.
In this case, the `Object.defineProperty` be replaced by the artificial one. See [Object.defineProperty() is present](#Object-defineProperty).
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
## Defined via get-literal properties can be redefined
Some browsers does not allow redefine properties defined with get literal by the `Object.defineProperty`.
In this case, the `Object.defineProperty` be replaced by the artificial one. See [Object.defineProperty() is present](#Object-defineProperty).
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
## Object.keys() is present
The `Object.keys` method will be added to the `Object` function if the native implementation is absent.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
## FileReader is present
The `FileReader` allows PDF.js read the file data provided in the input[type=file] HTML element. The live PDF.js demo will not be able to read local file, if the `FileReader` object is not supported.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
## FileReader.prototype.readAsArrayBuffer() is present
Older browsers has no `readAsArrayBuffer` method implementation: the `readAsBinaryString` will be used to emulate its functionality.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
## XMLHttpRequest.prototype.overrideMimeType() is present
The empty `overrideMimeType` method will be added to the `XMLHttpRequest.prototype`, if the browser does not support it.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
## XMLHttpRequest.prototype.response is present
The `response` getter will be added to the `XMLHttpRequest.prototype`, if the browser does not support it.
This is important for retrieving the binary PDF data using XHR.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
## btoa() is present
The `btoa` will be added to the window object, if the browser does not support it.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
## Function.prototype.bind is present
The `bind` method will be added to the `Function.prototype`, if the browser does not support it.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
## dataset is present for HTML element
@@ -102,68 +403,334 @@ The `dataset` property will be added to the `HTMLElement.prototype`, if the brow
This is important for specifying addition information (e.g. for text selection layer)
attached to specific HTML DOM element.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
## classList is present for HTML element
The `classList` property will be added to the `HTMLElement.prototype`, if the browser does not support it.
This is important to simplify the viewer implementation.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
## console object is present
The `console` object will be added to the window object with empty `log` and `error` methods,
if the browser does not support it. This is important for output of the error message and diagnostic information.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
## console.log is a bind-able function
The `console.log` and `console.error` functions will be replaced, if the browser does not allow to use
the bind method with these functions.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
+
## Function.prototype.apply accepts typed array
The core code relies on the `Function.prototype.apply` method to accept the typed array as the second argument.
No emulation is provided in browsers that do not support it.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
+
## navigator.language is present
The language getter will be added to the window.navigator object, if the browser does not support it.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
## evenodd fill rule is supported
Some PDF content is using "even-odd" fill rule/method. The content will not be displayed
properly (example: [#2351](https://github.com/mozilla/pdf.js/issues/2351)) if this feature is not supported.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
+
## dashed line style is supported
Some PDF content is using custom dash line styles. The content will not be displayed
properly if this feature is not supported.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
## @font-face is supported/enabled
Most of PDF documents are using embedded fonts. If the browser does not support `@font-face`
style rule, the document will not be displayed property.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
## @font-face loading completion detection
The PDF.js shall wait some time before using fonts with CANVAS,
if the browser cannot tell if fonts are loaded and can be used.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
## Worker is supported/enabled
The PDF.js will execute all code (even long running) on the main thread,
if the browser does not support web workers.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
+
## Worker can receive/send typed arrays
The PDF.js will execute all code on the main thread,
if the browser cannot send (large) typed arrays to web workers.
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
+
## XMLHttpRequest supports the response property in web workers
The PDF.js will execute all code on the main thread,
if the browser cannot request network binary data from web workers.
+
+
+
+
+ | Chrome |
+ Firefox (Gecko) |
+ Internet Explorer |
+ Opera |
+ Safari |
+
+
+
+
+ | ? |
+ ? |
+ ? |
+ ? |
+ ? |
+
+
+
\ No newline at end of file