| <html> |
| <head> |
| <link rel="stylesheet" href="resources/styles-url-linkify.css"> |
| |
| <script src="../../http/tests/inspector/inspector-test.js"></script> |
| <script src="../../http/tests/inspector/elements-test.js"></script> |
| <script> |
| |
| function test() |
| { |
| function completeURL(baseURL, href) |
| { |
| InspectorTest.addResult(WebInspector.ParsedURL.completeURL(baseURL, href)); |
| } |
| |
| InspectorTest.addResult("URLs completed:"); |
| completeURL("http://example.com", "/"); |
| completeURL("http://example.com", "moo"); |
| completeURL("http://example.com/", "https://secure.com/moo"); |
| completeURL("https://example.com/foo", "//secure.com/moo"); |
| completeURL("http://example.com/foo/zoo", "/moo"); |
| completeURL("http://example.com/foo/zoo/", "moo"); |
| completeURL("http://example.com/foo/zoo", "boo/moo"); |
| completeURL("http://example.com/foo", "moo"); |
| completeURL("http://example.com/foo", "?a=b"); |
| completeURL("http://example.com/foo", "?a=/b"); |
| completeURL("http://example.com/?c=/d#anchor", "?a=/b"); |
| completeURL("http://example.com/foo?c=d", "?a=b"); |
| completeURL("http://example.com/foo?c=d#anchor", "?a=/b"); |
| completeURL("http://example.com/foo?c=/d/e", "?a=b"); |
| completeURL("http://example.com/foo?c=/d/e", "cat.jpeg"); |
| completeURL("http://example.com/foo#anchor", "cat.jpeg"); |
| completeURL("http://example.com/", "/foo?bar=http://otherexample.com"); |
| |
| const dataURL = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCAgMAAACeOuh7AAAABGdBTUEAAK/INwWK6QAAAAlQTFRF////AAAA////fu+PTwAAAAF0Uk5TAEDm2GYAAACHSURBVDjLxdLbDYAgDAVQGELn0R3oEHYf2KGdUqtE46OFRCP3oyTng1xCnWsaD5JRRtCkQ2YmkBkHRXqWJBn0j0TICbrsWVoWhRShCdcGyZCtHxMaUnVPRZ9KSbmBJdsX2vJVnwqRD0Rb4rpzgIbE/AI5NTnWAMvy5l0dXrfuLh5OCe5BmmYGXhTUxlQ5xJ8AAAAASUVORK5CYII="; |
| const blobURL = "blob:http%3A//example.com/f91b7b00-00-0000-0000-3b7c87055d7a"; |
| completeURL("https://example.com/foo", dataURL); |
| completeURL("http://example.com/foo", "javascript:alert('foo');"); |
| completeURL("http://example.com/foo", blobURL); |
| InspectorTest.addResult(WebInspector.ParsedURL.completeURL(blobURL)); |
| |
| function dumpHref(dumpLinkClass) |
| { |
| var hrefNode; |
| var valueChildNodes = WebInspector.panels.elements.sidebarPanes.styles.sections[0][2].propertiesTreeOutline.children[0].valueElement.childNodes; |
| for (var i = 0; i < valueChildNodes.length; ++i) { |
| if (valueChildNodes[i].href) { |
| hrefNode = valueChildNodes[i]; |
| break; |
| } |
| } |
| if (!hrefNode) { |
| InspectorTest.addResult("href property not found"); |
| return; |
| } |
| |
| var styleClass = ""; |
| if (dumpLinkClass) { |
| if (hrefNode.hasStyleClass("webkit-html-resource-link")) |
| styleClass += "webkit-html-resource-link "; |
| if (hrefNode.hasStyleClass("webkit-html-external-link")) |
| styleClass += "webkit-html-external-link "; |
| } |
| |
| var href = hrefNode.href; |
| var segments = href.split("/"); |
| var output = []; |
| for (var i = segments.length - 1, minSegment = i - 3; i >= 0 && i >= minSegment; --i) |
| output.unshift(segments[i]); |
| |
| InspectorTest.addResult(styleClass + output.join("/")); |
| } |
| |
| InspectorTest.selectNodeAndWaitForStyles("local", step1); |
| |
| function step1() |
| { |
| InspectorTest.addResult("Link for a URI from CSS document:"); |
| dumpHref(true); |
| InspectorTest.selectNodeAndWaitForStyles("iframed", step2); |
| } |
| |
| function step2() |
| { |
| InspectorTest.addResult("Link for a URI from iframe inline stylesheet:"); |
| dumpHref(); |
| InspectorTest.completeTest(); |
| } |
| } |
| |
| </script> |
| </head> |
| <body onload="runAfterIframeIsLoaded()"> |
| <p> |
| Tests that URLs are linked to and completed correctly. Bugs <a href="http://bugs.webkit.org/show_bug.cgi?id=51663">51663</a>, <a href="http://bugs.webkit.org/show_bug.cgi?id=53171">53171</a>, <a href="http://bugs.webkit.org/show_bug.cgi?id=62643">62643</a>, <a href="http://bugs.webkit.org/show_bug.cgi?id=72373">72373</a>, <a href="http://bugs.webkit.org/show_bug.cgi?id=79905">79905</a> |
| </p> |
| <div id="local"></div> |
| <iframe src="resources/styles-url-linkify-iframe.html"></iframe> |
| |
| </body> |
| </html> |