summaryrefslogtreecommitdiffstats
path: root/devtools/client/webconsole/net/utils/net.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/webconsole/net/utils/net.js')
-rw-r--r--devtools/client/webconsole/net/utils/net.js134
1 files changed, 134 insertions, 0 deletions
diff --git a/devtools/client/webconsole/net/utils/net.js b/devtools/client/webconsole/net/utils/net.js
new file mode 100644
index 000000000..782ec032a
--- /dev/null
+++ b/devtools/client/webconsole/net/utils/net.js
@@ -0,0 +1,134 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+"use strict";
+
+const mimeCategoryMap = {
+ "text/plain": "txt",
+ "application/octet-stream": "bin",
+ "text/html": "html",
+ "text/xml": "html",
+ "application/xml": "html",
+ "application/rss+xml": "html",
+ "application/atom+xml": "html",
+ "application/xhtml+xml": "html",
+ "application/mathml+xml": "html",
+ "application/rdf+xml": "html",
+ "text/css": "css",
+ "application/x-javascript": "js",
+ "text/javascript": "js",
+ "application/javascript": "js",
+ "text/ecmascript": "js",
+ "application/ecmascript": "js",
+ "image/jpeg": "image",
+ "image/jpg": "image",
+ "image/gif": "image",
+ "image/png": "image",
+ "image/bmp": "image",
+ "application/x-shockwave-flash": "plugin",
+ "application/x-silverlight-app": "plugin",
+ "video/x-flv": "media",
+ "audio/mpeg3": "media",
+ "audio/x-mpeg-3": "media",
+ "video/mpeg": "media",
+ "video/x-mpeg": "media",
+ "video/webm": "media",
+ "video/mp4": "media",
+ "video/ogg": "media",
+ "audio/ogg": "media",
+ "application/ogg": "media",
+ "application/x-ogg": "media",
+ "application/x-midi": "media",
+ "audio/midi": "media",
+ "audio/x-mid": "media",
+ "audio/x-midi": "media",
+ "music/crescendo": "media",
+ "audio/wav": "media",
+ "audio/x-wav": "media",
+ "application/x-woff": "font",
+ "application/font-woff": "font",
+ "application/x-font-woff": "font",
+ "application/x-ttf": "font",
+ "application/x-font-ttf": "font",
+ "font/ttf": "font",
+ "font/woff": "font",
+ "application/x-otf": "font",
+ "application/x-font-otf": "font"
+};
+
+var NetUtils = {};
+
+NetUtils.isImage = function (contentType) {
+ if (!contentType) {
+ return false;
+ }
+
+ contentType = contentType.split(";")[0];
+ contentType = contentType.trim();
+ return mimeCategoryMap[contentType] == "image";
+};
+
+NetUtils.isHTML = function (contentType) {
+ if (!contentType) {
+ return false;
+ }
+
+ contentType = contentType.split(";")[0];
+ contentType = contentType.trim();
+ return mimeCategoryMap[contentType] == "html";
+};
+
+NetUtils.getHeaderValue = function (headers, name) {
+ if (!headers) {
+ return null;
+ }
+
+ name = name.toLowerCase();
+ for (let i = 0; i < headers.length; ++i) {
+ let headerName = headers[i].name.toLowerCase();
+ if (headerName == name) {
+ return headers[i].value;
+ }
+ }
+};
+
+NetUtils.parseXml = function (content) {
+ let contentType = content.mimeType.split(";")[0];
+ contentType = contentType.trim();
+
+ let parser = new DOMParser();
+ let doc = parser.parseFromString(content.text, contentType);
+ let root = doc.documentElement;
+
+ // Error handling
+ let nsURI = "http://www.mozilla.org/newlayout/xml/parsererror.xml";
+ if (root.namespaceURI == nsURI && root.nodeName == "parsererror") {
+ return null;
+ }
+
+ return doc;
+};
+
+NetUtils.isURLEncodedRequest = function (file) {
+ let mimeType = "application/x-www-form-urlencoded";
+
+ let postData = file.request.postData;
+ if (postData && postData.text) {
+ let text = postData.text.toLowerCase();
+ if (text.startsWith("content-type: " + mimeType)) {
+ return true;
+ }
+ }
+
+ let value = NetUtils.getHeaderValue(file.request.headers, "content-type");
+ return value && value.startsWith(mimeType);
+};
+
+NetUtils.isMultiPartRequest = function (file) {
+ let mimeType = "multipart/form-data";
+ let value = NetUtils.getHeaderValue(file.request.headers, "content-type");
+ return value && value.startsWith(mimeType);
+};
+
+// Exports from this module
+module.exports = NetUtils;