Source code

Revision control

Copy as Markdown

Other Tools

const verifyEntries = (entries, filterOptions) => {
for (const filterOption of filterOptions) {
let countBeforeFiltering = entries.length;
// Using negate of the condition so that the next filtering is applied on less entries.
entries = entries.filter(
e => !(e.entryType == filterOption['entryType'] && e.name.includes(filterOption['name'])));
assert_equals(
countBeforeFiltering - entries.length, filterOption['expectedCount'], filterOption['failureMsg']);
}
}
const createFilterOption = (name, entryType, expectedCount, msgPrefix, description = '') => {
if (description) {
description = ' ' + description;
}
let failureMsg =
`${msgPrefix} should have ${expectedCount} ${entryType} entries for name ${name}` + description;
return {
name: name,
entryType: entryType,
expectedCount: expectedCount,
failureMsg: failureMsg
};
}
const loadChildFrame = (src) => {
return new Promise(resolve => {
const childFrame = document.createElement('iframe');
childFrame.addEventListener("load", resolve);
childFrame.src = src;
document.body.appendChild(childFrame);
});
}
const loadChildFrameAndGrandchildFrame = (src) => {
return new Promise(resolve => {
const crossOriginChildFrame = document.createElement('iframe');
// Wait for the child frame to send a message. The child frame would send a message
// when it loads its child frame.
window.addEventListener('message', e => {
if (e.data == 'Load completed') {
resolve();
}
});
crossOriginChildFrame.src = src;
document.body.appendChild(crossOriginChildFrame)
});
}