Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
SDK API for registering new resource URIs
/*jshint asi:true globalstrict:true*/
'use strict';
let { Cc, Ci } = require('chrome')
let ioService = Cc[';1'].
let resourceHandler = ioService.getProtocolHandler('resource').
function get(root) {
Gets the substitution for the `root` key.
try { return resourceHandler.getSubstitution(root).spec }
catch (error) { return null }
exports.get = get
function has(root) {
Returns `true` if the substitution exists and `false` otherwise.
return resourceHandler.hasSubstitution(root)
exports.get = get
function set(root, uri) {
Sets the substitution for the root key:
resource://root/path ==> baseURI.resolve(path)
A `null` `uri` removes substitution. A root key should
always be lowercase. However, this may not be enforced.
uri = !uri ? null :
uri instanceof Ci.nsIURI ? uri :
ioService.newURI(uri, null, null)
resourceHandler.setSubstitution(root, uri)
exports.set = set

EliotVU commented Nov 10, 2013

Usage example: require('resource').set('projectname', data.url('index.html'));

then navigate to "resource://projectname" equals "resource:///index.html"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment