Modified: trunk/LayoutTests/inspector/debugger/dom-breakpoints.html (89244 => 89245)
--- trunk/LayoutTests/inspector/debugger/dom-breakpoints.html 2011-06-20 13:55:42 UTC (rev 89244)
+++ trunk/LayoutTests/inspector/debugger/dom-breakpoints.html 2011-06-20 14:10:42 UTC (rev 89245)
@@ -18,6 +18,12 @@
element.setAttribute(name, value);
}
+function modifyStyleAttribute(elementId, name, value)
+{
+ var element = document.getElementById(elementId);
+ element.style.setProperty(name, value);
+}
+
function removeElement(elementId)
{
var element = document.getElementById(elementId);
@@ -83,6 +89,22 @@
}
},
+ function testModifyStyleAttribute(next)
+ {
+ InspectorTest.addResult("Test that 'Attribute Modified' breakpoint is hit when modifying style attribute.");
+ pane._setBreakpoint(rootElement, pane._breakpointTypes.AttributeModified, true);
+ InspectorTest.addResult("Set 'Attribute Modified' DOM breakpoint on rootElement.");
+ InspectorTest.evaluateInPageWithTimeout("modifyStyleAttribute('rootElement', 'color', 'green')");
+ InspectorTest.addResult("Modify rootElement style.color attribute.");
+ waitUntilPausedAndDumpStack(step2);
+
+ function step2(callFrames)
+ {
+ pane._removeBreakpoint(rootElement, pane._breakpointTypes.AttributeModified);
+ next();
+ }
+ },
+
function testRemoveNode(next)
{
InspectorTest.addResult("Test that 'Node Removed' breakpoint is hit when removing a node.");
@@ -167,7 +189,7 @@
Tests DOM breakpoints. <a href="" 42886</a>
</p>
-<div id="rootElement">
+<div id="rootElement" style="color: red">
<div id="elementToRemove"></div>
</div>
Modified: trunk/LayoutTests/platform/chromium/inspector/debugger/dom-breakpoints-expected.txt (89244 => 89245)
--- trunk/LayoutTests/platform/chromium/inspector/debugger/dom-breakpoints-expected.txt 2011-06-20 13:55:42 UTC (rev 89244)
+++ trunk/LayoutTests/platform/chromium/inspector/debugger/dom-breakpoints-expected.txt 2011-06-20 14:10:42 UTC (rev 89245)
@@ -28,7 +28,7 @@
Remove grandchildElement.
Script execution paused.
Call stack:
- 0) removeElement (dom-breakpoints.html:24)
+ 0) removeElement (dom-breakpoints.html:30)
1) (:1)
Paused on a "Subtree Modified" breakpoint set on div#rootElement, because its descendant div#grandchildElement was removed.
Script execution resumed.
@@ -44,13 +44,24 @@
Paused on a "Attribute Modified" breakpoint set on div#rootElement.
Script execution resumed.
+Running: testModifyStyleAttribute
+Test that 'Attribute Modified' breakpoint is hit when modifying style attribute.
+Set 'Attribute Modified' DOM breakpoint on rootElement.
+Modify rootElement style.color attribute.
+Script execution paused.
+Call stack:
+ 0) modifyStyleAttribute (dom-breakpoints.html:24)
+ 1) (:1)
+Paused on a "Attribute Modified" breakpoint set on div#rootElement.
+Script execution resumed.
+
Running: testRemoveNode
Test that 'Node Removed' breakpoint is hit when removing a node.
Set 'Node Removed' DOM breakpoint on elementToRemove.
Remove elementToRemove.
Script execution paused.
Call stack:
- 0) removeElement (dom-breakpoints.html:24)
+ 0) removeElement (dom-breakpoints.html:30)
1) (:1)
Paused on a "Node Removed" breakpoint set on div#elementToRemove.
Script execution resumed.
Modified: trunk/Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp (89244 => 89245)
--- trunk/Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp 2011-06-20 13:55:42 UTC (rev 89244)
+++ trunk/Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp 2011-06-20 14:10:42 UTC (rev 89245)
@@ -141,6 +141,16 @@
m_inspectorState->setObject(DOMDebuggerAgentState::eventListenerBreakpoints, eventListenerBreakpoints);
}
+void InspectorDOMDebuggerAgent::didInvalidateStyleAttr(Node* node)
+{
+ if (hasBreakpoint(node, AttributeModified)) {
+ RefPtr<InspectorObject> eventData = InspectorObject::create();
+ descriptionForDOMEvent(node, AttributeModified, false, eventData.get());
+ eventData->setString("breakpointType", domNativeBreakpointType);
+ m_debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release());
+ }
+}
+
void InspectorDOMDebuggerAgent::didInsertDOMNode(Node* node)
{
if (m_domBreakpoints.size()) {
@@ -204,49 +214,37 @@
void InspectorDOMDebuggerAgent::willInsertDOMNode(Node*, Node* parent)
{
- InspectorDebuggerAgent* debuggerAgent = m_debuggerAgent;
- if (!debuggerAgent)
- return;
-
if (hasBreakpoint(parent, SubtreeModified)) {
RefPtr<InspectorObject> eventData = InspectorObject::create();
descriptionForDOMEvent(parent, SubtreeModified, true, eventData.get());
eventData->setString("breakpointType", domNativeBreakpointType);
- debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release());
+ m_debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release());
}
}
void InspectorDOMDebuggerAgent::willRemoveDOMNode(Node* node)
{
- InspectorDebuggerAgent* debuggerAgent = m_debuggerAgent;
- if (!debuggerAgent)
- return;
-
Node* parentNode = InspectorDOMAgent::innerParentNode(node);
if (hasBreakpoint(node, NodeRemoved)) {
RefPtr<InspectorObject> eventData = InspectorObject::create();
descriptionForDOMEvent(node, NodeRemoved, false, eventData.get());
eventData->setString("breakpointType", domNativeBreakpointType);
- debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release());
+ m_debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release());
} else if (parentNode && hasBreakpoint(parentNode, SubtreeModified)) {
RefPtr<InspectorObject> eventData = InspectorObject::create();
descriptionForDOMEvent(node, SubtreeModified, false, eventData.get());
eventData->setString("breakpointType", domNativeBreakpointType);
- debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release());
+ m_debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release());
}
}
void InspectorDOMDebuggerAgent::willModifyDOMAttr(Element* element)
{
- InspectorDebuggerAgent* debuggerAgent = m_debuggerAgent;
- if (!debuggerAgent)
- return;
-
if (hasBreakpoint(element, AttributeModified)) {
RefPtr<InspectorObject> eventData = InspectorObject::create();
descriptionForDOMEvent(element, AttributeModified, false, eventData.get());
eventData->setString("breakpointType", domNativeBreakpointType);
- debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release());
+ m_debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release());
}
}
@@ -307,10 +305,6 @@
void InspectorDOMDebuggerAgent::pauseOnNativeEventIfNeeded(const String& categoryType, const String& eventName, bool synchronous)
{
- InspectorDebuggerAgent* debuggerAgent = m_debuggerAgent;
- if (!debuggerAgent)
- return;
-
String fullEventName = categoryType + ':' + eventName;
RefPtr<InspectorObject> eventListenerBreakpoints = m_inspectorState->getObject(DOMDebuggerAgentState::eventListenerBreakpoints);
if (eventListenerBreakpoints->find(fullEventName) == eventListenerBreakpoints->end())
@@ -320,9 +314,9 @@
eventData->setString("breakpointType", eventListenerNativeBreakpointType);
eventData->setString("eventName", fullEventName);
if (synchronous)
- debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release());
+ m_debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release());
else
- debuggerAgent->schedulePauseOnNextStatement(NativeBreakpointDebuggerEventType, eventData.release());
+ m_debuggerAgent->schedulePauseOnNextStatement(NativeBreakpointDebuggerEventType, eventData.release());
}
void InspectorDOMDebuggerAgent::setXHRBreakpoint(ErrorString*, const String& url)
@@ -351,10 +345,6 @@
void InspectorDOMDebuggerAgent::willSendXMLHttpRequest(const String& url)
{
- InspectorDebuggerAgent* debuggerAgent = m_debuggerAgent;
- if (!debuggerAgent)
- return;
-
String breakpointURL;
if (m_inspectorState->getBoolean(DOMDebuggerAgentState::pauseOnAllXHRs))
breakpointURL = "";
@@ -375,7 +365,7 @@
eventData->setString("breakpointType", xhrNativeBreakpointType);
eventData->setString("breakpointURL", breakpointURL);
eventData->setString("url", url);
- debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release());
+ m_debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release());
}
void InspectorDOMDebuggerAgent::clear()