<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[210250] trunk</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/210250">210250</a></dd>
<dt>Author</dt> <dd>joepeck@webkit.org</dd>
<dt>Date</dt> <dd>2017-01-03 14:31:22 -0800 (Tue, 03 Jan 2017)</dd>
</dl>
<h3>Log Message</h3>
<pre>Web Inspector: Fix Content Flow Container Regions Computed Style section
https://bugs.webkit.org/show_bug.cgi?id=166294
Reviewed by Brian Burg.
Source/WebInspectorUI:
* UserInterface/Controllers/DOMTreeManager.js:
(WebInspector.DOMTreeManager.prototype._coerceRemoteArrayOfDOMNodes):
(WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.domNodeResolved):
(WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.remoteObjectPropertiesAvailable):
(WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo):
(WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.backendFunction.getComputedProperty): Deleted.
(WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.backendFunction.getContentFlowName): Deleted.
Update this to use Array.from() to convert the NodeList to an Array, and then
use the already available RemoteObject's size property instead of getting the
"length" property from the Array.
LayoutTests:
* inspector/dom/content-flow-list.html:
Update the domTree across navigations. Also dynamically add the flows to
ensure we get the events.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsinspectordomcontentflowlisthtml">trunk/LayoutTests/inspector/dom/content-flow-list.html</a></li>
<li><a href="#trunkSourceWebInspectorUIChangeLog">trunk/Source/WebInspectorUI/ChangeLog</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceControllersDOMTreeManagerjs">trunk/Source/WebInspectorUI/UserInterface/Controllers/DOMTreeManager.js</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (210249 => 210250)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2017-01-03 22:12:27 UTC (rev 210249)
+++ trunk/LayoutTests/ChangeLog        2017-01-03 22:31:22 UTC (rev 210250)
</span><span class="lines">@@ -1,3 +1,14 @@
</span><ins>+2017-01-03 Joseph Pecoraro <pecoraro@apple.com>
+
+ Web Inspector: Fix Content Flow Container Regions Computed Style section
+ https://bugs.webkit.org/show_bug.cgi?id=166294
+
+ Reviewed by Brian Burg.
+
+ * inspector/dom/content-flow-list.html:
+ Update the domTree across navigations. Also dynamically add the flows to
+ ensure we get the events.
+
</ins><span class="cx"> 2017-01-03 Carlos Alberto Lopez Perez <clopez@igalia.com>
</span><span class="cx">
</span><span class="cx"> A floating element within <li> overlaps with the marker
</span></span></pre></div>
<a id="trunkLayoutTestsinspectordomcontentflowlisthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector/dom/content-flow-list.html (210249 => 210250)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/dom/content-flow-list.html        2017-01-03 22:12:27 UTC (rev 210249)
+++ trunk/LayoutTests/inspector/dom/content-flow-list.html        2017-01-03 22:31:22 UTC (rev 210250)
</span><span class="lines">@@ -9,18 +9,24 @@
</span><span class="cx"> </style>
</span><span class="cx"> <script src="../../http/tests/inspector/resources/inspector-test.js"></script>
</span><span class="cx"> <script>
</span><del>-function removeFlow()
-{
</del><ins>+function addFlow() {
+ let div = document.createElement("div");
+ div.id = "flow1";
+ document.body.appendChild(div);
+}
+
+function removeFlow() {
</ins><span class="cx"> document.getElementById("flow1").remove();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> function test()
</span><span class="cx"> {
</span><del>- let domTree = WebInspector.frameResourceManager.mainFrame.domTree;
</del><ins>+ let domTree;
</ins><span class="cx">
</span><span class="cx"> function onRootDOMNodeInvalidated()
</span><span class="cx"> {
</span><span class="cx"> domTree.requestContentFlowList();
</span><ins>+ InspectorTest.evaluateInPage("addFlow()");
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> function onContentFlowWasAdded(event)
</span><span class="lines">@@ -27,7 +33,6 @@
</span><span class="cx"> {
</span><span class="cx"> InspectorTest.expectEqual(event.data.flow.name, "flow1", "ContentFlow was added");
</span><span class="cx"> InspectorTest.expectEqual(domTree.contentFlowCollection.items.size, 1, "Flow count is 1");
</span><del>-
</del><span class="cx"> InspectorTest.evaluateInPage("removeFlow()");
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -39,6 +44,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange, function() {
</span><ins>+ domTree = WebInspector.frameResourceManager.mainFrame.domTree;
</ins><span class="cx"> domTree.addEventListener(WebInspector.DOMTree.Event.RootDOMNodeInvalidated, onRootDOMNodeInvalidated);
</span><span class="cx"> domTree.addEventListener(WebInspector.DOMTree.Event.ContentFlowWasAdded, onContentFlowWasAdded);
</span><span class="cx"> domTree.addEventListener(WebInspector.DOMTree.Event.ContentFlowWasRemoved, onContentFlowWasRemoved);
</span><span class="lines">@@ -50,8 +56,6 @@
</span><span class="cx"> </script>
</span><span class="cx"> </head>
</span><span class="cx"> <body onload="runTest()">
</span><del>- <p>Testing that the ContentFlows events are correctly dispatched when new flows are created/removed.</p>
-
- <div id="flow1"></div>
</del><ins>+<p>Testing that the ContentFlows events are correctly dispatched when new flows are created/removed.</p>
</ins><span class="cx"> </body>
</span><span class="cx"> </html>
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/ChangeLog (210249 => 210250)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/ChangeLog        2017-01-03 22:12:27 UTC (rev 210249)
+++ trunk/Source/WebInspectorUI/ChangeLog        2017-01-03 22:31:22 UTC (rev 210250)
</span><span class="lines">@@ -1,3 +1,21 @@
</span><ins>+2017-01-03 Joseph Pecoraro <pecoraro@apple.com>
+
+ Web Inspector: Fix Content Flow Container Regions Computed Style section
+ https://bugs.webkit.org/show_bug.cgi?id=166294
+
+ Reviewed by Brian Burg.
+
+ * UserInterface/Controllers/DOMTreeManager.js:
+ (WebInspector.DOMTreeManager.prototype._coerceRemoteArrayOfDOMNodes):
+ (WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.domNodeResolved):
+ (WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.remoteObjectPropertiesAvailable):
+ (WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo):
+ (WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.backendFunction.getComputedProperty): Deleted.
+ (WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.backendFunction.getContentFlowName): Deleted.
+ Update this to use Array.from() to convert the NodeList to an Array, and then
+ use the already available RemoteObject's size property instead of getting the
+ "length" property from the Array.
+
</ins><span class="cx"> 2017-01-03 Brian Burg <bburg@apple.com>
</span><span class="cx">
</span><span class="cx"> Web Inspector: opening Test.html in a normal browser window doesn't log errors to console
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceControllersDOMTreeManagerjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Controllers/DOMTreeManager.js (210249 => 210250)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Controllers/DOMTreeManager.js        2017-01-03 22:12:27 UTC (rev 210249)
+++ trunk/Source/WebInspectorUI/UserInterface/Controllers/DOMTreeManager.js        2017-01-03 22:31:22 UTC (rev 210250)
</span><span class="lines">@@ -248,7 +248,7 @@
</span><span class="cx"> this._unbind(node);
</span><span class="cx"> this.dispatchEventToListeners(WebInspector.DOMTreeManager.Event.NodeRemoved, {node, parent});
</span><span class="cx"> }
</span><del>-
</del><ins>+
</ins><span class="cx"> _customElementStateChanged(elementId, newState)
</span><span class="cx"> {
</span><span class="cx"> const node = this._idToDOMNode[elementId];
</span><span class="lines">@@ -605,10 +605,22 @@
</span><span class="cx"> flow.removeContentNode(this.nodeForId(contentNodeId));
</span><span class="cx"> }
</span><span class="cx">
</span><del>- _coerceRemoteArrayOfDOMNodes(objectId, callback)
</del><ins>+ _coerceRemoteArrayOfDOMNodes(remoteObject, callback)
</ins><span class="cx"> {
</span><del>- var length, nodes, received = 0, lastError = null, domTreeManager = this;
</del><ins>+ console.assert(remoteObject.type === "object");
+ console.assert(remoteObject.subtype === "array");
</ins><span class="cx">
</span><ins>+ let length = remoteObject.size;
+ if (!length) {
+ callback(null, []);
+ return;
+ }
+
+ let nodes;
+ let received = 0;
+ let lastError = null;
+ let domTreeManager = this;
+
</ins><span class="cx"> function nodeRequested(index, error, nodeId)
</span><span class="cx"> {
</span><span class="cx"> if (error)
</span><span class="lines">@@ -619,28 +631,17 @@
</span><span class="cx"> callback(lastError, nodes);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- WebInspector.runtimeManager.getPropertiesForRemoteObject(objectId, function(error, properties) {
</del><ins>+ WebInspector.runtimeManager.getPropertiesForRemoteObject(remoteObject.objectId, function(error, properties) {
</ins><span class="cx"> if (error) {
</span><span class="cx"> callback(error);
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- var lengthProperty = properties.get("length");
- if (!lengthProperty || lengthProperty.value.type !== "number") {
- callback(null);
- return;
- }
-
- length = lengthProperty.value.value;
- if (!length) {
- callback(null, []);
- return;
- }
-
</del><span class="cx"> nodes = new Array(length);
</span><del>- for (var i = 0; i < length; ++i) {
- var nodeProperty = properties.get(String(i));
</del><ins>+ for (let i = 0; i < length; ++i) {
+ let nodeProperty = properties.get(String(i));
</ins><span class="cx"> console.assert(nodeProperty.value.type === "object");
</span><ins>+ console.assert(nodeProperty.value.subtype === "node");
</ins><span class="cx"> DOMAgent.requestNode(nodeProperty.value.objectId, nodeRequested.bind(null, i));
</span><span class="cx"> }
</span><span class="cx"> });
</span><span class="lines">@@ -656,11 +657,10 @@
</span><span class="cx"> resultReadyCallback(error);
</span><span class="cx"> return;
</span><span class="cx"> }
</span><del>- // Serialize "backendFunction" and execute it in the context of the page
- // passing the DOMNode as the "this" reference.
</del><ins>+
</ins><span class="cx"> var evalParameters = {
</span><span class="cx"> objectId: remoteObject.objectId,
</span><del>- functionDeclaration: appendWebInspectorSourceURL(backendFunction.toString()),
</del><ins>+ functionDeclaration: appendWebInspectorSourceURL(inspectedPage_node_getFlowInfo.toString()),
</ins><span class="cx"> doNotPauseOnExceptionsAndMuteConsole: true,
</span><span class="cx"> returnByValue: false,
</span><span class="cx"> generatePreview: false
</span><span class="lines">@@ -721,16 +721,13 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- console.assert(regionsProperty.value.type === "object");
- console.assert(regionsProperty.value.subtype === "array");
- this._coerceRemoteArrayOfDOMNodes(regionsProperty.value.objectId, function(error, nodes) {
</del><ins>+ this._coerceRemoteArrayOfDOMNodes(regionsProperty.value, function(error, nodes) {
</ins><span class="cx"> result.regions = nodes;
</span><span class="cx"> resultReadyCallback(error, result);
</span><span class="cx"> });
</span><span class="cx"> }
</span><span class="cx">
</span><del>- // Note that "backendFunction" is serialized and executed in the context of the page.
- function backendFunction()
</del><ins>+ function inspectedPage_node_getFlowInfo()
</ins><span class="cx"> {
</span><span class="cx"> function getComputedProperty(node, propertyName)
</span><span class="cx"> {
</span><span class="lines">@@ -764,7 +761,7 @@
</span><span class="cx"> if (result.contentFlowName) {
</span><span class="cx"> var flowThread = node.ownerDocument.webkitGetNamedFlows().namedItem(result.contentFlowName);
</span><span class="cx"> if (flowThread)
</span><del>- result.regions = flowThread.getRegionsByContent(node);
</del><ins>+ result.regions = Array.from(flowThread.getRegionsByContent(node));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> return result;
</span></span></pre>
</div>
</div>
</body>
</html>