Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2011 Google Inc. All rights reserved. | 3 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 4 * Copyright (C) 2009 Joseph Pecoraro | 4 * Copyright (C) 2009 Joseph Pecoraro |
| 5 * | 5 * |
| 6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
| 7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
| 8 * are met: | 8 * are met: |
| 9 * | 9 * |
| 10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
| (...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 310 : InspectorBaseAgent<InspectorDOMAgent, InspectorFrontend::DOM>("DOM") | 310 : InspectorBaseAgent<InspectorDOMAgent, InspectorFrontend::DOM>("DOM") |
| 311 , m_pageAgent(pageAgent) | 311 , m_pageAgent(pageAgent) |
| 312 , m_injectedScriptManager(injectedScriptManager) | 312 , m_injectedScriptManager(injectedScriptManager) |
| 313 , m_overlay(overlay) | 313 , m_overlay(overlay) |
| 314 , m_domListener(nullptr) | 314 , m_domListener(nullptr) |
| 315 , m_documentNodeToIdMap(adoptPtrWillBeNoop(new NodeToIdMap())) | 315 , m_documentNodeToIdMap(adoptPtrWillBeNoop(new NodeToIdMap())) |
| 316 , m_lastNodeId(1) | 316 , m_lastNodeId(1) |
| 317 , m_searchingForNode(NotSearching) | 317 , m_searchingForNode(NotSearching) |
| 318 , m_suppressAttributeModifiedEvent(false) | 318 , m_suppressAttributeModifiedEvent(false) |
| 319 , m_backendNodeIdToInspect(0) | 319 , m_backendNodeIdToInspect(0) |
| 320 , m_layoutEditorEnabled(false) | |
| 320 { | 321 { |
| 321 } | 322 } |
| 322 | 323 |
| 323 InspectorDOMAgent::~InspectorDOMAgent() | 324 InspectorDOMAgent::~InspectorDOMAgent() |
| 324 { | 325 { |
| 325 #if !ENABLE(OILPAN) | 326 #if !ENABLE(OILPAN) |
| 326 setDocument(nullptr); | 327 setDocument(nullptr); |
| 327 ASSERT(m_searchingForNode == NotSearching); | 328 ASSERT(m_searchingForNode == NotSearching); |
| 328 #endif | 329 #endif |
| 329 } | 330 } |
| (...skipping 790 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1120 nodeIds->addItem(pushNodePathToFrontend((it->value)[i].get())); | 1121 nodeIds->addItem(pushNodePathToFrontend((it->value)[i].get())); |
| 1121 } | 1122 } |
| 1122 | 1123 |
| 1123 void InspectorDOMAgent::discardSearchResults(ErrorString*, const String& searchI d) | 1124 void InspectorDOMAgent::discardSearchResults(ErrorString*, const String& searchI d) |
| 1124 { | 1125 { |
| 1125 m_searchResults.remove(searchId); | 1126 m_searchResults.remove(searchId); |
| 1126 } | 1127 } |
| 1127 | 1128 |
| 1128 bool InspectorDOMAgent::handleMousePress() | 1129 bool InspectorDOMAgent::handleMousePress() |
| 1129 { | 1130 { |
| 1130 if (m_searchingForNode == NotSearching) | 1131 if (m_searchingForNode == NotSearching || (m_searchingForNode == SearchingIn LayoutEditor && m_layoutEditorEnabled)) |
| 1131 return false; | 1132 return false; |
| 1132 | 1133 |
| 1133 if (m_hoveredNodeForInspectMode) { | 1134 if (m_hoveredNodeForInspectMode) { |
| 1134 inspect(m_hoveredNodeForInspectMode.get()); | 1135 inspect(m_hoveredNodeForInspectMode.get()); |
| 1135 m_hoveredNodeForInspectMode.clear(); | 1136 m_hoveredNodeForInspectMode.clear(); |
| 1136 return true; | 1137 return true; |
| 1137 } | 1138 } |
| 1138 return false; | 1139 return false; |
| 1139 } | 1140 } |
| 1140 | 1141 |
| 1141 bool InspectorDOMAgent::handleGestureEvent(LocalFrame* frame, const PlatformGest ureEvent& event) | 1142 bool InspectorDOMAgent::handleGestureEvent(LocalFrame* frame, const PlatformGest ureEvent& event) |
| 1142 { | 1143 { |
| 1143 if (m_searchingForNode == NotSearching || event.type() != PlatformEvent::Ges tureTap) | 1144 if (m_searchingForNode == NotSearching || event.type() != PlatformEvent::Ges tureTap || (m_searchingForNode == SearchingInLayoutEditor && m_layoutEditorEnabl ed)) |
| 1144 return false; | 1145 return false; |
| 1145 Node* node = hoveredNodeForEvent(frame, event, false); | 1146 Node* node = hoveredNodeForEvent(frame, event, false); |
| 1146 if (node && m_inspectModeHighlightConfig) { | 1147 if (node && m_inspectModeHighlightConfig) { |
| 1147 m_overlay->highlightNode(node, 0 /* eventTarget */, *m_inspectModeHighli ghtConfig, false); | 1148 m_overlay->highlightNode(node, 0 /* eventTarget */, *m_inspectModeHighli ghtConfig, false); |
| 1148 inspect(node); | 1149 inspect(node); |
| 1149 return true; | 1150 return true; |
| 1150 } | 1151 } |
| 1151 return false; | 1152 return false; |
| 1152 } | 1153 } |
| 1153 | 1154 |
| 1154 bool InspectorDOMAgent::handleTouchEvent(LocalFrame* frame, const PlatformTouchE vent& event) | 1155 bool InspectorDOMAgent::handleTouchEvent(LocalFrame* frame, const PlatformTouchE vent& event) |
| 1155 { | 1156 { |
| 1156 if (m_searchingForNode == NotSearching) | 1157 if (m_searchingForNode == NotSearching || (m_searchingForNode == SearchingIn LayoutEditor && m_layoutEditorEnabled)) |
|
pfeldman
2015/08/25 21:25:29
extract method please
sergeyv
2015/08/26 02:25:49
Done.
| |
| 1157 return false; | 1158 return false; |
| 1158 Node* node = hoveredNodeForEvent(frame, event, false); | 1159 Node* node = hoveredNodeForEvent(frame, event, false); |
| 1159 if (node && m_inspectModeHighlightConfig) { | 1160 if (node && m_inspectModeHighlightConfig) { |
| 1160 m_overlay->highlightNode(node, 0 /* eventTarget */, *m_inspectModeHighli ghtConfig, false); | 1161 m_overlay->highlightNode(node, 0 /* eventTarget */, *m_inspectModeHighli ghtConfig, false); |
| 1161 inspect(node); | 1162 inspect(node); |
| 1162 return true; | 1163 return true; |
| 1163 } | 1164 } |
| 1164 return false; | 1165 return false; |
| 1165 } | 1166 } |
| 1166 | 1167 |
| 1167 void InspectorDOMAgent::inspect(Node* inspectedNode) | 1168 void InspectorDOMAgent::inspect(Node* inspectedNode) |
| 1168 { | 1169 { |
| 1169 if (!inspectedNode) | 1170 if (!inspectedNode) |
| 1170 return; | 1171 return; |
| 1171 | 1172 |
| 1172 Node* node = inspectedNode; | 1173 Node* node = inspectedNode; |
| 1173 while (node && !node->isElementNode() && !node->isDocumentNode() && !node->i sDocumentFragment()) | 1174 while (node && !node->isElementNode() && !node->isDocumentNode() && !node->i sDocumentFragment()) |
| 1174 node = node->parentOrShadowHostNode(); | 1175 node = node->parentOrShadowHostNode(); |
| 1175 if (!node) | 1176 if (!node) |
| 1176 return; | 1177 return; |
| 1177 | 1178 |
| 1178 int backendNodeId = DOMNodeIds::idForNode(node); | 1179 int backendNodeId = DOMNodeIds::idForNode(node); |
| 1179 if (!frontend() || !enabled()) { | 1180 if (!frontend() || !enabled()) { |
| 1180 m_backendNodeIdToInspect = backendNodeId; | 1181 m_backendNodeIdToInspect = backendNodeId; |
| 1181 return; | 1182 return; |
| 1182 } | 1183 } |
| 1183 | 1184 |
| 1184 frontend()->inspectNodeRequested(backendNodeId); | 1185 frontend()->inspectNodeRequested(backendNodeId); |
| 1186 | |
| 1187 if (m_searchingForNode == SearchingInLayoutEditor) { | |
| 1188 m_layoutEditorEnabled = true; | |
| 1189 m_overlay->setInspectModeEnabled(false); | |
| 1190 m_overlay->showLayoutEditorForNode(node, *m_inspectModeHighlightConfig.g et()); | |
| 1191 } | |
| 1185 } | 1192 } |
| 1186 | 1193 |
| 1187 bool InspectorDOMAgent::handleMouseMove(LocalFrame* frame, const PlatformMouseEv ent& event) | 1194 bool InspectorDOMAgent::handleMouseMove(LocalFrame* frame, const PlatformMouseEv ent& event) |
| 1188 { | 1195 { |
| 1189 if (m_searchingForNode == NotSearching) | 1196 if (m_searchingForNode == NotSearching || (m_searchingForNode == SearchingIn LayoutEditor && m_layoutEditorEnabled)) |
| 1190 return false; | 1197 return false; |
| 1191 | 1198 |
| 1192 if (!frame->view() || !frame->contentLayoutObject()) | 1199 if (!frame->view() || !frame->contentLayoutObject()) |
| 1193 return true; | 1200 return true; |
| 1194 Node* node = hoveredNodeForEvent(frame, event, event.shiftKey()); | 1201 Node* node = hoveredNodeForEvent(frame, event, event.shiftKey()); |
| 1195 | 1202 |
| 1196 // Do not highlight within user agent shadow root unless requested. | 1203 // Do not highlight within user agent shadow root unless requested. |
| 1197 if (m_searchingForNode != SearchingForUAShadow) { | 1204 if (m_searchingForNode != SearchingForUAShadow) { |
| 1198 ShadowRoot* shadowRoot = userAgentShadowRoot(node); | 1205 ShadowRoot* shadowRoot = userAgentShadowRoot(node); |
| 1199 if (shadowRoot) | 1206 if (shadowRoot) |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 1220 | 1227 |
| 1221 void InspectorDOMAgent::setSearchingForNode(ErrorString* errorString, SearchMode searchMode, JSONObject* highlightInspectorObject) | 1228 void InspectorDOMAgent::setSearchingForNode(ErrorString* errorString, SearchMode searchMode, JSONObject* highlightInspectorObject) |
| 1222 { | 1229 { |
| 1223 m_searchingForNode = searchMode; | 1230 m_searchingForNode = searchMode; |
| 1224 m_overlay->setInspectModeEnabled(searchMode != NotSearching); | 1231 m_overlay->setInspectModeEnabled(searchMode != NotSearching); |
| 1225 if (searchMode != NotSearching) { | 1232 if (searchMode != NotSearching) { |
| 1226 m_inspectModeHighlightConfig = highlightConfigFromInspectorObject(errorS tring, highlightInspectorObject); | 1233 m_inspectModeHighlightConfig = highlightConfigFromInspectorObject(errorS tring, highlightInspectorObject); |
| 1227 } else { | 1234 } else { |
| 1228 m_hoveredNodeForInspectMode.clear(); | 1235 m_hoveredNodeForInspectMode.clear(); |
| 1229 hideHighlight(errorString); | 1236 hideHighlight(errorString); |
| 1237 m_overlay->showLayoutEditorForNode(nullptr, m_inspectModeHighlightConfig ? *m_inspectModeHighlightConfig : InspectorHighlightConfig()); | |
| 1230 } | 1238 } |
| 1231 } | 1239 } |
| 1232 | 1240 |
| 1233 PassOwnPtr<InspectorHighlightConfig> InspectorDOMAgent::highlightConfigFromInspe ctorObject(ErrorString* errorString, JSONObject* highlightInspectorObject) | 1241 PassOwnPtr<InspectorHighlightConfig> InspectorDOMAgent::highlightConfigFromInspe ctorObject(ErrorString* errorString, JSONObject* highlightInspectorObject) |
| 1234 { | 1242 { |
| 1235 if (!highlightInspectorObject) { | 1243 if (!highlightInspectorObject) { |
| 1236 *errorString = "Internal error: highlight configuration parameter is mis sing"; | 1244 *errorString = "Internal error: highlight configuration parameter is mis sing"; |
| 1237 return nullptr; | 1245 return nullptr; |
| 1238 } | 1246 } |
| 1239 | 1247 |
| 1240 OwnPtr<InspectorHighlightConfig> highlightConfig = adoptPtr(new InspectorHig hlightConfig()); | 1248 OwnPtr<InspectorHighlightConfig> highlightConfig = adoptPtr(new InspectorHig hlightConfig()); |
| 1241 bool showInfo = false; // Default: false (do not show a tooltip). | 1249 bool showInfo = false; // Default: false (do not show a tooltip). |
| 1242 highlightInspectorObject->getBoolean("showInfo", &showInfo); | 1250 highlightInspectorObject->getBoolean("showInfo", &showInfo); |
| 1243 highlightConfig->showInfo = showInfo; | 1251 highlightConfig->showInfo = showInfo; |
| 1244 bool showRulers = false; // Default: false (do not show rulers). | 1252 bool showRulers = false; // Default: false (do not show rulers). |
| 1245 highlightInspectorObject->getBoolean("showRulers", &showRulers); | 1253 highlightInspectorObject->getBoolean("showRulers", &showRulers); |
| 1246 highlightConfig->showRulers = showRulers; | 1254 highlightConfig->showRulers = showRulers; |
| 1247 bool showExtensionLines = false; // Default: false (do not show extension li nes). | 1255 bool showExtensionLines = false; // Default: false (do not show extension li nes). |
| 1248 highlightInspectorObject->getBoolean("showExtensionLines", &showExtensionLin es); | 1256 highlightInspectorObject->getBoolean("showExtensionLines", &showExtensionLin es); |
| 1249 highlightConfig->showExtensionLines = showExtensionLines; | 1257 highlightConfig->showExtensionLines = showExtensionLines; |
| 1250 bool showLayoutEditor = false; | |
| 1251 highlightInspectorObject->getBoolean("showLayoutEditor", &showLayoutEditor); | |
| 1252 highlightConfig->showLayoutEditor = showLayoutEditor; | |
| 1253 bool displayAsMaterial = false; | 1258 bool displayAsMaterial = false; |
| 1254 highlightInspectorObject->getBoolean("displayAsMaterial", &displayAsMaterial ); | 1259 highlightInspectorObject->getBoolean("displayAsMaterial", &displayAsMaterial ); |
| 1255 highlightConfig->displayAsMaterial = displayAsMaterial; | 1260 highlightConfig->displayAsMaterial = displayAsMaterial; |
| 1256 highlightConfig->content = parseConfigColor("contentColor", highlightInspect orObject); | 1261 highlightConfig->content = parseConfigColor("contentColor", highlightInspect orObject); |
| 1257 highlightConfig->contentOutline = parseConfigColor("contentOutlineColor", hi ghlightInspectorObject); | 1262 highlightConfig->contentOutline = parseConfigColor("contentOutlineColor", hi ghlightInspectorObject); |
| 1258 highlightConfig->padding = parseConfigColor("paddingColor", highlightInspect orObject); | 1263 highlightConfig->padding = parseConfigColor("paddingColor", highlightInspect orObject); |
| 1259 highlightConfig->border = parseConfigColor("borderColor", highlightInspector Object); | 1264 highlightConfig->border = parseConfigColor("borderColor", highlightInspector Object); |
| 1260 highlightConfig->margin = parseConfigColor("marginColor", highlightInspector Object); | 1265 highlightConfig->margin = parseConfigColor("marginColor", highlightInspector Object); |
| 1261 highlightConfig->eventTarget = parseConfigColor("eventTargetColor", highligh tInspectorObject); | 1266 highlightConfig->eventTarget = parseConfigColor("eventTargetColor", highligh tInspectorObject); |
| 1262 highlightConfig->shape = parseConfigColor("shapeColor", highlightInspectorOb ject); | 1267 highlightConfig->shape = parseConfigColor("shapeColor", highlightInspectorOb ject); |
| 1263 highlightConfig->shapeMargin = parseConfigColor("shapeMarginColor", highligh tInspectorObject); | 1268 highlightConfig->shapeMargin = parseConfigColor("shapeMarginColor", highligh tInspectorObject); |
| 1264 | 1269 |
| 1265 return highlightConfig.release(); | 1270 return highlightConfig.release(); |
| 1266 } | 1271 } |
| 1267 | 1272 |
| 1268 void InspectorDOMAgent::setInspectModeEnabled(ErrorString* errorString, bool ena bled, const bool* inspectUAShadowDOM, const RefPtr<JSONObject>* highlightConfig) | 1273 void InspectorDOMAgent::setInspectModeEnabled(ErrorString* errorString, bool ena bled, const String* mode, const RefPtr<JSONObject>* highlightConfig) |
|
pfeldman
2015/08/25 21:25:29
There should be a node passed here, right?
sergeyv
2015/08/26 02:25:49
Yes, I'll add it in a separate patch.
| |
| 1269 { | 1274 { |
| 1270 if (enabled && !pushDocumentUponHandlelessOperation(errorString)) | 1275 if (enabled && !pushDocumentUponHandlelessOperation(errorString)) |
| 1271 return; | 1276 return; |
| 1272 SearchMode searchMode = enabled ? (asBool(inspectUAShadowDOM) ? SearchingFor UAShadow : SearchingForNormal) : NotSearching; | 1277 SearchMode searchMode = SearchingForNormal; |
| 1278 if (!enabled) { | |
| 1279 searchMode = NotSearching; | |
| 1280 } else if (!mode) { | |
| 1281 searchMode = SearchingForNormal; | |
| 1282 } else if (*mode == "showUAShadowDOM") { | |
| 1283 searchMode = SearchingForUAShadow; | |
| 1284 } else if (*mode == "showLayoutEditor") { | |
| 1285 searchMode = SearchingInLayoutEditor; | |
| 1286 m_layoutEditorEnabled = false; | |
|
pfeldman
2015/08/25 21:25:29
it will be enabled when the node comes as a parame
sergeyv
2015/08/26 02:25:49
Yep
| |
| 1287 } | |
| 1288 | |
| 1273 setSearchingForNode(errorString, searchMode, highlightConfig ? highlightConf ig->get() : nullptr); | 1289 setSearchingForNode(errorString, searchMode, highlightConfig ? highlightConf ig->get() : nullptr); |
| 1274 } | 1290 } |
| 1275 | 1291 |
| 1276 void InspectorDOMAgent::highlightRect(ErrorString*, int x, int y, int width, int height, const RefPtr<JSONObject>* color, const RefPtr<JSONObject>* outlineColor ) | 1292 void InspectorDOMAgent::highlightRect(ErrorString*, int x, int y, int width, int height, const RefPtr<JSONObject>* color, const RefPtr<JSONObject>* outlineColor ) |
| 1277 { | 1293 { |
| 1278 OwnPtr<FloatQuad> quad = adoptPtr(new FloatQuad(FloatRect(x, y, width, heigh t))); | 1294 OwnPtr<FloatQuad> quad = adoptPtr(new FloatQuad(FloatRect(x, y, width, heigh t))); |
| 1279 innerHighlightQuad(quad.release(), color, outlineColor); | 1295 innerHighlightQuad(quad.release(), color, outlineColor); |
| 1280 } | 1296 } |
| 1281 | 1297 |
| 1282 void InspectorDOMAgent::highlightQuad(ErrorString* errorString, const RefPtr<JSO NArray>& quadArray, const RefPtr<JSONObject>* color, const RefPtr<JSONObject>* o utlineColor) | 1298 void InspectorDOMAgent::highlightQuad(ErrorString* errorString, const RefPtr<JSO NArray>& quadArray, const RefPtr<JSONObject>* color, const RefPtr<JSONObject>* o utlineColor) |
| (...skipping 931 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2214 bool InspectorDOMAgent::pushDocumentUponHandlelessOperation(ErrorString* errorSt ring) | 2230 bool InspectorDOMAgent::pushDocumentUponHandlelessOperation(ErrorString* errorSt ring) |
| 2215 { | 2231 { |
| 2216 if (!m_documentNodeToIdMap->contains(m_document)) { | 2232 if (!m_documentNodeToIdMap->contains(m_document)) { |
| 2217 RefPtr<TypeBuilder::DOM::Node> root; | 2233 RefPtr<TypeBuilder::DOM::Node> root; |
| 2218 getDocument(errorString, root); | 2234 getDocument(errorString, root); |
| 2219 return errorString->isEmpty(); | 2235 return errorString->isEmpty(); |
| 2220 } | 2236 } |
| 2221 return true; | 2237 return true; |
| 2222 } | 2238 } |
| 2223 | 2239 |
| 2240 void InspectorDOMAgent::resumeSearchingForNode(Node* startNode) | |
| 2241 { | |
| 2242 if (m_searchingForNode != SearchingInLayoutEditor) | |
| 2243 return; | |
| 2244 | |
| 2245 m_layoutEditorEnabled = false; | |
| 2246 m_overlay->setInspectModeEnabled(true); | |
| 2247 if (startNode && m_inspectModeHighlightConfig) { | |
| 2248 m_hoveredNodeForInspectMode = startNode; | |
| 2249 m_overlay->highlightNode(startNode, 0, *m_inspectModeHighlightConfig, fa lse); | |
| 2250 } | |
| 2251 | |
| 2252 } | |
| 2253 | |
| 2224 DEFINE_TRACE(InspectorDOMAgent) | 2254 DEFINE_TRACE(InspectorDOMAgent) |
| 2225 { | 2255 { |
| 2226 visitor->trace(m_domListener); | 2256 visitor->trace(m_domListener); |
| 2227 visitor->trace(m_pageAgent); | 2257 visitor->trace(m_pageAgent); |
| 2228 visitor->trace(m_injectedScriptManager); | 2258 visitor->trace(m_injectedScriptManager); |
| 2229 visitor->trace(m_overlay); | 2259 visitor->trace(m_overlay); |
| 2230 #if ENABLE(OILPAN) | 2260 #if ENABLE(OILPAN) |
| 2231 visitor->trace(m_documentNodeToIdMap); | 2261 visitor->trace(m_documentNodeToIdMap); |
| 2232 visitor->trace(m_danglingNodeToIdMaps); | 2262 visitor->trace(m_danglingNodeToIdMaps); |
| 2233 visitor->trace(m_idToNode); | 2263 visitor->trace(m_idToNode); |
| 2234 visitor->trace(m_idToNodesMap); | 2264 visitor->trace(m_idToNodesMap); |
| 2235 visitor->trace(m_document); | 2265 visitor->trace(m_document); |
| 2236 visitor->trace(m_revalidateTask); | 2266 visitor->trace(m_revalidateTask); |
| 2237 visitor->trace(m_searchResults); | 2267 visitor->trace(m_searchResults); |
| 2238 #endif | 2268 #endif |
| 2239 visitor->trace(m_hoveredNodeForInspectMode); | 2269 visitor->trace(m_hoveredNodeForInspectMode); |
| 2240 visitor->trace(m_history); | 2270 visitor->trace(m_history); |
| 2241 visitor->trace(m_domEditor); | 2271 visitor->trace(m_domEditor); |
| 2242 InspectorBaseAgent::trace(visitor); | 2272 InspectorBaseAgent::trace(visitor); |
| 2243 } | 2273 } |
| 2244 | 2274 |
| 2245 } // namespace blink | 2275 } // namespace blink |
| OLD | NEW |