diff --git a/plugins/c9.fs/fs.streams.js b/plugins/c9.fs/fs.streams.js index d2d8e609..1793144b 100644 --- a/plugins/c9.fs/fs.streams.js +++ b/plugins/c9.fs/fs.streams.js @@ -7,7 +7,7 @@ return function(vfs, base, baseProc, cli) { var resolvePath = function(path, basePath) { if (path.charAt(0) == "~") { - if (cli && typeof process != "undefined") + if (cli && typeof process != "undefined" && process.env) return process.env.HOME + "/" + path.substr(1); return path; } diff --git a/plugins/c9.ide.immediate/evaluators/browserjs.js b/plugins/c9.ide.immediate/evaluators/browserjs.js index bbf8455d..5c78fae2 100644 --- a/plugins/c9.ide.immediate/evaluators/browserjs.js +++ b/plugins/c9.ide.immediate/evaluators/browserjs.js @@ -21,6 +21,8 @@ define(function(require, exports, module) { var Evaluator = imports.Evaluator; var ui = imports.ui; + var escapeHTML = require("ace/lib/lang").escapeHTML; + /***** Initialization *****/ var plugin = new Evaluator("Ajax.org", main.consumes, { @@ -108,7 +110,7 @@ define(function(require, exports, module) { function insert(div, markup, name) { if (name !== undefined) - insert(div, "" + name + ": "); + insert(div, "" + escapeHTML(name) + ": "); markup = markup.replace(/([a-z]\w{1,4}:\/\/[\w:_\-\?&\/\.\#]*)/gi, "$1"); div.insertAdjacentHTML("beforeend", markup); @@ -279,7 +281,7 @@ define(function(require, exports, module) { var count = Math.min(Math.min(props.length, 5), Math.max(0, 100 - object.length)); for (var i = 0; i < count; i++) { - insert(preview, (found || i !== 0 ? ", " : "") + props[i] + ": "); + insert(preview, (found || i !== 0 ? ", " : "") + escapeHTML(props[i]) + ": "); renderType(object[props[i]], preview, false, 2); } if (props.length > count) diff --git a/plugins/c9.ide.immediate/evaluators/debugnode.js b/plugins/c9.ide.immediate/evaluators/debugnode.js index 778f63ac..9da0d46d 100644 --- a/plugins/c9.ide.immediate/evaluators/debugnode.js +++ b/plugins/c9.ide.immediate/evaluators/debugnode.js @@ -113,7 +113,7 @@ define(function(require, exports, module) { function insert(div, markup, name) { if (name !== undefined) - insert(div, "" + name + ": "); + insert(div, "" + escapeHTML(name) + ": "); markup = markup.replace(/([a-z]\w{1,4}:\/\/[\w:_\-\?&\/\.\#]*)/gi, "$1"); div.insertAdjacentHTML("beforeend", markup); @@ -319,7 +319,7 @@ define(function(require, exports, module) { var count = Math.min(Math.min(props.length, 5), Math.max(0, 100 - object.length)); for (var i = 0; i < count; i++) { - insert(preview, (i !== 0 ? ", " : "") + props[i] + ": "); + insert(preview, (i !== 0 ? ", " : "") + escapeHTML(props[i]) + ": "); renderType(props[i], preview, false, 2); } if (props.length > count) diff --git a/plugins/c9.ide.language.core/outline.js b/plugins/c9.ide.language.core/outline.js index 74c7befc..859486b3 100644 --- a/plugins/c9.ide.language.core/outline.js +++ b/plugins/c9.ide.language.core/outline.js @@ -653,7 +653,11 @@ define(function(require, exports, module) { /** * */ - addOutlinePlugin: addOutlinePlugin + addOutlinePlugin: addOutlinePlugin, + /** + * @ignore + */ + get tree() { return tree }, }); register(null, { diff --git a/plugins/c9.ide.terminal/terminal_test.js b/plugins/c9.ide.terminal/terminal_test.js index 3e712175..e13b3dc8 100644 --- a/plugins/c9.ide.terminal/terminal_test.js +++ b/plugins/c9.ide.terminal/terminal_test.js @@ -1,4 +1,4 @@ -/*global describe it before after bar =*/ +/*global describe it before after bar*/ "use client"; @@ -69,9 +69,6 @@ require(["lib/architect/architect", "lib/chai/chai", "/vfs-root"], function (arc describe('terminal', function() { before(function(done) { - apf.config.setProperty("allow-select", false); - apf.config.setProperty("allow-blur", false); - bar.$ext.style.background = "rgba(220, 220, 220, 0.93)"; bar.$ext.style.position = "fixed"; bar.$ext.style.left = "20px"; @@ -153,16 +150,24 @@ require(["lib/architect/architect", "lib/chai/chai", "/vfs-root"], function (arc it('should handle multiple terminals in the same pane', function(done) { tabs.openEditor("terminal", function(err, tab) { + expect(err).to.not.ok; expect(tabs.getTabs()).length(2); tab.activate(); var doc = tab.document; - doc.on("setTitle", function c1() { - // expect(doc.title).match(new RegExp("^bash - ")); - - doc.off("setTitle", c1); - done(); + doc.once("setTitle", function() { + var terminal = tab.editor.ace.session.term; + terminal.once("afterWrite", function() { + expect(window.xss).to.not.ok; + terminal.write("echo \"\""); + tab.editor.ace.resize(true); + expect(tab.editor.ace.container.textContent.indexOf("