/* 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 very long strings do not hang the browser.

function test()
{
  addTab("http://example.com/browser/browser/devtools/webconsole/test/test-bug-859170-longstring-hang.html");

  let hud = null;

  gBrowser.selectedBrowser.addEventListener("load", function onLoad() {
    gBrowser.selectedBrowser.removeEventListener("load", onLoad, true);
    openConsole(null, performTest);
  }, true);

  function performTest(aHud)
  {
    hud = aHud;
    info("wait for the initial long string");

    waitForMessages({
      webconsole: hud,
      messages: [
        {
          name: "find 'foobar', no 'foobaz', in long string output",
          text: "foobar",
          noText: "foobaz",
          category: CATEGORY_WEBDEV,
          longString: true,
        },
      ],
    }).then(onInitialString);
  }

  function onInitialString(aResults)
  {
    let clickable = aResults[0].longStrings[0];
    ok(clickable, "long string ellipsis is shown");
    clickable.scrollIntoView(false);

    EventUtils.synthesizeMouse(clickable, 2, 2, {}, hud.iframeWindow);

    info("wait for long string expansion");

    waitForMessages({
      webconsole: hud,
      messages: [
        {
          name: "find 'foobaz' after expand, but no 'boom!' at the end",
          text: "foobaz",
          noText: "boom!",
          category: CATEGORY_WEBDEV,
          longString: false,
        },
        {
          text: "too long to be displayed",
          longString: false,
        },
      ],
    }).then(finishTest);
  }
}
