+2011-09-21 Pavel Feldman <pfeldman@google.com>
+
+ Web Inspector: add minimal error handling to the DOM breakpoints.
+ https://bugs.webkit.org/show_bug.cgi?id=68537
+
+ Reviewed by Yury Semikhatsky.
+
+ * inspector/InspectorDOMAgent.h:
+ * inspector/InspectorDOMDebuggerAgent.cpp:
+ (WebCore::domTypeForName):
+ (WebCore::InspectorDOMDebuggerAgent::setDOMBreakpoint):
+ (WebCore::InspectorDOMDebuggerAgent::removeDOMBreakpoint):
+
2011-09-21 Ilya Tikhonovsky <loislo@chromium.org>
Web Inspector: make WebInspector a bit more timeline friendly.
static Node* innerParentNode(Node*);
static bool isWhitespace(Node*);
+ Node* assertNode(ErrorString*, int nodeId);
+
private:
InspectorDOMAgent(InstrumentingAgents*, InspectorPageAgent*, InspectorClient*, InspectorState*, InjectedScriptManager*);
typedef HashMap<RefPtr<Node>, int> NodeToIdMap;
int bind(Node*, NodeToIdMap*);
void unbind(Node*, NodeToIdMap*);
- Node* assertNode(ErrorString*, int nodeId);
Element* assertElement(ErrorString*, int nodeId);
HTMLElement* assertHTMLElement(ErrorString*, int nodeId);
}
}
-static int domTypeForName(const String& typeString)
+static int domTypeForName(ErrorString* errorString, const String& typeString)
{
if (typeString == "subtree-modified")
return SubtreeModified;
return AttributeModified;
if (typeString == "node-removed")
return NodeRemoved;
- return SubtreeModified;
+ *errorString = makeString("Unknown DOM breakpoint type: ", typeString);
+ return -1;
}
static String domTypeName(int type)
return "";
}
-void InspectorDOMDebuggerAgent::setDOMBreakpoint(ErrorString*, int nodeId, const String& typeString)
+void InspectorDOMDebuggerAgent::setDOMBreakpoint(ErrorString* errorString, int nodeId, const String& typeString)
{
- Node* node = m_domAgent->nodeForId(nodeId);
+ Node* node = m_domAgent->assertNode(errorString, nodeId);
if (!node)
return;
- int type = domTypeForName(typeString);
+
+ int type = domTypeForName(errorString, typeString);
+ if (type == -1)
+ return;
uint32_t rootBit = 1 << type;
m_domBreakpoints.set(node, m_domBreakpoints.get(node) | rootBit);
}
}
-void InspectorDOMDebuggerAgent::removeDOMBreakpoint(ErrorString*, int nodeId, const String& typeString)
+void InspectorDOMDebuggerAgent::removeDOMBreakpoint(ErrorString* errorString, int nodeId, const String& typeString)
{
- Node* node = m_domAgent->nodeForId(nodeId);
+ Node* node = m_domAgent->assertNode(errorString, nodeId);
if (!node)
return;
- int type = domTypeForName(typeString);
+ int type = domTypeForName(errorString, typeString);
+ if (type == -1)
+ return;
uint32_t rootBit = 1 << type;
uint32_t mask = m_domBreakpoints.get(node) & ~rootBit;