forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			153 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* vim:set ts=2 sw=2 sts=2 et: */
 | 
						|
/* Any copyright is dedicated to the Public Domain.
 | 
						|
 * http://creativecommons.org/publicdomain/zero/1.0/ */
 | 
						|
 | 
						|
// Test that long strings can be expanded in the console output.
 | 
						|
 | 
						|
function test()
 | 
						|
{
 | 
						|
  waitForExplicitFinish();
 | 
						|
 | 
						|
  let tempScope = {};
 | 
						|
  Cu.import("resource://gre/modules/devtools/dbg-server.jsm", tempScope);
 | 
						|
  let DebuggerServer = tempScope.DebuggerServer;
 | 
						|
 | 
						|
  let longString = (new Array(DebuggerServer.LONG_STRING_LENGTH + 4)).join("a") +
 | 
						|
                   "foobar";
 | 
						|
  let initialString =
 | 
						|
    longString.substring(0, DebuggerServer.LONG_STRING_INITIAL_LENGTH);
 | 
						|
 | 
						|
  addTab("data:text/html;charset=utf8,test for bug 787981 - check that long strings can be expanded in the output.");
 | 
						|
 | 
						|
  let hud = null;
 | 
						|
 | 
						|
  gBrowser.selectedBrowser.addEventListener("load", function onLoad() {
 | 
						|
    gBrowser.selectedBrowser.removeEventListener("load", onLoad, true);
 | 
						|
    openConsole(null, performTest);
 | 
						|
  }, true);
 | 
						|
 | 
						|
  function performTest(aHud)
 | 
						|
  {
 | 
						|
    hud = aHud;
 | 
						|
 | 
						|
    hud.jsterm.clearOutput(true);
 | 
						|
    hud.jsterm.execute("console.log('bazbaz', '" + longString +"', 'boom')");
 | 
						|
 | 
						|
    waitForSuccess(waitForConsoleLog);
 | 
						|
  }
 | 
						|
 | 
						|
  let waitForConsoleLog = {
 | 
						|
    name: "console.log output shown",
 | 
						|
    validatorFn: function()
 | 
						|
    {
 | 
						|
      return hud.outputNode.querySelector(".webconsole-msg-console");
 | 
						|
    },
 | 
						|
    successFn: function()
 | 
						|
    {
 | 
						|
      let msg = hud.outputNode.querySelector(".webconsole-msg-console");
 | 
						|
      is(msg.textContent.indexOf("foobar"), -1,
 | 
						|
         "foobar is not shown");
 | 
						|
      isnot(msg.textContent.indexOf("bazbaz"), -1,
 | 
						|
            "bazbaz is shown");
 | 
						|
      isnot(msg.textContent.indexOf("boom"), -1,
 | 
						|
            "boom is shown");
 | 
						|
      isnot(msg.textContent.indexOf(initialString), -1,
 | 
						|
            "initial string is shown");
 | 
						|
 | 
						|
      let clickable = msg.querySelector(".longStringEllipsis");
 | 
						|
      ok(clickable, "long string ellipsis is shown");
 | 
						|
 | 
						|
      scrollToVisible(clickable);
 | 
						|
 | 
						|
      executeSoon(function() {
 | 
						|
        EventUtils.synthesizeMouse(clickable, 2, 2, {}, hud.iframeWindow);
 | 
						|
        waitForSuccess(waitForFullString);
 | 
						|
      });
 | 
						|
    },
 | 
						|
    failureFn: finishTest,
 | 
						|
  };
 | 
						|
 | 
						|
  let waitForFullString = {
 | 
						|
    name: "full string shown",
 | 
						|
    validatorFn: function()
 | 
						|
    {
 | 
						|
      let msg = hud.outputNode.querySelector(".webconsole-msg-log");
 | 
						|
      return msg.textContent.indexOf(longString) > -1;
 | 
						|
    },
 | 
						|
    successFn: function()
 | 
						|
    {
 | 
						|
      let msg = hud.outputNode.querySelector(".webconsole-msg-log");
 | 
						|
      isnot(msg.textContent.indexOf("bazbaz"), -1,
 | 
						|
            "bazbaz is shown");
 | 
						|
      isnot(msg.textContent.indexOf("boom"), -1,
 | 
						|
            "boom is shown");
 | 
						|
 | 
						|
      let clickable = msg.querySelector(".longStringEllipsis");
 | 
						|
      ok(!clickable, "long string ellipsis is not shown");
 | 
						|
 | 
						|
      executeSoon(function() {
 | 
						|
        hud.jsterm.clearOutput(true);
 | 
						|
        hud.jsterm.execute("'" + longString +"'");
 | 
						|
        waitForSuccess(waitForExecute);
 | 
						|
      });
 | 
						|
    },
 | 
						|
    failureFn: finishTest,
 | 
						|
  };
 | 
						|
 | 
						|
  let waitForExecute = {
 | 
						|
    name: "execute() output shown",
 | 
						|
    validatorFn: function()
 | 
						|
    {
 | 
						|
      return hud.outputNode.querySelector(".webconsole-msg-output");
 | 
						|
    },
 | 
						|
    successFn: function()
 | 
						|
    {
 | 
						|
      let msg = hud.outputNode.querySelector(".webconsole-msg-output");
 | 
						|
      isnot(msg.textContent.indexOf(initialString), -1,
 | 
						|
           "initial string is shown");
 | 
						|
      is(msg.textContent.indexOf(longString), -1,
 | 
						|
         "full string is not shown");
 | 
						|
 | 
						|
      let clickable = msg.querySelector(".longStringEllipsis");
 | 
						|
      ok(clickable, "long string ellipsis is shown");
 | 
						|
 | 
						|
      scrollToVisible(clickable);
 | 
						|
 | 
						|
      executeSoon(function() {
 | 
						|
        EventUtils.synthesizeMouse(clickable, 3, 4, {}, hud.iframeWindow);
 | 
						|
        waitForSuccess(waitForFullStringAfterExecute);
 | 
						|
      });
 | 
						|
    },
 | 
						|
    failureFn: finishTest,
 | 
						|
  };
 | 
						|
 | 
						|
  let waitForFullStringAfterExecute = {
 | 
						|
    name: "full string shown again",
 | 
						|
    validatorFn: function()
 | 
						|
    {
 | 
						|
      let msg = hud.outputNode.querySelector(".webconsole-msg-output");
 | 
						|
      return msg.textContent.indexOf(longString) > -1;
 | 
						|
    },
 | 
						|
    successFn: function()
 | 
						|
    {
 | 
						|
      let msg = hud.outputNode.querySelector(".webconsole-msg-output");
 | 
						|
      let clickable = msg.querySelector(".longStringEllipsis");
 | 
						|
      ok(!clickable, "long string ellipsis is not shown");
 | 
						|
 | 
						|
      executeSoon(finishTest);
 | 
						|
    },
 | 
						|
    failureFn: finishTest,
 | 
						|
  };
 | 
						|
 | 
						|
  function scrollToVisible(aNode)
 | 
						|
  {
 | 
						|
    let richListBoxNode = aNode.parentNode;
 | 
						|
    while (richListBoxNode.tagName != "richlistbox") {
 | 
						|
      richListBoxNode = richListBoxNode.parentNode;
 | 
						|
    }
 | 
						|
 | 
						|
    let boxObject = richListBoxNode.scrollBoxObject;
 | 
						|
    let nsIScrollBoxObject = boxObject.QueryInterface(Ci.nsIScrollBoxObject);
 | 
						|
    nsIScrollBoxObject.ensureElementIsVisible(aNode);
 | 
						|
  }
 | 
						|
}
 |