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_searchingInLayoutEditorPaused(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_searchingInLayoutEditorPaused)) |
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_searchingInLayout
EditorPaused)) |
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_searchingInLayoutEditorPaused)) |
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_searchingInLayoutEditorPaused = true; |
| 1189 m_overlay->setInspectModeEnabled(false); |
| 1190 } |
1185 } | 1191 } |
1186 | 1192 |
1187 bool InspectorDOMAgent::handleMouseMove(LocalFrame* frame, const PlatformMouseEv
ent& event) | 1193 bool InspectorDOMAgent::handleMouseMove(LocalFrame* frame, const PlatformMouseEv
ent& event) |
1188 { | 1194 { |
1189 if (m_searchingForNode == NotSearching) | 1195 if (m_searchingForNode == NotSearching || (m_searchingForNode == SearchingIn
LayoutEditor && m_searchingInLayoutEditorPaused)) |
1190 return false; | 1196 return false; |
1191 | 1197 |
1192 if (!frame->view() || !frame->contentLayoutObject()) | 1198 if (!frame->view() || !frame->contentLayoutObject()) |
1193 return true; | 1199 return true; |
1194 Node* node = hoveredNodeForEvent(frame, event, event.shiftKey()); | 1200 Node* node = hoveredNodeForEvent(frame, event, event.shiftKey()); |
1195 | 1201 |
1196 // Do not highlight within user agent shadow root unless requested. | 1202 // Do not highlight within user agent shadow root unless requested. |
1197 if (m_searchingForNode != SearchingForUAShadow) { | 1203 if (m_searchingForNode != SearchingForUAShadow) { |
1198 ShadowRoot* shadowRoot = userAgentShadowRoot(node); | 1204 ShadowRoot* shadowRoot = userAgentShadowRoot(node); |
1199 if (shadowRoot) | 1205 if (shadowRoot) |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1258 highlightConfig->padding = parseConfigColor("paddingColor", highlightInspect
orObject); | 1264 highlightConfig->padding = parseConfigColor("paddingColor", highlightInspect
orObject); |
1259 highlightConfig->border = parseConfigColor("borderColor", highlightInspector
Object); | 1265 highlightConfig->border = parseConfigColor("borderColor", highlightInspector
Object); |
1260 highlightConfig->margin = parseConfigColor("marginColor", highlightInspector
Object); | 1266 highlightConfig->margin = parseConfigColor("marginColor", highlightInspector
Object); |
1261 highlightConfig->eventTarget = parseConfigColor("eventTargetColor", highligh
tInspectorObject); | 1267 highlightConfig->eventTarget = parseConfigColor("eventTargetColor", highligh
tInspectorObject); |
1262 highlightConfig->shape = parseConfigColor("shapeColor", highlightInspectorOb
ject); | 1268 highlightConfig->shape = parseConfigColor("shapeColor", highlightInspectorOb
ject); |
1263 highlightConfig->shapeMargin = parseConfigColor("shapeMarginColor", highligh
tInspectorObject); | 1269 highlightConfig->shapeMargin = parseConfigColor("shapeMarginColor", highligh
tInspectorObject); |
1264 | 1270 |
1265 return highlightConfig.release(); | 1271 return highlightConfig.release(); |
1266 } | 1272 } |
1267 | 1273 |
1268 void InspectorDOMAgent::setInspectModeEnabled(ErrorString* errorString, bool ena
bled, const bool* inspectUAShadowDOM, const RefPtr<JSONObject>* highlightConfig) | 1274 void InspectorDOMAgent::setInspectModeEnabled(ErrorString* errorString, bool ena
bled, const String* mode, const RefPtr<JSONObject>* highlightConfig) |
1269 { | 1275 { |
1270 if (enabled && !pushDocumentUponHandlelessOperation(errorString)) | 1276 if (enabled && !pushDocumentUponHandlelessOperation(errorString)) |
1271 return; | 1277 return; |
1272 SearchMode searchMode = enabled ? (asBool(inspectUAShadowDOM) ? SearchingFor
UAShadow : SearchingForNormal) : NotSearching; | 1278 SearchMode searchMode = SearchingForNormal; |
| 1279 if (!enabled) { |
| 1280 searchMode = NotSearching; |
| 1281 } else if (!mode) { |
| 1282 searchMode = SearchingForNormal; |
| 1283 } else if (*mode == "showUAShadowDOM") { |
| 1284 searchMode = SearchingForUAShadow; |
| 1285 } else if (*mode == "showLayoutEditor") { |
| 1286 searchMode = SearchingInLayoutEditor; |
| 1287 m_searchingInLayoutEditorPaused = false; |
| 1288 } |
| 1289 |
1273 setSearchingForNode(errorString, searchMode, highlightConfig ? highlightConf
ig->get() : nullptr); | 1290 setSearchingForNode(errorString, searchMode, highlightConfig ? highlightConf
ig->get() : nullptr); |
1274 } | 1291 } |
1275 | 1292 |
1276 void InspectorDOMAgent::highlightRect(ErrorString*, int x, int y, int width, int
height, const RefPtr<JSONObject>* color, const RefPtr<JSONObject>* outlineColor
) | 1293 void InspectorDOMAgent::highlightRect(ErrorString*, int x, int y, int width, int
height, const RefPtr<JSONObject>* color, const RefPtr<JSONObject>* outlineColor
) |
1277 { | 1294 { |
1278 OwnPtr<FloatQuad> quad = adoptPtr(new FloatQuad(FloatRect(x, y, width, heigh
t))); | 1295 OwnPtr<FloatQuad> quad = adoptPtr(new FloatQuad(FloatRect(x, y, width, heigh
t))); |
1279 innerHighlightQuad(quad.release(), color, outlineColor); | 1296 innerHighlightQuad(quad.release(), color, outlineColor); |
1280 } | 1297 } |
1281 | 1298 |
1282 void InspectorDOMAgent::highlightQuad(ErrorString* errorString, const RefPtr<JSO
NArray>& quadArray, const RefPtr<JSONObject>* color, const RefPtr<JSONObject>* o
utlineColor) | 1299 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) | 2231 bool InspectorDOMAgent::pushDocumentUponHandlelessOperation(ErrorString* errorSt
ring) |
2215 { | 2232 { |
2216 if (!m_documentNodeToIdMap->contains(m_document)) { | 2233 if (!m_documentNodeToIdMap->contains(m_document)) { |
2217 RefPtr<TypeBuilder::DOM::Node> root; | 2234 RefPtr<TypeBuilder::DOM::Node> root; |
2218 getDocument(errorString, root); | 2235 getDocument(errorString, root); |
2219 return errorString->isEmpty(); | 2236 return errorString->isEmpty(); |
2220 } | 2237 } |
2221 return true; | 2238 return true; |
2222 } | 2239 } |
2223 | 2240 |
| 2241 void InspectorDOMAgent::resumeSearchingForNode(Node* startNode) |
| 2242 { |
| 2243 if (m_searchingForNode != SearchingInLayoutEditor) |
| 2244 return; |
| 2245 |
| 2246 m_searchingInLayoutEditorPaused = false; |
| 2247 m_overlay->setInspectModeEnabled(true); |
| 2248 if (startNode && m_inspectModeHighlightConfig) { |
| 2249 m_hoveredNodeForInspectMode = startNode; |
| 2250 m_overlay->highlightNode(startNode, 0, *m_inspectModeHighlightConfig, fa
lse); |
| 2251 } |
| 2252 |
| 2253 } |
| 2254 |
2224 DEFINE_TRACE(InspectorDOMAgent) | 2255 DEFINE_TRACE(InspectorDOMAgent) |
2225 { | 2256 { |
2226 visitor->trace(m_domListener); | 2257 visitor->trace(m_domListener); |
2227 visitor->trace(m_pageAgent); | 2258 visitor->trace(m_pageAgent); |
2228 visitor->trace(m_injectedScriptManager); | 2259 visitor->trace(m_injectedScriptManager); |
2229 visitor->trace(m_overlay); | 2260 visitor->trace(m_overlay); |
2230 #if ENABLE(OILPAN) | 2261 #if ENABLE(OILPAN) |
2231 visitor->trace(m_documentNodeToIdMap); | 2262 visitor->trace(m_documentNodeToIdMap); |
2232 visitor->trace(m_danglingNodeToIdMaps); | 2263 visitor->trace(m_danglingNodeToIdMaps); |
2233 visitor->trace(m_idToNode); | 2264 visitor->trace(m_idToNode); |
2234 visitor->trace(m_idToNodesMap); | 2265 visitor->trace(m_idToNodesMap); |
2235 visitor->trace(m_document); | 2266 visitor->trace(m_document); |
2236 visitor->trace(m_revalidateTask); | 2267 visitor->trace(m_revalidateTask); |
2237 visitor->trace(m_searchResults); | 2268 visitor->trace(m_searchResults); |
2238 #endif | 2269 #endif |
2239 visitor->trace(m_hoveredNodeForInspectMode); | 2270 visitor->trace(m_hoveredNodeForInspectMode); |
2240 visitor->trace(m_history); | 2271 visitor->trace(m_history); |
2241 visitor->trace(m_domEditor); | 2272 visitor->trace(m_domEditor); |
2242 InspectorBaseAgent::trace(visitor); | 2273 InspectorBaseAgent::trace(visitor); |
2243 } | 2274 } |
2244 | 2275 |
2245 } // namespace blink | 2276 } // namespace blink |
OLD | NEW |