"use strict";

add_task(async function() {
  await BrowserTestUtils.withNewTab({
    gBrowser,
    url: "http://mochi.test:8888/browser/toolkit/components/tooltiptext/tests/title_test.svg",
  }, async function(browser) {
    await ContentTask.spawn(browser, "", function() {
      let tttp = Cc["@mozilla.org/embedcomp/default-tooltiptextprovider;1"]
                 .getService(Ci.nsITooltipTextProvider);
      function checkElement(id, expectedTooltipText) {
        let el = content.document.getElementById(id);
        let textObj = {};
        let shouldHaveTooltip = expectedTooltipText !== null;
        is(tttp.getNodeText(el, textObj, {}), shouldHaveTooltip,
           "element " + id + " should " + (shouldHaveTooltip ? "" : "not ") + "have a tooltip");
        if (shouldHaveTooltip) {
          is(textObj.value, expectedTooltipText,
             "element " + id + " should have the right tooltip text");
        }
      }
      checkElement("svg1", "This is a non-root SVG element title");
      checkElement("text1", "\n\n\n    This            is a title\n\n    ");
      checkElement("text2", null);
      checkElement("text3", null);
      checkElement("link1", "\n      This is a title\n    ");
      checkElement("text4", "\n      This is a title\n    ");
      checkElement("link2", null);
      checkElement("link3", "This is an xlink:title attribute");
      checkElement("link4", "This is an xlink:title attribute");
      checkElement("text5", null);
    });
  });
});

