Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Developing Chrome Extensions Using NPAPI in C++

I want to develop a simple Chrome extension in C++, using NPAPI, which does the job of dumping the HTML content of the current page onto a file. I don't have much expertise in developing plugins/extensions. How do I get started on this?

like image 780
Rahul Gulati Avatar asked Feb 22 '12 09:02

Rahul Gulati


People also ask

Which language is used to develop Chrome extensions?

Chrome extensions are built with HTML, JavaScript, and CSS scripts and are essentially small websites uploaded to the Chrome store.

Can I write my own Chrome extension?

Sometimes, you might not be able to find an app or extension in the Chrome Web Store that meets your users' needs. If that happens, you can create your own custom app or extension that users can add to their ChromeOS device or Chrome browser.

Is it hard to code a Chrome extension?

As a web developer, it's very easy to create a Chrome extension in a short amount of time. All you need is some HTML, CSS, JavaScript and a basic knowledge of how to add functionality through some of the JavaScript APIs that Chrome exposes.


2 Answers

There's a plugin here that will help you....
http://code.google.com/p/npapi-file-io/
...source is there aswell. This plugin will allow you to write a string (your html) to a file plus a few other nice things. Windows and Linux only unfortunately.
Then all you need to do is write a script to dump what you want.

As smorgan points out in the comments these sort of plugins have the potential to be rather dangerous.
So make sure when you add the plugin to your manifest that you set the public property to false...
http://code.google.com/chrome/extensions/npapi.html

 "plugins": [
    { "path": "plugin.dll", "public": false }
  ]

And in the future (Chrome 18) you should use manifest version 2...
http://code.google.com/chrome/extensions/trunk/manifestVersion.html

Also, I take it that you want to save the file without any user input. If that isnt true and having a dialog to select where to save the file every time is acceptable then this can be done without using a plugin.

like image 28
PAEz Avatar answered Sep 19 '22 02:09

PAEz


1 - Create a Extension... http://code.google.com/chrome/extensions/getstarted.html

2 - Create a NPAPI plugin... http://colonelpanic.net/2009/03/building-a-firefox-plugin-part-one/

3 - On the manifest of your extension add the plugin...

"plugins": [
    { "path": "your_npapi_plugin.dll" }    
  ],

4 - On your extension background page create the plugin

<script>
var plugin = document.getElementById("MyNPAPIPluginId");
...
</script>

5 - Create a javascript that you will use as a content script injected on every page. On that script communicate with your npapi scriptable object and do the work you want to do.


How do I get the value of MyNPAPIPluginId? All I have is the name of the DLL?

On your background page when you add the tag of your plugin, you place the id

<embed type="application/my-plugin-mimetype" id="MyNPAPIPluginId">

On Windows you add the MIMEType on the resource file of the DLL, add a entry with:

VALUE "MIMEType", "application/my-plugin-mimetype"
like image 116
João Augusto Avatar answered Sep 23 '22 02:09

João Augusto