1 Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
3 // This content policy component tries to prevent outside sites from getting xulG hooks
4 // It does so by forcing them to open outside of Evergreen
6 function oilsForceExternal() {}
7 oilsForceExternal.prototype = {
8 classDescription: "OpenILS Force External",
9 classID: Components.ID("{D969ED61-DF4C-FA12-A2A6-70AA94C222FB}"),
10 contractID: "@mozilla.org/content-policy;1?type=egfe",
12 category: "content-policy",
15 QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsIContentPolicy]),
16 shouldLoad: function(contentType, contentLocation, requestOrigin, node, mimeTypeGuess, extra)
18 if ((contentType == Components.interfaces.nsIContentPolicy.TYPE_DOCUMENT || contentType == Components.interfaces.nsIContentPolicy.TYPE_SUBDOCUMENT)
19 && (contentLocation.scheme == 'http' || contentLocation.scheme == 'https')
20 && node && node.getAttribute('oils_force_external') == 'true') {
21 var data_cache = Components.classes["@open-ils.org/openils_data_cache;1"].getService().wrappedJSObject.data;
22 var host = data_cache.server_unadorned;
23 if(host && contentLocation.host != host) {
24 // first construct an nsIURI object using the ioservice
25 var ioservice = Components.classes["@mozilla.org/network/io-service;1"]
26 .getService(Components.interfaces.nsIIOService);
28 var uriToOpen = ioservice.newURI(contentLocation.spec, null, null);
30 var extps = Components.classes["@mozilla.org/uriloader/external-protocol-service;1"]
31 .getService(Components.interfaces.nsIExternalProtocolService);
34 extps.loadURI(uriToOpen, null);
36 return Components.interfaces.nsIContentPolicy.REJECT_REQUEST;
39 return Components.interfaces.nsIContentPolicy.ACCEPT;
42 shouldProcess: function(contentType, contentLocation, requestOrigin, insecNode, mimeType, extra)
44 return Components.interfaces.nsIContentPolicy.ACCEPT;
48 if (XPCOMUtils.generateNSGetFactory)
49 var NSGetFactory = XPCOMUtils.generateNSGetFactory([oilsForceExternal]);
51 var NSGetModule = XPCOMUtils.generateNSGetModule([oilsForceExternal]);