blob: 0f175aec1a209923e19669a09f19bc3b5ebed0f1 [file]
<!DOCTYPE html>
<html>
<body>
<a id="file" href="file:///path/to/file">File</a>
<a id="chrome" href="about:chrome">Chrome</a>
<a href="about:blank"><b id="blank">Click me</b></a>
<script>
function testQuoteString() {
// Basic cases.
assertEquals('\"test\"', quoteString('"test"'));
assertEquals('\\!\\?', quoteString('!?'));
assertEquals('\\(\\._\\.\\) \\( \\:l \\) \\(\\.-\\.\\)',
quoteString('(._.) ( :l ) (.-.)'));
// Using the output as a regex.
let re = new RegExp(quoteString('"hello"'), 'gim');
let match = re.exec('She said "Hello" loudly');
assertEquals(9, match.index);
re = new RegExp(quoteString('Hello, .*'), 'gim');
match = re.exec('Hello, world');
assertEquals(null, match);
}
function testFindAncestor() {
const option = document.createElement('option');
option.value = 'success';
const failure = document.createTextNode('is not an option');
option.appendChild(failure);
const select = document.createElement('select');
select.appendChild(option);
const div = document.createElement('div');
const root = div.attachShadow({mode: 'open'});
root.appendChild(select);
assertEquals(findAncestor(failure, n => n.nodeName === 'SELECT'), select);
// findAncestor() only traverses shadow roots (which |div| is outside of) if
// |includeShadowHosts| is true. If omitted, |div| shouldn't be found.
assertEquals(findAncestor(failure, n => n.nodeName === 'DIV'), null);
assertEquals(findAncestor(failure, n => n.nodeName === 'DIV',
/*includeShadowHosts=*/true), div);
}
</script>
</body>
</html>