blob: 487fa380a2014817f0aca8bbe50ec579a8f12970 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
(async function() {
TestRunner.addResult(`Tests that src and href element targets are rewritten properly.\n`);
await TestRunner.loadModule('elements_test_runner');
await TestRunner.showPanel('elements');
await TestRunner.loadHTML(`
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<a style="display:none" href=" javascript:alert('foo') "></a>
<script>
(function(){
let iframe = document.createElement('iframe');
iframe.src = "resources/elements-panel-rewrite-href-iframe.html";
document.body.appendChild(iframe);
window.frameLoadedPromise = new Promise(f => iframe.onload = f);
})();
</script>
`);
await TestRunner.evaluateInPageAsync(`window.frameLoadedPromise`);
ElementsTestRunner.expandElementsTree(step1);
function step1() {
var innerMapping = TestRunner.domModel._idToDOMNode;
var outputLines = [];
for (var nodeId in innerMapping) {
var node = innerMapping[nodeId];
if (node.nodeName() === 'LINK' || node.nodeName() === 'SCRIPT') {
var segments = [];
var href = node.resolveURL(node.getAttribute('src') || node.getAttribute('href'));
if (!href) {
segments.push('<empty>');
continue;
}
if (href.startsWith('http:')) {
outputLines.push(href);
continue;
}
var parsedURL = href.asParsedURL();
if (!parsedURL) {
testController.notifyDone('FAIL: no URL match for <' + href + '>');
continue;
}
var split = parsedURL.path.split('/');
for (var i = split.length - 1, j = 0; j < 3 && i >= 0; --i, ++j)
segments.push(split[i]);
outputLines.push(segments.reverse());
}
if (node.nodeName() === 'A')
outputLines.push(node.resolveURL(node.getAttribute('href')));
}
outputLines.sort();
TestRunner.addResult(outputLines.join('\n'));
TestRunner.completeTest();
}
})();