| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 360 (mask | (mask >> domBreakpointDerivedTypeShift)) & | 360 (mask | (mask >> domBreakpointDerivedTypeShift)) & |
| 361 inheritableDOMBreakpointTypesMask; | 361 inheritableDOMBreakpointTypesMask; |
| 362 if (inheritableTypesMask) | 362 if (inheritableTypesMask) |
| 363 updateSubtreeBreakpoints(node, inheritableTypesMask, true); | 363 updateSubtreeBreakpoints(node, inheritableTypesMask, true); |
| 364 } | 364 } |
| 365 } | 365 } |
| 366 | 366 |
| 367 void InspectorDOMDebuggerAgent::didRemoveDOMNode(Node* node) { | 367 void InspectorDOMDebuggerAgent::didRemoveDOMNode(Node* node) { |
| 368 if (m_domBreakpoints.size()) { | 368 if (m_domBreakpoints.size()) { |
| 369 // Remove subtree breakpoints. | 369 // Remove subtree breakpoints. |
| 370 m_domBreakpoints.remove(node); | 370 m_domBreakpoints.erase(node); |
| 371 HeapVector<Member<Node>> stack(1, InspectorDOMAgent::innerFirstChild(node)); | 371 HeapVector<Member<Node>> stack(1, InspectorDOMAgent::innerFirstChild(node)); |
| 372 do { | 372 do { |
| 373 Node* node = stack.back(); | 373 Node* node = stack.back(); |
| 374 stack.pop_back(); | 374 stack.pop_back(); |
| 375 if (!node) | 375 if (!node) |
| 376 continue; | 376 continue; |
| 377 m_domBreakpoints.remove(node); | 377 m_domBreakpoints.erase(node); |
| 378 stack.push_back(InspectorDOMAgent::innerFirstChild(node)); | 378 stack.push_back(InspectorDOMAgent::innerFirstChild(node)); |
| 379 stack.push_back(InspectorDOMAgent::innerNextSibling(node)); | 379 stack.push_back(InspectorDOMAgent::innerNextSibling(node)); |
| 380 } while (!stack.isEmpty()); | 380 } while (!stack.isEmpty()); |
| 381 } | 381 } |
| 382 } | 382 } |
| 383 | 383 |
| 384 static Response domTypeForName(const String& typeString, int& type) { | 384 static Response domTypeForName(const String& typeString, int& type) { |
| 385 if (typeString == "subtree-modified") { | 385 if (typeString == "subtree-modified") { |
| 386 type = SubtreeModified; | 386 type = SubtreeModified; |
| 387 return Response::OK(); | 387 return Response::OK(); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 445 int type = -1; | 445 int type = -1; |
| 446 response = domTypeForName(typeString, type); | 446 response = domTypeForName(typeString, type); |
| 447 if (!response.isSuccess()) | 447 if (!response.isSuccess()) |
| 448 return response; | 448 return response; |
| 449 | 449 |
| 450 uint32_t rootBit = 1 << type; | 450 uint32_t rootBit = 1 << type; |
| 451 uint32_t mask = m_domBreakpoints.get(node) & ~rootBit; | 451 uint32_t mask = m_domBreakpoints.get(node) & ~rootBit; |
| 452 if (mask) | 452 if (mask) |
| 453 m_domBreakpoints.set(node, mask); | 453 m_domBreakpoints.set(node, mask); |
| 454 else | 454 else |
| 455 m_domBreakpoints.remove(node); | 455 m_domBreakpoints.erase(node); |
| 456 | 456 |
| 457 if ((rootBit & inheritableDOMBreakpointTypesMask) && | 457 if ((rootBit & inheritableDOMBreakpointTypesMask) && |
| 458 !(mask & (rootBit << domBreakpointDerivedTypeShift))) { | 458 !(mask & (rootBit << domBreakpointDerivedTypeShift))) { |
| 459 for (Node* child = InspectorDOMAgent::innerFirstChild(node); child; | 459 for (Node* child = InspectorDOMAgent::innerFirstChild(node); child; |
| 460 child = InspectorDOMAgent::innerNextSibling(child)) | 460 child = InspectorDOMAgent::innerNextSibling(child)) |
| 461 updateSubtreeBreakpoints(child, rootBit, false); | 461 updateSubtreeBreakpoints(child, rootBit, false); |
| 462 } | 462 } |
| 463 didRemoveBreakpoint(); | 463 didRemoveBreakpoint(); |
| 464 return Response::OK(); | 464 return Response::OK(); |
| 465 } | 465 } |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 624 | 624 |
| 625 void InspectorDOMDebuggerAgent::updateSubtreeBreakpoints(Node* node, | 625 void InspectorDOMDebuggerAgent::updateSubtreeBreakpoints(Node* node, |
| 626 uint32_t rootMask, | 626 uint32_t rootMask, |
| 627 bool set) { | 627 bool set) { |
| 628 uint32_t oldMask = m_domBreakpoints.get(node); | 628 uint32_t oldMask = m_domBreakpoints.get(node); |
| 629 uint32_t derivedMask = rootMask << domBreakpointDerivedTypeShift; | 629 uint32_t derivedMask = rootMask << domBreakpointDerivedTypeShift; |
| 630 uint32_t newMask = set ? oldMask | derivedMask : oldMask & ~derivedMask; | 630 uint32_t newMask = set ? oldMask | derivedMask : oldMask & ~derivedMask; |
| 631 if (newMask) | 631 if (newMask) |
| 632 m_domBreakpoints.set(node, newMask); | 632 m_domBreakpoints.set(node, newMask); |
| 633 else | 633 else |
| 634 m_domBreakpoints.remove(node); | 634 m_domBreakpoints.erase(node); |
| 635 | 635 |
| 636 uint32_t newRootMask = rootMask & ~newMask; | 636 uint32_t newRootMask = rootMask & ~newMask; |
| 637 if (!newRootMask) | 637 if (!newRootMask) |
| 638 return; | 638 return; |
| 639 | 639 |
| 640 for (Node* child = InspectorDOMAgent::innerFirstChild(node); child; | 640 for (Node* child = InspectorDOMAgent::innerFirstChild(node); child; |
| 641 child = InspectorDOMAgent::innerNextSibling(child)) | 641 child = InspectorDOMAgent::innerNextSibling(child)) |
| 642 updateSubtreeBreakpoints(child, newRootMask, set); | 642 updateSubtreeBreakpoints(child, newRootMask, set); |
| 643 } | 643 } |
| 644 | 644 |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 800 m_state->remove(DOMDebuggerAgentState::enabled); | 800 m_state->remove(DOMDebuggerAgentState::enabled); |
| 801 m_instrumentingAgents->removeInspectorDOMDebuggerAgent(this); | 801 m_instrumentingAgents->removeInspectorDOMDebuggerAgent(this); |
| 802 } | 802 } |
| 803 } | 803 } |
| 804 | 804 |
| 805 void InspectorDOMDebuggerAgent::didCommitLoadForLocalFrame(LocalFrame*) { | 805 void InspectorDOMDebuggerAgent::didCommitLoadForLocalFrame(LocalFrame*) { |
| 806 m_domBreakpoints.clear(); | 806 m_domBreakpoints.clear(); |
| 807 } | 807 } |
| 808 | 808 |
| 809 } // namespace blink | 809 } // namespace blink |
| OLD | NEW |