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

Side by Side Diff: Source/core/inspector/InspectorDOMAgent.cpp

Issue 1311783003: Devtools[LayoutEditor]: Rework layout-editor workflow (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@resize
Patch Set: Created 5 years, 4 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 unified diff | Download patch
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698