summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/svg/linking/scripted/testcommon.js
blob: 7d87923f59bbc8e984a8cadcc9c8914a9f99fc8d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/**
 * The const var for SVG and xlink namespaces
 */
const SVGNS = 'http://www.w3.org/2000/svg';
const XLINKNS = 'http://www.w3.org/1999/xlink';

/**
 * Appends a svg element to the parent.
 *
 * @param test The testharness.js Test object. If provided, this will be used
 *             to register a cleanup callback to remove the div when the test
 *             finishes.
 * @param tag The element tag name.
 * @param parent The parent element of this new created svg element.
 * @param attrs  A dictionary object with attribute names and values to set on
 *               the div.
 */
function createSVGElement(test, tag, parent, attrs) {
  var elem = document.createElementNS(SVGNS, tag);
  if (attrs) {
    for (var attrName in attrs) {
      elem.setAttribute(attrName, attrs[attrName]);
    }
  }
  parent.appendChild(elem);
  test.add_cleanup(function() {
    elem.remove();
  });
  return elem;
}

/**
 * Create a Promise object which resolves when a specific event fires.
 *
 * @param object The event target.
 * @param name The event name.
 */
function waitEvent(object, name) {
  return new Promise(function(resolve) {
    object.addEventListener(name, resolve, { once: true });
  });
}