Changeset 89245 in webkit
- Timestamp:
- Jun 20, 2011 7:10:42 AM (13 years ago)
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r89244 r89245 1 2011-06-20 Ilya Tikhonovsky <loislo@chromium.org> 2 3 Reviewed by Yury Semikhatsky. 4 5 Web Inspector: It would be useful to be able to pause on element's style change. 6 https://bugs.webkit.org/show_bug.cgi?id=62982 7 8 Current workaround is to use mutation events but it's awkward and doesn't 9 compare _usability-wise_ to what could be implemented as native support in web inspector. 10 In complex applications, being able to see which code causes element to change its style is indispensable. 11 12 * inspector/debugger/dom-breakpoints.html: 13 * platform/chromium/inspector/debugger/dom-breakpoints-expected.txt: 14 1 15 2011-06-20 Chang Shu <cshu@webkit.org> 2 16 -
trunk/LayoutTests/inspector/debugger/dom-breakpoints.html
r83864 r89245 17 17 var element = document.getElementById(elementId); 18 18 element.setAttribute(name, value); 19 } 20 21 function modifyStyleAttribute(elementId, name, value) 22 { 23 var element = document.getElementById(elementId); 24 element.style.setProperty(name, value); 19 25 } 20 26 … … 77 83 waitUntilPausedAndDumpStack(step2); 78 84 85 function step2(callFrames) 86 { 87 pane._removeBreakpoint(rootElement, pane._breakpointTypes.AttributeModified); 88 next(); 89 } 90 }, 91 92 function testModifyStyleAttribute(next) 93 { 94 InspectorTest.addResult("Test that 'Attribute Modified' breakpoint is hit when modifying style attribute."); 95 pane._setBreakpoint(rootElement, pane._breakpointTypes.AttributeModified, true); 96 InspectorTest.addResult("Set 'Attribute Modified' DOM breakpoint on rootElement."); 97 InspectorTest.evaluateInPageWithTimeout("modifyStyleAttribute('rootElement', 'color', 'green')"); 98 InspectorTest.addResult("Modify rootElement style.color attribute."); 99 waitUntilPausedAndDumpStack(step2); 100 79 101 function step2(callFrames) 80 102 { … … 168 190 </p> 169 191 170 <div id="rootElement" >192 <div id="rootElement" style="color: red"> 171 193 <div id="elementToRemove"></div> 172 194 </div> -
trunk/LayoutTests/platform/chromium/inspector/debugger/dom-breakpoints-expected.txt
r79599 r89245 29 29 Script execution paused. 30 30 Call stack: 31 0) removeElement (dom-breakpoints.html: 24)31 0) removeElement (dom-breakpoints.html:30) 32 32 1) (:1) 33 33 Paused on a "Subtree Modified" breakpoint set on div#rootElement, because its descendant div#grandchildElement was removed. … … 45 45 Script execution resumed. 46 46 47 Running: testModifyStyleAttribute 48 Test that 'Attribute Modified' breakpoint is hit when modifying style attribute. 49 Set 'Attribute Modified' DOM breakpoint on rootElement. 50 Modify rootElement style.color attribute. 51 Script execution paused. 52 Call stack: 53 0) modifyStyleAttribute (dom-breakpoints.html:24) 54 1) (:1) 55 Paused on a "Attribute Modified" breakpoint set on div#rootElement. 56 Script execution resumed. 57 47 58 Running: testRemoveNode 48 59 Test that 'Node Removed' breakpoint is hit when removing a node. … … 51 62 Script execution paused. 52 63 Call stack: 53 0) removeElement (dom-breakpoints.html: 24)64 0) removeElement (dom-breakpoints.html:30) 54 65 1) (:1) 55 66 Paused on a "Node Removed" breakpoint set on div#elementToRemove. -
trunk/Source/WebCore/ChangeLog
r89236 r89245 1 2011-06-20 Ilya Tikhonovsky <loislo@chromium.org> 2 3 Reviewed by Yury Semikhatsky. 4 5 Web Inspector: It would be useful to be able to pause on element's style change. 6 https://bugs.webkit.org/show_bug.cgi?id=62982 7 8 Current workaround is to use mutation events but it's awkward and doesn't 9 compare _usability-wise_ to what could be implemented as native support in web inspector. 10 In complex applications, being able to see which code causes element to change its style is indispensable. 11 12 * inspector/InspectorDOMDebuggerAgent.cpp: 13 (WebCore::InspectorDOMDebuggerAgent::didInvalidateStyleAttr): 14 * inspector/InspectorDOMDebuggerAgent.h: 15 * inspector/InspectorInstrumentation.cpp: 16 (WebCore::InspectorInstrumentation::didInvalidateStyleAttrImpl): 17 1 18 2011-06-19 Mads Ager <ager@chromium.org> 2 19 -
trunk/Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp
r86542 r89245 142 142 } 143 143 144 void InspectorDOMDebuggerAgent::didInvalidateStyleAttr(Node* node) 145 { 146 if (hasBreakpoint(node, AttributeModified)) { 147 RefPtr<InspectorObject> eventData = InspectorObject::create(); 148 descriptionForDOMEvent(node, AttributeModified, false, eventData.get()); 149 eventData->setString("breakpointType", domNativeBreakpointType); 150 m_debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release()); 151 } 152 } 153 144 154 void InspectorDOMDebuggerAgent::didInsertDOMNode(Node* node) 145 155 { … … 205 215 void InspectorDOMDebuggerAgent::willInsertDOMNode(Node*, Node* parent) 206 216 { 207 InspectorDebuggerAgent* debuggerAgent = m_debuggerAgent;208 if (!debuggerAgent)209 return;210 211 217 if (hasBreakpoint(parent, SubtreeModified)) { 212 218 RefPtr<InspectorObject> eventData = InspectorObject::create(); 213 219 descriptionForDOMEvent(parent, SubtreeModified, true, eventData.get()); 214 220 eventData->setString("breakpointType", domNativeBreakpointType); 215 debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release());221 m_debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release()); 216 222 } 217 223 } … … 219 225 void InspectorDOMDebuggerAgent::willRemoveDOMNode(Node* node) 220 226 { 221 InspectorDebuggerAgent* debuggerAgent = m_debuggerAgent;222 if (!debuggerAgent)223 return;224 225 227 Node* parentNode = InspectorDOMAgent::innerParentNode(node); 226 228 if (hasBreakpoint(node, NodeRemoved)) { … … 228 230 descriptionForDOMEvent(node, NodeRemoved, false, eventData.get()); 229 231 eventData->setString("breakpointType", domNativeBreakpointType); 230 debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release());232 m_debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release()); 231 233 } else if (parentNode && hasBreakpoint(parentNode, SubtreeModified)) { 232 234 RefPtr<InspectorObject> eventData = InspectorObject::create(); 233 235 descriptionForDOMEvent(node, SubtreeModified, false, eventData.get()); 234 236 eventData->setString("breakpointType", domNativeBreakpointType); 235 debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release());237 m_debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release()); 236 238 } 237 239 } … … 239 241 void InspectorDOMDebuggerAgent::willModifyDOMAttr(Element* element) 240 242 { 241 InspectorDebuggerAgent* debuggerAgent = m_debuggerAgent;242 if (!debuggerAgent)243 return;244 245 243 if (hasBreakpoint(element, AttributeModified)) { 246 244 RefPtr<InspectorObject> eventData = InspectorObject::create(); 247 245 descriptionForDOMEvent(element, AttributeModified, false, eventData.get()); 248 246 eventData->setString("breakpointType", domNativeBreakpointType); 249 debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release());247 m_debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release()); 250 248 } 251 249 } … … 308 306 void InspectorDOMDebuggerAgent::pauseOnNativeEventIfNeeded(const String& categoryType, const String& eventName, bool synchronous) 309 307 { 310 InspectorDebuggerAgent* debuggerAgent = m_debuggerAgent;311 if (!debuggerAgent)312 return;313 314 308 String fullEventName = categoryType + ':' + eventName; 315 309 RefPtr<InspectorObject> eventListenerBreakpoints = m_inspectorState->getObject(DOMDebuggerAgentState::eventListenerBreakpoints); … … 321 315 eventData->setString("eventName", fullEventName); 322 316 if (synchronous) 323 debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release());317 m_debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release()); 324 318 else 325 debuggerAgent->schedulePauseOnNextStatement(NativeBreakpointDebuggerEventType, eventData.release());319 m_debuggerAgent->schedulePauseOnNextStatement(NativeBreakpointDebuggerEventType, eventData.release()); 326 320 } 327 321 … … 352 346 void InspectorDOMDebuggerAgent::willSendXMLHttpRequest(const String& url) 353 347 { 354 InspectorDebuggerAgent* debuggerAgent = m_debuggerAgent;355 if (!debuggerAgent)356 return;357 358 348 String breakpointURL; 359 349 if (m_inspectorState->getBoolean(DOMDebuggerAgentState::pauseOnAllXHRs)) … … 376 366 eventData->setString("breakpointURL", breakpointURL); 377 367 eventData->setString("url", url); 378 debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release());368 m_debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release()); 379 369 } 380 370 -
trunk/Source/WebCore/inspector/InspectorDOMDebuggerAgent.h
r85850 r89245 73 73 // InspectorInstrumentation API 74 74 void willInsertDOMNode(Node*, Node* parent); 75 void didInvalidateStyleAttr(Node*); 75 76 void didInsertDOMNode(Node*); 76 77 void willRemoveDOMNode(Node*); -
trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp
r89224 r89245 163 163 if (InspectorDOMAgent* domAgent = instrumentingAgents->inspectorDOMAgent()) 164 164 domAgent->didInvalidateStyleAttr(node); 165 if (InspectorDOMDebuggerAgent* domDebuggerAgent = instrumentingAgents->inspectorDOMDebuggerAgent()) 166 domDebuggerAgent->didInvalidateStyleAttr(node); 165 167 } 166 168
Note: See TracChangeset
for help on using the changeset viewer.