Fixing Abduction! to work with Firefox 36+

Abduction! is a great little Firefox extensions that lets you take image captures of websites. Unfortunately, changes added in Firefox 36 made the extension stop working and it now throws out an exception instead:

[Exception… “Not enough arguments [nsIWebBrowserPersist.saveURI]”  nsresult: “0x80570001 (NS_ERROR_XPC_NOT_ENOUGH_ARGS)”  location: “JS frame :: chrome://abduction/content/browser.js :: abduction/action_save :: line 847”  data: no]

 

The good news is that there is a dirty fix for this problem by editing the extension itself.

Start by downloading the extension (by right clicking on the Add to firefox button in the extensions homepage instead of clicking on it to install), then use Save As to save the file to your computer. Don’t let yourself fooled by the .xpi extension, the file is just a zip archive (which you can more than often open in your favourite archiver).

Inside the archive, navigate to chrome/content where you will find a browser.js file. Either extract it or open it directly from the archive with your favourite text editor (whichever is your preferred working methodology).

At line 847 you should find

persist.saveURI(source, null, null, null, null, picker.file, privacyContext);

which needs to be edited to

persist.saveURI(source, null, null, null, null, null, picker.file, privacyContext);

This is due to the addition of an extra fourth parameter in the nsIWebBrowserPersist.saveURI with Firefox 36 which breaks the order of the parameters in a backwards incompatible way.

Save the changes to the file (and re-add the file to the archive if you worked outside of it), then simply drag&drop the updated .xpi file onto your Firefox window to trigger the install. After a browser restart Abduction! should work again.

Or download and install an already modified copy of the extension from here.

EDIT: Since version 43 / ESR 45 Firefox requires extensions to be signed to be accepted – as a result this self-fix method (or my fixed copy) are no longer usable (unless you manually disable signature check in your Firefox preferences).

 

4 Comments

  1. Thank you for the solution. However, when I tried to install the new file, I got this message: “this add-on could not be installed because it appears to be corrupted”.

    The solution is to “temporarily override the setting to enforce the add-on signing requirement by changing the preference xpinstall.signatures.required to false in the Firefox Configuration Editor (about:config page)” as described here:

    https://support.mozilla.org/en-US/kb/add-on-signing-in-firefox#w_override-add-on-signing-advanced-users

    Everything’s good now. You saved that plugin for me!

Leave a Reply