As others point out, plugins for those browser are written using the NPAPI.
Note: Both Firefox and Chrome will default most plugins to click-to-play soon, with Chrome planning to phase out NPAPI entirely. NPAPI for new projects is discouraged at this point.
Resources for getting started with NPAPI:
- MDC plugin section
- three part NPAPI tutorial
- memory management in NPAPI
- npsimple – the “Hello World” of NPAPI plugins
- npapi-sdk – the source for the canonical NPAPI headers
- Mozillas test plugin – good for looking up specific NPAPI use cases
The NPAPI itself is however relatively low-level, but there are tools and frameworks that can help you with it:
- FireBreath – cross-browser, cross-platform frame-work for plugins
- Nixysa – generate glue-code for NPAPI plugins
- JUCE – application framework also providing support for plugins
- QtBrowserPlugin – Qt based browser plugin framework