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 |