Changeset 50574 in webkit
- Timestamp:
- Nov 5, 2009 12:13:29 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r50573 r50574 1 i2009-11-05 Pavel Feldman <pfeldman@chromium.org> 2 3 Reviewed by Timothy Hatcher. 4 5 REGRESSION: Web Inspector doesn't show CSS rules properly for iframes 6 7 https://bugs.webkit.org/show_bug.cgi?id=30884 8 9 * inspector/console-dir.html: 10 * inspector/console-dirxml.html: 11 * inspector/console-format-collections-expected.txt: 12 * inspector/console-format-collections.html: 13 * inspector/console-format.html: 14 * inspector/console-tests.html: 15 * inspector/elements-panel-structure-expected.txt: 16 * inspector/elements-panel-structure.html: 17 * inspector/evaluate-in-frontend.js: 18 (): 19 (expandDOMSubtree.processChildren): 20 (expandDOMSubtree): 21 (dumpConsoleMessages): 22 * inspector/resources/styles-iframe-data.html: Added. 23 * inspector/styles-iframe-expected.txt: Added. 24 * inspector/styles-iframe.html: Added. 25 * platform/qt/Skipped: 26 1 27 2009-11-05 Dimitri Glazkov <dglazkov@chromium.org> 2 28 -
trunk/LayoutTests/inspector/console-dir.html
r49762 r50574 13 13 { 14 14 for (var i = 0; i < result.length; ++i) 15 output(result[i] );15 output(result[i].text); 16 16 notifyDone(); 17 17 } 18 evaluateInWebInspector("dump Messages()", callback);18 evaluateInWebInspector("dumpConsoleMessages", callback); 19 19 } 20 20 … … 27 27 </p> 28 28 29 <div id="frontend-script" style="display:none">30 function dumpMessages()31 {32 var result = [];33 var messages = WebInspector.console.messages;34 for (var i = 0; i < messages.length; ++i)35 result.push(messages[i].toMessageElement().textContent.replace(/\u200b/g, ""));36 return result;37 }38 </div>39 40 29 <div id="output"> 41 30 </div> -
trunk/LayoutTests/inspector/console-dirxml.html
r49762 r50574 11 11 { 12 12 for (var i = 0; i < result.length; ++i) 13 output(result[i] );13 output(result[i].text); 14 14 notifyDone(); 15 15 } 16 evaluateInWebInspector("dump Messages()", callback);16 evaluateInWebInspector("dumpConsoleMessages", callback); 17 17 } 18 18 … … 25 25 </p> 26 26 27 <div id="frontend-script" style="display:none">28 function dumpMessages()29 {30 var result = [];31 var messages = WebInspector.console.messages;32 for (var i = 0; i < messages.length; ++i)33 result.push(messages[i].toMessageElement().textContent.replace(/\u200b/g, ""));34 return result;35 }36 </div>37 38 27 <div id="output"> 39 28 </div> -
trunk/LayoutTests/inspector/console-format-collections-expected.txt
r50168 r50574 10 10 console-format-collections.html:18[<script src="evaluate-in-frontend.js">, <script>] 11 11 console-format-collections.html:22[<option value="1">one</option>, <option value="2">two</option>] 12 console-format-collections.html:26[<html>, <head>, <script src="evaluate-in-frontend.js">, <script>, <body onload="onload()">, <p> Tests that console nicely formats HTML Collections and NodeLists. </p>, <div style="display:none">, <form id="f">, <select id="sel" name="sel">, <option value="1">one</option>, <option value="2">two</option>, <input type="radio" name="x" value="x1">, <input type="radio" name="x" value="x2">, <div id=" frontend-script" style="display:none">, <div id="output">]12 console-format-collections.html:26[<html>, <head>, <script src="evaluate-in-frontend.js">, <script>, <body onload="onload()">, <p> Tests that console nicely formats HTML Collections and NodeLists. </p>, <div style="display:none">, <form id="f">, <select id="sel" name="sel">, <option value="1">one</option>, <option value="2">two</option>, <input type="radio" name="x" value="x1">, <input type="radio" name="x" value="x2">, <div id="output">] 13 13 console-format-collections.html:30[<select id="sel" name="sel">, <input type="radio" name="x" value="x1">, <input type="radio" name="x" value="x2">] 14 14 console-format-collections.html:34[<input type="radio" name="x" value="x1">, <input type="radio" name="x" value="x2">] -
trunk/LayoutTests/inspector/console-format-collections.html
r50199 r50574 34 34 console.log(radioNodeList); 35 35 36 evaluateInWebInspector("dump Messages", function(result) {36 evaluateInWebInspector("dumpConsoleMessages", function(result) { 37 37 for (var i = 0; i < result.length; ++i) 38 output(result[i] );38 output(result[i].text); 39 39 notifyDone(); 40 40 }); … … 59 59 </div> 60 60 61 <div id="frontend-script" style="display:none">62 function dumpMessages(testController)63 {64 testController.waitUntilDone();65 testController.runAfterPendingDispatches(function() {66 var result = [];67 var messages = WebInspector.console.messages;68 for (var i = 0; i < messages.length; ++i)69 result.push(messages[i].toMessageElement().textContent.replace(/\u200b/g, ""));70 testController.notifyDone(result);71 });72 }73 </div>74 75 61 <div id="output"> 76 62 </div> -
trunk/LayoutTests/inspector/console-format.html
r49762 r50574 18 18 { 19 19 for (var i = 0; i < result.length; ++i) 20 output(result[i] );20 output(result[i].text); 21 21 notifyDone(); 22 22 } 23 evaluateInWebInspector("dump Messages", callback);23 evaluateInWebInspector("dumpConsoleMessages", callback); 24 24 } 25 25 … … 32 32 </p> 33 33 34 <div id="frontend-script" style="display:none">35 function dumpMessages(testController)36 {37 // Array formatting is deferred due to the async InjectedScriptAccess.getProperties call.38 // Queue message log dump in order to see proper result.39 testController.waitUntilDone();40 setTimeout(function() {41 var result = [];42 var messages = WebInspector.console.messages;43 for (var i = 0; i < messages.length; ++i)44 result.push(messages[i].toMessageElement().textContent);45 testController.notifyDone(result);46 }, 0);47 }48 </div>49 50 34 <div id="output"> 51 35 </div> -
trunk/LayoutTests/inspector/console-tests.html
r49762 r50574 26 26 notifyDone(); 27 27 } 28 evaluateInWebInspector("dump Messages()", callback);28 evaluateInWebInspector("dumpConsoleMessages", callback); 29 29 } 30 30 … … 37 37 </p> 38 38 39 <div id="frontend-script" style="display:none">40 function dumpMessages()41 {42 var result = [];43 var messages = WebInspector.console.messages;44 for (var i = 0; i < messages.length; ++i) {45 var element = messages[i].toMessageElement();46 result.push({ text: element.textContent.replace(/\u200b/g, ""), clazz: element.getAttribute("class")});47 }48 return result;49 }50 </div>51 52 39 <div id="output"> 53 40 </div> -
trunk/LayoutTests/inspector/elements-panel-structure-expected.txt
r49629 r50574 5 5 <head> 6 6 <body onload="onload()"> 7 <p>Tests that elements panel shows dom tree structure. 8 </p> 9 <div id="frontend-script" style="display:none"> 10 <pre id="output"> 11 </body> 7 12 </html> -
trunk/LayoutTests/inspector/elements-panel-structure.html
r49629 r50574 9 9 { 10 10 var output = document.getElementById("output"); 11 output.textContent = result.replace(/\u200b/g, "").replace(/\n/g, "").replace(/< p>.*<\/body>/g, "").replace(/</g, "\n<");11 output.textContent = result.replace(/\u200b/g, "").replace(/\n/g, "").replace(/</g, "\n<"); 12 12 notifyDone(); 13 13 } 14 evaluateInWebInspector(" WebInspector.panels.elements.treeOutline.element.textContent", callback);14 evaluateInWebInspector("dumpElements", callback); 15 15 } 16 16 … … 24 24 25 25 <div id="frontend-script" style="display:none"> 26 function dumpElements(testController) 27 { 28 testController.waitUntilDone(); 29 expandDOMSubtree(WebInspector.domAgent.document); 30 testController.runAfterPendingDispatches(function() { 31 testController.notifyDone(WebInspector.panels.elements.treeOutline.element.textContent); 32 }); 33 } 26 34 </div> 27 35 -
trunk/LayoutTests/inspector/evaluate-in-frontend.js
r50168 r50574 22 22 if (ignoreLoad) 23 23 return; 24 var callId = lastCallId++; 25 setTimeout(function() { 26 if (window.layoutTestController) 27 layoutTestController.evaluateInWebInspector(callId, document.getElementById("frontend-script").textContent); 28 doit(); 29 }, 0); 24 25 var toInject = expandDOMSubtree.toString() + "\n" + dumpConsoleMessages.toString(); 26 if (document.getElementById("frontend-script")) 27 toInject += "\n" + document.getElementById("frontend-script").textContent; 28 evaluateInWebInspector(toInject, doit); 30 29 31 30 // Make sure web inspector window is closed before the test is interrupted. … … 73 72 } 74 73 }; 74 75 // Injected utility functions. 76 77 function expandDOMSubtree(node) 78 { 79 function processChildren(children) 80 { 81 for (var i = 0; children && i < children.length; ++i) 82 expandDOMSubtree(children[i]); 83 } 84 WebInspector.domAgent.getChildNodesAsync(node, processChildren); 85 } 86 87 function dumpConsoleMessages() 88 { 89 var result = []; 90 var messages = WebInspector.console.messages; 91 for (var i = 0; i < messages.length; ++i) { 92 var element = messages[i].toMessageElement(); 93 result.push({ text: element.textContent.replace(/\u200b/g, ""), clazz: element.getAttribute("class")}); 94 } 95 return result; 96 } -
trunk/LayoutTests/platform/qt/Skipped
r50511 r50574 119 119 inspector/css-syntax-highlight.html 120 120 inspector/javascript-syntax-highlight.html 121 inspector/styles-iframe.html 121 122 inspector/timeline-trivial.html 122 123 inspector/uncaught-dom1-exception.html -
trunk/WebCore/ChangeLog
r50573 r50574 1 2009-11-05 Pavel Feldman <pfeldman@chromium.org> 2 3 Reviewed by Timothy Hatcher. 4 5 REGRESSION: Web Inspector doesn't show CSS rules properly for iframes 6 7 https://bugs.webkit.org/show_bug.cgi?id=30884 8 9 Test: inspector/styles-iframe.html 10 11 * inspector/front-end/DOMAgent.js: 12 (WebInspector.DOMNode): 13 * inspector/front-end/InjectedScript.js: 14 (InjectedScript.getStyles): 15 (InjectedScript.getComputedStyle): 16 (InjectedScript.addStyleSelector): 17 * inspector/front-end/TestController.js: 18 (WebInspector.TestController.prototype.notifyDone): 19 (WebInspector.TestController.prototype.runAfterPendingDispatches): 20 (WebInspector.evaluateForTestInFrontend.invokeMethod): 21 (WebInspector.evaluateForTestInFrontend): 22 1 23 2009-11-05 Vitaly Repeshko <vitalyr@chromium.org> 2 24 -
trunk/WebCore/inspector/InspectorController.cpp
r50515 r50574 771 771 // resources are cleared so that it has a chance to unbind them. 772 772 resetScriptObjects(); 773 773 774 #if ENABLE(DATABASE) 774 775 m_databaseResources.clear(); -
trunk/WebCore/inspector/front-end/DOMAgent.js
r49263 r50574 62 62 63 63 if (this.nodeType == Node.ELEMENT_NODE) { 64 if (this.nodeName == "HTML") 64 // HTML and BODY from internal iframes should not overwrite top-level ones. 65 if (!this.ownerDocument.documentElement && this.nodeName === "HTML") 65 66 this.ownerDocument.documentElement = this; 66 if ( this.nodeName== "BODY")67 if (!this.ownerDocument.body && this.nodeName === "BODY") 67 68 this.ownerDocument.body = this; 68 69 } -
trunk/WebCore/inspector/front-end/InjectedScript.js
r50453 r50574 60 60 if (!node) 61 61 return false; 62 var matchedRules = InjectedScript._window().getMatchedCSSRules(node, "", authorOnly); 62 var defaultView = node.ownerDocument.defaultView; 63 var matchedRules = defaultView.getMatchedCSSRules(node, "", authorOnly); 63 64 var matchedCSSRules = []; 64 65 for (var i = 0; matchedRules && i < matchedRules.length; ++i) … … 73 74 var result = {}; 74 75 result.inlineStyle = InjectedScript._serializeStyle(node.style, true); 75 result.computedStyle = InjectedScript._serializeStyle( InjectedScript._window().getComputedStyle(node));76 result.computedStyle = InjectedScript._serializeStyle(defaultView.getComputedStyle(node)); 76 77 result.matchedCSSRules = matchedCSSRules; 77 78 result.styleAttributes = styleAttributes; … … 84 85 if (!node) 85 86 return false; 86 return InjectedScript._serializeStyle( InjectedScript._window().getComputedStyle(node));87 return InjectedScript._serializeStyle(node.ownerDocument.defaultView.getComputedStyle(node)); 87 88 } 88 89 … … 231 232 InjectedScript.addStyleSelector = function(newContent, selectedNodeId) 232 233 { 233 var stylesheet = InjectedScript.stylesheet; 234 var selectedNode = InjectedScript._nodeForId(selectedNodeId); 235 if (!selectedNode) 236 return false; 237 var ownerDocument = selectedNode.ownerDocument; 238 239 var stylesheet = ownerDocument.__stylesheet; 234 240 if (!stylesheet) { 235 var inspectedDocument = InjectedScript._window().document; 236 var head = inspectedDocument.getElementsByTagName("head")[0]; 237 var styleElement = inspectedDocument.createElement("style"); 241 var head = ownerDocument.getElementsByTagName("head")[0]; 242 var styleElement = ownerDocument.createElement("style"); 238 243 styleElement.type = "text/css"; 239 244 head.appendChild(styleElement); 240 stylesheet = inspectedDocument.styleSheets[inspectedDocument.styleSheets.length - 1];241 InjectedScript.stylesheet = stylesheet;245 stylesheet = ownerDocument.styleSheets[ownerDocument.styleSheets.length - 1]; 246 ownerDocument.__stylesheet = stylesheet; 242 247 } 243 248 … … 249 254 } 250 255 251 var selectedNode = InjectedScript._nodeForId(selectedNodeId);252 256 var rule = stylesheet.cssRules[stylesheet.cssRules.length - 1]; 253 257 rule.__isViaInspector = true; -
trunk/WebCore/inspector/front-end/TestController.js
r50199 r50574 43 43 notifyDone: function(result) 44 44 { 45 var message = typeof result === "undefined" ? " <undefined>" : JSON.stringify(result);45 var message = typeof result === "undefined" ? "\"<undefined>\"" : JSON.stringify(result); 46 46 InspectorController.didEvaluateForTestInFrontend(this._callId, message); 47 47 }, … … 53 53 return; 54 54 } 55 56 55 setTimeout(this.runAfterPendingDispatches.bind(this), 0, callback); 57 56 } … … 61 60 { 62 61 var controller = new WebInspector.TestController(callId); 63 try { 64 var result; 65 if (window[script] && typeof window[script] === "function") 66 result = window[script].call(this, controller); 67 else 68 result = window.eval(script); 62 function invokeMethod() 63 { 64 try { 65 var result; 66 if (window[script] && typeof window[script] === "function") 67 result = window[script].call(WebInspector, controller); 68 else 69 result = window.eval(script); 69 70 70 if (!controller._waitUntilDone) 71 controller.notifyDone(result); 72 } catch (e) { 73 controller.notifyDone(e.toString()); 71 if (!controller._waitUntilDone) 72 controller.notifyDone(result); 73 } catch (e) { 74 controller.notifyDone(e.toString()); 75 } 74 76 } 77 controller.runAfterPendingDispatches(invokeMethod); 75 78 }
Note: See TracChangeset
for help on using the changeset viewer.