Where to save files from Firefox add-on?

后端 未结 1 553
广开言路
广开言路 2021-01-22 04:18

I am working on a Firefox add-on which among other stuff generates thumbnails of websites for use by the add-on. So far I\'ve been storing them by their image data URL using sim

相关标签:
1条回答
  • 2021-01-22 05:00

    As of Firefox 32, the place to store data for your add-on is supposed to be: [profile]/extension-data/[add-on ID]. This was established by the resolution of "Bug 915838 - Provide add-ons a standard directory to store data, settings". There is a follow-on bug, "Bug 952304 - (JSONStore) JSON storage API for addons to use in storing data and settings" which is supposed to provide an API for easy access.

    For the Addon-SDK, you can obtain the addon ID (which you define in package.json) with:

    let self = require("sdk/self");
    let addonID = self.id;
    

    For XUL and restartless extensions, you should be able to get the ID of your addon (which you define in the install.rdf file) with:

    Components.utils.import("resource://gre/modules/Services.jsm");
    let addonID = Services.appInfo.ID
    

    You can then do the following to generate a URI for a file in that directory:

    userProfileDirectoryPath = Components.classes["@mozilla.org/file/directory_service;1"]
                                         .getService( Components.interfaces.nsIProperties)
                                         .get("ProfD", Components.interfaces.nsIFile).path,
    
    /**
     * Generate URI for a filename in the extension's data directory under the preferences
     *   directory.
     */
    function generateURIForFileInPrefExtensionDataDirectory (fileName) {
        //Account for the path separator being OS dependent
        let toReturn = "file://" + userProfileDirectoryPath.replace(/\\/g,"/");
    
        return toReturn +"/extension-data/" + addonID + "/" + fileName;
        }
    }
    

    The object myExtension.addonData is a copy that I store of the Bootstrap data provided to entry points in bootstrap.js.

    0 讨论(0)
提交回复
热议问题