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 |