| Index: chrome/test/data/third_party/spaceport/js/testDom.js
|
| diff --git a/chrome/test/data/third_party/spaceport/js/testDom.js b/chrome/test/data/third_party/spaceport/js/testDom.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ef9234cebbd362a140a67d824d6ca9807f2b5faf
|
| --- /dev/null
|
| +++ b/chrome/test/data/third_party/spaceport/js/testDom.js
|
| @@ -0,0 +1,87 @@
|
| +define([ 'util/report' ], function (report) {
|
| + function classes(el) {
|
| + return el.className.split(/\s+/g);
|
| + }
|
| +
|
| + function addClass(el, className) {
|
| + el.className += ' ' + className;
|
| + }
|
| +
|
| + function removeClass(el, className) {
|
| + // wtb classList (damnit Safari!)
|
| + el.className = classes(el).filter(function (c) {
|
| + return c !== className;
|
| + }).join(' ');
|
| + }
|
| +
|
| + function testResultNameAccept(name) {
|
| + return name !== 'pass';
|
| + }
|
| +
|
| + var testDom = {
|
| + endTest: function (domId, err, results) {
|
| + var el = document.getElementById(domId);
|
| + if (!el) {
|
| + throw new Error('Could not find element #' + domId);
|
| + }
|
| +
|
| + function findSlot(name) {
|
| + var elements = el.querySelectorAll('[data-property]');
|
| + var i;
|
| + for (i = 0; i < elements.length; ++i) {
|
| + var element = elements[i];
|
| + if (element.getAttribute('data-property') === name) {
|
| + return element;
|
| + }
|
| + }
|
| +
|
| + return null;
|
| + }
|
| +
|
| + function fillSlots(name, value) {
|
| + if (!testResultNameAccept(name)) {
|
| + return;
|
| + }
|
| +
|
| + if (value === null || typeof value === 'undefined') {
|
| + return;
|
| + }
|
| +
|
| + if (typeof value === 'object') {
|
| + Object.keys(value).forEach(function (subName) {
|
| + fillSlots(subName, value[subName]);
|
| + });
|
| + } else {
|
| + var slot = findSlot(name);
|
| + if (slot) {
|
| + slot.textContent = value;
|
| + } else {
|
| + //console.warn('Could not find slot ' + name + ' for ' + domId, value);
|
| + }
|
| + }
|
| + }
|
| +
|
| + fillSlots('', results);
|
| +
|
| + removeClass(el, 'pass');
|
| + removeClass(el, 'fail');
|
| + removeClass(el, 'error');
|
| +
|
| + if (err) {
|
| + addClass(el, 'error');
|
| +
|
| + var errorMessageEl = el.querySelector('.error-message');
|
| + if (errorMessageEl) {
|
| + errorMessageEl.textContent = err;
|
| + }
|
| + } else if (results && results.passed) {
|
| + addClass(el, 'pass');
|
| + } else {
|
| + addClass(el, 'fail');
|
| + }
|
| +
|
| + }
|
| + };
|
| +
|
| + return testDom;
|
| +});
|
|
|