Title: [129477] trunk
Revision
129477
Author
[email protected]
Date
2012-09-25 02:01:54 -0700 (Tue, 25 Sep 2012)

Log Message

Web Inspector: Relative URL Link Tooltips do not respect <base>
https://bugs.webkit.org/show_bug.cgi?id=43434

Reviewed by Pavel Feldman.

Source/WebCore:

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):

LayoutTests:

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.

Modified Paths

Added Paths

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 = {};
 }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to