Diff
Modified: trunk/LayoutTests/ChangeLog (129476 => 129477)
--- trunk/LayoutTests/ChangeLog 2012-09-25 08:39:41 UTC (rev 129476)
+++ trunk/LayoutTests/ChangeLog 2012-09-25 09:01:54 UTC (rev 129477)
@@ -1,3 +1,16 @@
+2012-09-20 Alexander Pavlov <[email protected]>
+
+ Web Inspector: Relative URL Link Tooltips do not respect <base>
+ https://bugs.webkit.org/show_bug.cgi?id=43434
+
+ Reviewed by Pavel Feldman.
+
+ Added an iframe containing the <base> tag to test DOMNode.prototype.resolveURL() with a non-trivial baseURL.
+
+ * inspector/elements/elements-panel-rewrite-href.html:
+ * inspector/elements/elements-panel-rewrite-href-expected.txt:
+ * inspector/elements/resources/elements-panel-rewrite-href-iframe.html: Added.
+
2012-09-24 Alexander Pavlov <[email protected]>
Web Inspector: [Styles] For group selectors, transmit their segments with the "matches" flag
Modified: trunk/LayoutTests/inspector/elements/elements-panel-rewrite-href-expected.txt (129476 => 129477)
--- trunk/LayoutTests/inspector/elements/elements-panel-rewrite-href-expected.txt 2012-09-25 08:39:41 UTC (rev 129476)
+++ trunk/LayoutTests/inspector/elements/elements-panel-rewrite-href-expected.txt 2012-09-25 09:01:54 UTC (rev 129477)
@@ -1,8 +1,12 @@
Tests that src and href element targets are rewritten properly.
+
_javascript_:alert('foo')
,bogusSheet1.css
inspector,elements,bogusSheet2.css
tests,inspector,inspector-test.js
tests,inspector,elements-test.js
+http://127.0.0.1/stylesheet.css
+http://127.0.0.1/script.js
+http://127.0.0.1/target.html
Modified: trunk/LayoutTests/inspector/elements/elements-panel-rewrite-href.html (129476 => 129477)
--- trunk/LayoutTests/inspector/elements/elements-panel-rewrite-href.html 2012-09-25 08:39:41 UTC (rev 129476)
+++ trunk/LayoutTests/inspector/elements/elements-panel-rewrite-href.html 2012-09-25 09:01:54 UTC (rev 129477)
@@ -24,6 +24,10 @@
segments.push("<empty>");
continue;
}
+ if (href.startsWith("http:")) {
+ InspectorTest.addResult(href);
+ continue;
+ }
var parsedURL = href.asParsedURL();
if (!parsedURL)
testController.notifyDone("FAIL: no URL match for <" + href + ">");
@@ -42,12 +46,12 @@
</script>
</head>
-<body _onload_="runTest()">
+<body>
<p>
Tests that src and href element targets are rewritten properly.
</p>
<a style="display:none" href="" _javascript_:alert('foo') "></a>
-
+<iframe src="" _onload_="runTest()"></iframe>
</body>
</html>
Added: trunk/LayoutTests/inspector/elements/resources/elements-panel-rewrite-href-iframe.html (0 => 129477)
--- trunk/LayoutTests/inspector/elements/resources/elements-panel-rewrite-href-iframe.html (rev 0)
+++ trunk/LayoutTests/inspector/elements/resources/elements-panel-rewrite-href-iframe.html 2012-09-25 09:01:54 UTC (rev 129477)
@@ -0,0 +1,10 @@
+<html>
+<head>
+<base href=""
+<link rel="stylesheet" src=""
+<script src=""
+</head>
+<body>
+<a href=""
+</body>
+</html>
Property changes on: trunk/LayoutTests/inspector/elements/resources/elements-panel-rewrite-href-iframe.html
___________________________________________________________________
Added: svn:eol-style
Modified: trunk/Source/WebCore/ChangeLog (129476 => 129477)
--- trunk/Source/WebCore/ChangeLog 2012-09-25 08:39:41 UTC (rev 129476)
+++ trunk/Source/WebCore/ChangeLog 2012-09-25 09:01:54 UTC (rev 129477)
@@ -1,3 +1,25 @@
+2012-09-20 Alexander Pavlov <[email protected]>
+
+ Web Inspector: Relative URL Link Tooltips do not respect <base>
+ https://bugs.webkit.org/show_bug.cgi?id=43434
+
+ Reviewed by Pavel Feldman.
+
+ New "baseURL" field added into the DOM.Node payload for document nodes and is made use of while resolving and completing URLs.
+
+ * inspector/Inspector.json:
+ * inspector/InspectorDOMAgent.cpp:
+ (WebCore::documentBaseURLString):
+ (WebCore):
+ (WebCore::InspectorDOMAgent::buildObjectForNode):
+ * inspector/front-end/AuditRules.js:
+ (WebInspector.AuditRules.ImageDimensionsRule.prototype.doRun):
+ (WebInspector.AuditRules.CssInHeadRule.prototype.doRun.externalStylesheetsReceived):
+ (WebInspector.AuditRules.StylesScriptsOrderRule.prototype.doRun.cssBeforeInlineReceived):
+ * inspector/front-end/DOMAgent.js:
+ (WebInspector.DOMNode.prototype.resolveURL):
+ (WebInspector.DOMDocument):
+
2012-09-25 Peter Wang <[email protected]>
Web Inspector: The JS code injected by worker inspector shouldn't be evaluated through JSMainThreadExecState
Modified: trunk/Source/WebCore/inspector/Inspector.json (129476 => 129477)
--- trunk/Source/WebCore/inspector/Inspector.json 2012-09-25 08:39:41 UTC (rev 129476)
+++ trunk/Source/WebCore/inspector/Inspector.json 2012-09-25 09:01:54 UTC (rev 129477)
@@ -1567,6 +1567,7 @@
{ "name": "children", "type": "array", "optional": true, "items": { "$ref": "Node" }, "description": "Child nodes of this node when requested with children." },
{ "name": "attributes", "type": "array", "optional": true, "items": { "type": "string" }, "description": "Attributes of the <code>Element</code> node in the form of flat array <code>[name1, value1, name2, value2]</code>." },
{ "name": "documentURL", "type": "string", "optional": true, "description": "Document URL that <code>Document</code> or <code>FrameOwner</code> node points to." },
+ { "name": "baseURL", "type": "string", "optional": true, "description": "Base URL that <code>Document</code> or <code>FrameOwner</code> node uses for URL completion." },
{ "name": "publicId", "type": "string", "optional": true, "description": "<code>DocumentType</code>'s publicId." },
{ "name": "systemId", "type": "string", "optional": true, "description": "<code>DocumentType</code>'s systemId." },
{ "name": "internalSubset", "type": "string", "optional": true, "description": "<code>DocumentType</code>'s internalSubset." },
Modified: trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp (129476 => 129477)
--- trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp 2012-09-25 08:39:41 UTC (rev 129476)
+++ trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp 2012-09-25 09:01:54 UTC (rev 129477)
@@ -1176,6 +1176,11 @@
return document->url().string();
}
+static String documentBaseURLString(Document* document)
+{
+ return document->completeURL("").string();
+}
+
PassRefPtr<TypeBuilder::DOM::Node> InspectorDOMAgent::buildObjectForNode(Node* node, int depth, NodeToIdMap* nodesMap)
{
int id = bind(node, nodesMap);
@@ -1240,6 +1245,7 @@
} else if (node->isDocumentNode()) {
Document* document = static_cast<Document*>(node);
value->setDocumentURL(documentURLString(document));
+ value->setBaseURL(documentBaseURLString(document));
value->setXmlVersion(document->xmlVersion());
} else if (node->nodeType() == Node::DOCUMENT_TYPE_NODE) {
DocumentType* docType = static_cast<DocumentType*>(node);
Modified: trunk/Source/WebCore/inspector/front-end/AuditRules.js (129476 => 129477)
--- trunk/Source/WebCore/inspector/front-end/AuditRules.js 2012-09-25 08:39:41 UTC (rev 129476)
+++ trunk/Source/WebCore/inspector/front-end/AuditRules.js 2012-09-25 09:01:54 UTC (rev 129477)
@@ -755,8 +755,8 @@
var src = ""
if (!src.asParsedURL()) {
for (var frameOwnerCandidate = node; frameOwnerCandidate; frameOwnerCandidate = frameOwnerCandidate.parentNode) {
- if (frameOwnerCandidate.documentURL) {
- var completeSrc = WebInspector.ParsedURL.completeURL(frameOwnerCandidate.documentURL, src);
+ if (frameOwnerCandidate.baseURL) {
+ var completeSrc = WebInspector.ParsedURL.completeURL(frameOwnerCandidate.baseURL, src);
break;
}
}
@@ -902,7 +902,7 @@
var externalStylesheetHrefs = [];
for (var j = 0; j < externalStylesheetNodeIds.length; ++j) {
var linkNode = WebInspector.domAgent.nodeForId(externalStylesheetNodeIds[j]);
- var completeHref = WebInspector.ParsedURL.completeURL(linkNode.ownerDocument.documentURL, linkNode.getAttribute("href"));
+ var completeHref = WebInspector.ParsedURL.completeURL(linkNode.ownerDocument.baseURL, linkNode.getAttribute("href"));
externalStylesheetHrefs.push(completeHref || "<empty>");
}
urlToViolationsArray[root.documentURL] = [inlineStyleNodeIds.length, externalStylesheetHrefs];
@@ -989,7 +989,7 @@
var lateStyleUrls = [];
for (var i = 0; i < lateStyleIds.length; ++i) {
var lateStyleNode = WebInspector.domAgent.nodeForId(lateStyleIds[i]);
- var completeHref = WebInspector.ParsedURL.completeURL(lateStyleNode.ownerDocument.documentURL, lateStyleNode.getAttribute("href"));
+ var completeHref = WebInspector.ParsedURL.completeURL(lateStyleNode.ownerDocument.baseURL, lateStyleNode.getAttribute("href"));
lateStyleUrls.push(completeHref || "<empty>");
}
result = [ lateStyleUrls, cssBeforeInlineCount ];
Modified: trunk/Source/WebCore/inspector/front-end/DOMAgent.js (129476 => 129477)
--- trunk/Source/WebCore/inspector/front-end/DOMAgent.js 2012-09-25 08:39:41 UTC (rev 129476)
+++ trunk/Source/WebCore/inspector/front-end/DOMAgent.js 2012-09-25 09:01:54 UTC (rev 129477)
@@ -747,8 +747,8 @@
if (!url)
return url;
for (var frameOwnerCandidate = this; frameOwnerCandidate; frameOwnerCandidate = frameOwnerCandidate.parentNode) {
- if (frameOwnerCandidate.documentURL)
- return WebInspector.ParsedURL.completeURL(frameOwnerCandidate.documentURL, url);
+ if (frameOwnerCandidate.baseURL)
+ return WebInspector.ParsedURL.completeURL(frameOwnerCandidate.baseURL, url);
}
return null;
}
@@ -764,6 +764,7 @@
{
WebInspector.DOMNode.call(this, domAgent, this, false, payload);
this.documentURL = payload.documentURL || "";
+ this.baseURL = payload.baseURL;
this.xmlVersion = payload.xmlVersion;
this._listeners = {};
}