Web Inspector: add minimal error handling to the DOM breakpoints.
authorpfeldman@chromium.org <pfeldman@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 21 Sep 2011 15:39:53 +0000 (15:39 +0000)
committerpfeldman@chromium.org <pfeldman@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 21 Sep 2011 15:39:53 +0000 (15:39 +0000)
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):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@95634 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/inspector/InspectorDOMAgent.h
Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp

index dd9df5e..9c914e3 100644 (file)
@@ -1,3 +1,16 @@
+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.
index 384549f..1dbd09e 100644 (file)
@@ -180,6 +180,8 @@ public:
     static Node* innerParentNode(Node*);
     static bool isWhitespace(Node*);
 
+    Node* assertNode(ErrorString*, int nodeId);
+
 private:
     InspectorDOMAgent(InstrumentingAgents*, InspectorPageAgent*, InspectorClient*, InspectorState*, InjectedScriptManager*);
 
@@ -191,7 +193,6 @@ private:
     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);
 
index 31f8ae5..126e738 100644 (file)
@@ -178,7 +178,7 @@ void InspectorDOMDebuggerAgent::didRemoveDOMNode(Node* node)
     }
 }
 
-static int domTypeForName(const String& typeString)
+static int domTypeForName(ErrorString* errorString, const String& typeString)
 {
     if (typeString == "subtree-modified")
         return SubtreeModified;
@@ -186,7 +186,8 @@ static int domTypeForName(const String& typeString)
         return AttributeModified;
     if (typeString == "node-removed")
         return NodeRemoved;
-    return SubtreeModified;
+    *errorString = makeString("Unknown DOM breakpoint type: ", typeString);
+    return -1;
 }
 
 static String domTypeName(int type)
@@ -200,12 +201,15 @@ 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);
@@ -215,12 +219,14 @@ void InspectorDOMDebuggerAgent::setDOMBreakpoint(ErrorString*, int nodeId, const
     }
 }
 
-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;