Bug 1230544 - JSON Viewer: support for .json URL extensions; r=jryans

This commit is contained in:
Jan Odvarko 2015-12-04 15:27:47 +01:00
parent 86177d585f
commit b034b42b14
2 changed files with 35 additions and 0 deletions

View File

@ -22,6 +22,7 @@ const CONTRACT_ID = "@mozilla.org/devtools/jsonview-sniffer;1";
const CLASS_ID = "{4148c488-dca1-49fc-a621-2a0097a62422}";
const JSON_VIEW_MIME_TYPE = "application/vnd.mozilla.json.view";
const JSON_VIEW_TYPE = "JSON View";
const JSON_EXTENSION = "json";
const CONTENT_SNIFFER_CATEGORY = "net-content-sniffers";
/**
@ -63,6 +64,10 @@ var Sniffer = Class({
if (aRequest.contentType == JSON_TYPE) {
return JSON_VIEW_MIME_TYPE;
}
if (NetworkHelper.getFileExtension(aRequest.name) == JSON_EXTENSION) {
return JSON_VIEW_MIME_TYPE;
}
}
return "";

View File

@ -803,6 +803,36 @@ var NetworkHelper = {
let uri = Services.io.newURI(aUrl, null, null).QueryInterface(Ci.nsIURL);
aStore.set(aUrl, uri);
return uri;
},
/**
* Returns extension for file URLs (e.g. 'json').
* Not everyURL has an extension and this method works as follows:
* 1) Remove query string
* 2) Get part after the last slash (a file name)
* 3) Look for the last dot (an extension)
*/
getFileExtension: function(aUrl) {
if (!aUrl) {
return;
}
// Remove query string from the URL if any.
let queryString = aUrl.indexOf("?");
if (queryString != -1) {
aUrl = aUrl.substr(0, queryString);
}
// Look for the part after last slash
var lastSlash = aUrl.lastIndexOf("/");
var fileName = aUrl.substr(lastSlash + 1);
if (!fileName) {
return;
}
// Now get the file extension.
var lastDot = fileName.lastIndexOf(".");
return fileName.substr(lastDot + 1);
}
};