| /** |
| * 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 }); |
| }); |
| } |