Plugin is a program that interacts and extends functionality of your browser.
Uses for plugin:
- read certain types of files eg audio/video
To install a plugin in mozilla, usually the package is extracted in a plugin sub directory When the package is installed the browser has to be restared to activate the plugin. eg. in Linux its located in ~/.mozilla/plugins/
Plugin is an addon to the main application that provides the service. Plugins depand on the core application and do not work by themselves.
The advantage of plugins is that it allows to add/update functionality without changing the main application.
- Plugins are different from Extensions:
- Extensions modify existing functionality and can work independent of main application
- Extensions offered to decrease the size of main application and offer optional functions
- In mozilla, extensions reduce feature creap
- Plugins rely on main application to achive set of actions.
Plugins in Gecko
- Plugins increases functionality of Gecko-based browsers. Examples of this includes embedded viewers for Flash/Shockwave and Adobe Acrobat PDFs.
- Plug-ins are dynamic code modules that are associated with one or more MIME types.
- Plugins are dynamically loaded.
- There are limitationts to plugins (as compared to extensions): they are platform specific so they have to be ported to every OS and processor that you wish to use the plugin on.
- In order to develop plugins for the Gecko engine, you'll need the plugin SDK, which is located in the Mozilla source under mozilla/modules/plugin/tools/sdk. Samples and source code can be viewed via LXR: http://lxr.mozilla.org/seamonkey/source/modules/plugin/tools/sdk/
Life-cycle of a Plugin
Unlike a software application, the plugin is complete controlled by the web page that calls it. When the browser starts, it checks for a list of plugins in the plugin directory and registers each plugin for its MIME type. When a user opens a web page containing embedded data that requires a plugin to view, Gecko responds by doing the following actions:
- checks for a plugin with a matching MIME type
- load the plugin code into memory
- initialize the plugin
- create an instance of the plugin
In short, Gecko will load multiple instances of the same plugin on the same page if it contains several embedded data of the same MIME. When the window leaves the page or closes the window, the plugin instance will be deleted. Once the last instance of the plugin is deleted, the code will be unloaded from memory.