Internet Explorer
Internet Explorer exposes a set of Component Object Model (COM) interfaces that allow other components to extend the functionality of the browser. Extensibility is divided into two types: Browser extensibility and Content extensibility. The browser extensibility interfaces can be used to plug in components to add context menu entries, toolbars, menu items or Browser Helper Objects (BHO). BHOs are used to extend the feature set of the browser, whereas the other extensibility options are used to expose the feature in the UI. Content extensibility interfaces are used by different content-type handlers to add support for non-native content formats. BHOs not only have unrestricted access to the Internet Explorer DOM and event model, they also can access the filesystem, registry and other OS components. Content extensibility can be either in terms of Active Documents (Doc Objects) (e.g., SVG or MathML) or ActiveX controls. ActiveX controls are used for content handlers that render content embedded within an HTML page (e.g., Adobe Flash or Microsoft Silverlight). Doc objects are used when the content type will not be embedded in HTML (e.g., Microsoft Word, PDF or XPS). In fact, the Trident rendering engine is itself exposed as a Doc object, so HTML in itself is treated as an Active Document.