Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(105)

Unified Diff: third_party/WebKit/Source/core/inspector/InspectorCSSAgent.cpp

Issue 2455613002: Fix index used to join results of DOM.getDocument and CSS.getLayoutTreeAndStyles (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/inspector/InspectorCSSAgent.cpp
diff --git a/third_party/WebKit/Source/core/inspector/InspectorCSSAgent.cpp b/third_party/WebKit/Source/core/inspector/InspectorCSSAgent.cpp
index c02151fa90407b36ee8d2c2c3a97e1f41638a982..c61f5800baf916ec85bda88ba6fee43923337ed6 100644
--- a/third_party/WebKit/Source/core/inspector/InspectorCSSAgent.cpp
+++ b/third_party/WebKit/Source/core/inspector/InspectorCSSAgent.cpp
@@ -2375,8 +2375,13 @@ int InspectorCSSAgent::getStyleIndexForNode(
CSSComputedStyleDeclaration::create(node, true);
Vector<String> style;
+ // WTF::HashMap refuses to allow you to insert an empty vector :(
+ style.append("dummy value");
Sami 2016/10/26 17:15:23 Would it be hard to fix this in WTF::HashMap? (I w
dgozman 2016/10/26 17:24:39 There should be a possibility with some magic bool
alex clarke (OOO till 29th) 2016/10/26 21:18:49 Possibly, I'm not sure how though. Honestly WTF::
for (const auto& pair : cssPropertyWhitelist) {
- style.append(computedStyleInfo->getPropertyValue(pair.second));
+ String value = computedStyleInfo->getPropertyValue(pair.second);
+ if (value.isEmpty())
+ continue;
dgozman 2016/10/26 17:24:39 If you skip values in resulting array, how does cl
alex clarke (OOO till 29th) 2016/10/26 21:18:49 We send the key as well as the value, see: styleP
+ style.append(value);
}
ComputedStylesMap::iterator it = styleToIndexMap.find(style);
@@ -2387,9 +2392,10 @@ int InspectorCSSAgent::getStyleIndexForNode(
std::unique_ptr<protocol::Array<protocol::CSS::CSSComputedStyleProperty>>
styleProperties =
protocol::Array<protocol::CSS::CSSComputedStyleProperty>::create();
- for (size_t i = 0; i < style.size(); i++) {
+ // Skip the dummy value...
+ for (size_t i = 1; i < style.size(); i++) {
styleProperties->addItem(protocol::CSS::CSSComputedStyleProperty::create()
- .setName(cssPropertyWhitelist[i].first)
+ .setName(cssPropertyWhitelist[i - 1].first)
.setValue(style[i])
.build());
}
@@ -2434,10 +2440,12 @@ void InspectorCSSAgent::visitLayoutTreeNodes(
if (!layoutObject)
continue;
- int backendNodeId = DOMNodeIds::idForNode(node);
+ int nodeId = m_domAgent->boundNodeId(node);
dgozman 2016/10/26 17:24:39 This requires the node to be already pushed to the
alex clarke (OOO till 29th) 2016/10/26 21:18:49 What I want to do is join the results of DOM.getDo
+ if (!nodeId)
+ continue;
std::unique_ptr<protocol::CSS::LayoutTreeNode> layoutTreeNode =
protocol::CSS::LayoutTreeNode::create()
- .setBackendNodeId(backendNodeId)
+ .setNodeId(nodeId)
.setStyleIndex(getStyleIndexForNode(
node, cssPropertyWhitelist, styleToIndexMap, computedStyles))
.setBoundingBox(buildRectForFloatRect(

Powered by Google App Engine
This is Rietveld 408576698