mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1230544 - JSON Viewer: support for .json URL extensions; r=jryans
This commit is contained in:
parent
86177d585f
commit
b034b42b14
@ -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 "";
|
||||
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user