Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(70)

Side by Side Diff: third_party/WebKit/Source/core/inspector/InspectorDOMDebuggerAgent.cpp

Issue 2260233002: [DevTools] Migrate v8_inspector/public from String16 to String{View,Buffer}. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: styling Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 20 matching lines...) Expand all
31 #include "core/inspector/InspectorDOMDebuggerAgent.h" 31 #include "core/inspector/InspectorDOMDebuggerAgent.h"
32 32
33 #include "bindings/core/v8/ScriptEventListener.h" 33 #include "bindings/core/v8/ScriptEventListener.h"
34 #include "bindings/core/v8/V8EventTarget.h" 34 #include "bindings/core/v8/V8EventTarget.h"
35 #include "core/dom/Element.h" 35 #include "core/dom/Element.h"
36 #include "core/dom/Node.h" 36 #include "core/dom/Node.h"
37 #include "core/events/Event.h" 37 #include "core/events/Event.h"
38 #include "core/events/EventTarget.h" 38 #include "core/events/EventTarget.h"
39 #include "core/frame/LocalDOMWindow.h" 39 #include "core/frame/LocalDOMWindow.h"
40 #include "core/inspector/InspectorDOMAgent.h" 40 #include "core/inspector/InspectorDOMAgent.h"
41 #include "core/inspector/V8InspectorString.h"
41 #include "platform/v8_inspector/public/V8InspectorSession.h" 42 #include "platform/v8_inspector/public/V8InspectorSession.h"
42 43
43 namespace { 44 namespace {
44 45
45 enum DOMBreakpointType { 46 enum DOMBreakpointType {
46 SubtreeModified = 0, 47 SubtreeModified = 0,
47 AttributeModified, 48 AttributeModified,
48 NodeRemoved, 49 NodeRemoved,
49 DOMBreakpointTypesCount 50 DOMBreakpointTypesCount
50 }; 51 };
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 protocol::DictionaryValue* breakpointsByTarget = ensurePropertyObject(eventL istenerBreakpoints(), eventName); 300 protocol::DictionaryValue* breakpointsByTarget = ensurePropertyObject(eventL istenerBreakpoints(), eventName);
300 if (targetName.isEmpty()) 301 if (targetName.isEmpty())
301 breakpointsByTarget->remove(DOMDebuggerAgentState::eventTargetAny); 302 breakpointsByTarget->remove(DOMDebuggerAgentState::eventTargetAny);
302 else 303 else
303 breakpointsByTarget->remove(targetName.lower()); 304 breakpointsByTarget->remove(targetName.lower());
304 didRemoveBreakpoint(); 305 didRemoveBreakpoint();
305 } 306 }
306 307
307 void InspectorDOMDebuggerAgent::didInvalidateStyleAttr(Node* node) 308 void InspectorDOMDebuggerAgent::didInvalidateStyleAttr(Node* node)
308 { 309 {
309 if (hasBreakpoint(node, AttributeModified)) { 310 if (hasBreakpoint(node, AttributeModified))
310 std::unique_ptr<protocol::DictionaryValue> eventData = protocol::Diction aryValue::create(); 311 breakProgramOnDOMEvent(node, AttributeModified, false);
311 descriptionForDOMEvent(node, AttributeModified, false, eventData.get());
312 m_v8Session->breakProgram(protocol::Debugger::API::Paused::ReasonEnum::D OM, eventData->toJSONString());
313 }
314 } 312 }
315 313
316 void InspectorDOMDebuggerAgent::didInsertDOMNode(Node* node) 314 void InspectorDOMDebuggerAgent::didInsertDOMNode(Node* node)
317 { 315 {
318 if (m_domBreakpoints.size()) { 316 if (m_domBreakpoints.size()) {
319 uint32_t mask = m_domBreakpoints.get(InspectorDOMAgent::innerParentNode( node)); 317 uint32_t mask = m_domBreakpoints.get(InspectorDOMAgent::innerParentNode( node));
320 uint32_t inheritableTypesMask = (mask | (mask >> domBreakpointDerivedTyp eShift)) & inheritableDOMBreakpointTypesMask; 318 uint32_t inheritableTypesMask = (mask | (mask >> domBreakpointDerivedTyp eShift)) & inheritableDOMBreakpointTypesMask;
321 if (inheritableTypesMask) 319 if (inheritableTypesMask)
322 updateSubtreeBreakpoints(node, inheritableTypesMask, true); 320 updateSubtreeBreakpoints(node, inheritableTypesMask, true);
323 } 321 }
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 if ((rootBit & inheritableDOMBreakpointTypesMask) && !(mask & (rootBit << do mBreakpointDerivedTypeShift))) { 400 if ((rootBit & inheritableDOMBreakpointTypesMask) && !(mask & (rootBit << do mBreakpointDerivedTypeShift))) {
403 for (Node* child = InspectorDOMAgent::innerFirstChild(node); child; chil d = InspectorDOMAgent::innerNextSibling(child)) 401 for (Node* child = InspectorDOMAgent::innerFirstChild(node); child; chil d = InspectorDOMAgent::innerNextSibling(child))
404 updateSubtreeBreakpoints(child, rootBit, false); 402 updateSubtreeBreakpoints(child, rootBit, false);
405 } 403 }
406 didRemoveBreakpoint(); 404 didRemoveBreakpoint();
407 } 405 }
408 406
409 void InspectorDOMDebuggerAgent::getEventListeners(ErrorString* errorString, cons t String& objectId, std::unique_ptr<protocol::Array<protocol::DOMDebugger::Event Listener>>* listenersArray) 407 void InspectorDOMDebuggerAgent::getEventListeners(ErrorString* errorString, cons t String& objectId, std::unique_ptr<protocol::Array<protocol::DOMDebugger::Event Listener>>* listenersArray)
410 { 408 {
411 v8::HandleScope handles(m_isolate); 409 v8::HandleScope handles(m_isolate);
412 v8::Local<v8::Value> value; 410 v8::Local<v8::Value> object;
413 v8::Local<v8::Context> context; 411 v8::Local<v8::Context> context;
414 String16 objectGroup; 412 std::unique_ptr<v8_inspector::StringBuffer> objectGroup;
415 if (!m_v8Session->unwrapObject(errorString, objectId, &value, &context, &obj ectGroup)) 413 if (!m_v8Session->unwrapObject(errorString, toV8InspectorStringView(objectId ), &object, &context, &objectGroup))
416 return; 414 return;
417 v8::Context::Scope scope(context); 415 v8::Context::Scope scope(context);
418 *listenersArray = protocol::Array<protocol::DOMDebugger::EventListener>::cre ate(); 416 *listenersArray = protocol::Array<protocol::DOMDebugger::EventListener>::cre ate();
419 eventListeners(context, value, objectGroup, listenersArray->get());
420 }
421
422 void InspectorDOMDebuggerAgent::eventListeners(v8::Local<v8::Context> context, v 8::Local<v8::Value> object, const String16& objectGroup, protocol::Array<protoco l::DOMDebugger::EventListener>* listenersArray)
423 {
424 V8EventListenerInfoList eventInformation; 417 V8EventListenerInfoList eventInformation;
425 InspectorDOMDebuggerAgent::eventListenersInfoForTarget(context->GetIsolate() , object, eventInformation); 418 InspectorDOMDebuggerAgent::eventListenersInfoForTarget(context->GetIsolate() , object, eventInformation);
426 for (const auto& info : eventInformation) { 419 for (const auto& info : eventInformation) {
427 if (!info.useCapture) 420 if (!info.useCapture)
428 continue; 421 continue;
429 std::unique_ptr<protocol::DOMDebugger::EventListener> listenerObject = b uildObjectForEventListener(context, info, objectGroup); 422 std::unique_ptr<protocol::DOMDebugger::EventListener> listenerObject = b uildObjectForEventListener(context, info, objectGroup->string());
430 if (listenerObject) 423 if (listenerObject)
431 listenersArray->addItem(std::move(listenerObject)); 424 (*listenersArray)->addItem(std::move(listenerObject));
432 } 425 }
433 for (const auto& info : eventInformation) { 426 for (const auto& info : eventInformation) {
434 if (info.useCapture) 427 if (info.useCapture)
435 continue; 428 continue;
436 std::unique_ptr<protocol::DOMDebugger::EventListener> listenerObject = b uildObjectForEventListener(context, info, objectGroup); 429 std::unique_ptr<protocol::DOMDebugger::EventListener> listenerObject = b uildObjectForEventListener(context, info, objectGroup->string());
437 if (listenerObject) 430 if (listenerObject)
438 listenersArray->addItem(std::move(listenerObject)); 431 (*listenersArray)->addItem(std::move(listenerObject));
439 } 432 }
440 } 433 }
441 434
442 std::unique_ptr<protocol::DOMDebugger::EventListener> InspectorDOMDebuggerAgent: :buildObjectForEventListener(v8::Local<v8::Context> context, const V8EventListen erInfo& info, const String16& objectGroupId) 435 std::unique_ptr<protocol::DOMDebugger::EventListener> InspectorDOMDebuggerAgent: :buildObjectForEventListener(v8::Local<v8::Context> context, const V8EventListen erInfo& info, const v8_inspector::StringView& objectGroupId)
443 { 436 {
444 if (info.handler.IsEmpty()) 437 if (info.handler.IsEmpty())
445 return nullptr; 438 return nullptr;
446 439
447 v8::Isolate* isolate = context->GetIsolate(); 440 v8::Isolate* isolate = context->GetIsolate();
448 v8::Local<v8::Function> function = eventListenerEffectiveFunction(isolate, i nfo.handler); 441 v8::Local<v8::Function> function = eventListenerEffectiveFunction(isolate, i nfo.handler);
449 if (function.IsEmpty()) 442 if (function.IsEmpty())
450 return nullptr; 443 return nullptr;
451 444
452 String scriptId; 445 String scriptId;
453 int lineNumber; 446 int lineNumber;
454 int columnNumber; 447 int columnNumber;
455 getFunctionLocation(function, scriptId, lineNumber, columnNumber); 448 getFunctionLocation(function, scriptId, lineNumber, columnNumber);
456 449
457 std::unique_ptr<protocol::DOMDebugger::EventListener> value = protocol::DOMD ebugger::EventListener::create() 450 std::unique_ptr<protocol::DOMDebugger::EventListener> value = protocol::DOMD ebugger::EventListener::create()
458 .setType(info.eventType) 451 .setType(info.eventType)
459 .setUseCapture(info.useCapture) 452 .setUseCapture(info.useCapture)
460 .setPassive(info.passive) 453 .setPassive(info.passive)
461 .setScriptId(scriptId) 454 .setScriptId(scriptId)
462 .setLineNumber(lineNumber) 455 .setLineNumber(lineNumber)
463 .setColumnNumber(columnNumber).build(); 456 .setColumnNumber(columnNumber).build();
464 if (!objectGroupId.isEmpty()) { 457 if (objectGroupId.length()) {
465 value->setHandler(m_v8Session->wrapObject(context, function, objectGroup Id)); 458 value->setHandler(m_v8Session->wrapObject(context, function, objectGroup Id));
466 value->setOriginalHandler(m_v8Session->wrapObject(context, info.handler, objectGroupId)); 459 value->setOriginalHandler(m_v8Session->wrapObject(context, info.handler, objectGroupId));
467 v8::Local<v8::Function> removeFunction; 460 v8::Local<v8::Function> removeFunction;
468 if (info.removeFunction.ToLocal(&removeFunction)) 461 if (info.removeFunction.ToLocal(&removeFunction))
469 value->setRemoveFunction(m_v8Session->wrapObject(context, removeFunc tion, objectGroupId)); 462 value->setRemoveFunction(m_v8Session->wrapObject(context, removeFunc tion, objectGroupId));
470 } 463 }
471 return value; 464 return value;
472 } 465 }
473 466
474 void InspectorDOMDebuggerAgent::allowNativeBreakpoint(const String& breakpointNa me, const String* targetName, bool sync) 467 void InspectorDOMDebuggerAgent::allowNativeBreakpoint(const String& breakpointNa me, const String* targetName, bool sync)
475 { 468 {
476 pauseOnNativeEventIfNeeded(preparePauseOnNativeEventData(breakpointName, tar getName), sync); 469 pauseOnNativeEventIfNeeded(preparePauseOnNativeEventData(breakpointName, tar getName), sync);
477 } 470 }
478 471
479 void InspectorDOMDebuggerAgent::willInsertDOMNode(Node* parent) 472 void InspectorDOMDebuggerAgent::willInsertDOMNode(Node* parent)
480 { 473 {
481 if (hasBreakpoint(parent, SubtreeModified)) { 474 if (hasBreakpoint(parent, SubtreeModified))
482 std::unique_ptr<protocol::DictionaryValue> eventData = protocol::Diction aryValue::create(); 475 breakProgramOnDOMEvent(parent, SubtreeModified, true);
483 descriptionForDOMEvent(parent, SubtreeModified, true, eventData.get());
484 m_v8Session->breakProgram(protocol::Debugger::API::Paused::ReasonEnum::D OM, eventData->toJSONString());
485 }
486 } 476 }
487 477
488 void InspectorDOMDebuggerAgent::willRemoveDOMNode(Node* node) 478 void InspectorDOMDebuggerAgent::willRemoveDOMNode(Node* node)
489 { 479 {
490 Node* parentNode = InspectorDOMAgent::innerParentNode(node); 480 Node* parentNode = InspectorDOMAgent::innerParentNode(node);
491 if (hasBreakpoint(node, NodeRemoved)) { 481 if (hasBreakpoint(node, NodeRemoved))
492 std::unique_ptr<protocol::DictionaryValue> eventData = protocol::Diction aryValue::create(); 482 breakProgramOnDOMEvent(node, NodeRemoved, false);
493 descriptionForDOMEvent(node, NodeRemoved, false, eventData.get()); 483 else if (parentNode && hasBreakpoint(parentNode, SubtreeModified))
494 m_v8Session->breakProgram(protocol::Debugger::API::Paused::ReasonEnum::D OM, eventData->toJSONString()); 484 breakProgramOnDOMEvent(node, SubtreeModified, false);
495 } else if (parentNode && hasBreakpoint(parentNode, SubtreeModified)) {
496 std::unique_ptr<protocol::DictionaryValue> eventData = protocol::Diction aryValue::create();
497 descriptionForDOMEvent(node, SubtreeModified, false, eventData.get());
498 m_v8Session->breakProgram(protocol::Debugger::API::Paused::ReasonEnum::D OM, eventData->toJSONString());
499 }
500 didRemoveDOMNode(node); 485 didRemoveDOMNode(node);
501 } 486 }
502 487
503 void InspectorDOMDebuggerAgent::willModifyDOMAttr(Element* element, const Atomic String&, const AtomicString&) 488 void InspectorDOMDebuggerAgent::willModifyDOMAttr(Element* element, const Atomic String&, const AtomicString&)
504 { 489 {
505 if (hasBreakpoint(element, AttributeModified)) { 490 if (hasBreakpoint(element, AttributeModified))
506 std::unique_ptr<protocol::DictionaryValue> eventData = protocol::Diction aryValue::create(); 491 breakProgramOnDOMEvent(element, AttributeModified, false);
507 descriptionForDOMEvent(element, AttributeModified, false, eventData.get( ));
508 m_v8Session->breakProgram(protocol::Debugger::API::Paused::ReasonEnum::D OM, eventData->toJSONString());
509 }
510 } 492 }
511 493
512 void InspectorDOMDebuggerAgent::descriptionForDOMEvent(Node* target, int breakpo intType, bool insertion, protocol::DictionaryValue* description) 494 void InspectorDOMDebuggerAgent::breakProgramOnDOMEvent(Node* target, int breakpo intType, bool insertion)
513 { 495 {
514 ASSERT(hasBreakpoint(target, breakpointType)); 496 DCHECK(hasBreakpoint(target, breakpointType));
497 std::unique_ptr<protocol::DictionaryValue> description = protocol::Dictionar yValue::create();
515 498
516 Node* breakpointOwner = target; 499 Node* breakpointOwner = target;
517 if ((1 << breakpointType) & inheritableDOMBreakpointTypesMask) { 500 if ((1 << breakpointType) & inheritableDOMBreakpointTypesMask) {
518 // For inheritable breakpoint types, target node isn't always the same a s the node that owns a breakpoint. 501 // For inheritable breakpoint types, target node isn't always the same a s the node that owns a breakpoint.
519 // Target node may be unknown to frontend, so we need to push it first. 502 // Target node may be unknown to frontend, so we need to push it first.
520 description->setInteger("targetNodeId", m_domAgent->pushNodePathToFronte nd(target)); 503 description->setInteger("targetNodeId", m_domAgent->pushNodePathToFronte nd(target));
521 504
522 // Find breakpoint owner node. 505 // Find breakpoint owner node.
523 if (!insertion) 506 if (!insertion)
524 breakpointOwner = InspectorDOMAgent::innerParentNode(target); 507 breakpointOwner = InspectorDOMAgent::innerParentNode(target);
525 ASSERT(breakpointOwner); 508 ASSERT(breakpointOwner);
526 while (!(m_domBreakpoints.get(breakpointOwner) & (1 << breakpointType))) { 509 while (!(m_domBreakpoints.get(breakpointOwner) & (1 << breakpointType))) {
527 Node* parentNode = InspectorDOMAgent::innerParentNode(breakpointOwne r); 510 Node* parentNode = InspectorDOMAgent::innerParentNode(breakpointOwne r);
528 if (!parentNode) 511 if (!parentNode)
529 break; 512 break;
530 breakpointOwner = parentNode; 513 breakpointOwner = parentNode;
531 } 514 }
532 515
533 if (breakpointType == SubtreeModified) 516 if (breakpointType == SubtreeModified)
534 description->setBoolean("insertion", insertion); 517 description->setBoolean("insertion", insertion);
535 } 518 }
536 519
537 int breakpointOwnerNodeId = m_domAgent->boundNodeId(breakpointOwner); 520 int breakpointOwnerNodeId = m_domAgent->boundNodeId(breakpointOwner);
538 ASSERT(breakpointOwnerNodeId); 521 ASSERT(breakpointOwnerNodeId);
539 description->setInteger("nodeId", breakpointOwnerNodeId); 522 description->setInteger("nodeId", breakpointOwnerNodeId);
540 description->setString("type", domTypeName(breakpointType)); 523 description->setString("type", domTypeName(breakpointType));
524 String json = description->toJSONString();
525 m_v8Session->breakProgram(toV8InspectorStringView(protocol::Debugger::API::P aused::ReasonEnum::DOM), toV8InspectorStringView(json));
541 } 526 }
542 527
543 bool InspectorDOMDebuggerAgent::hasBreakpoint(Node* node, int type) 528 bool InspectorDOMDebuggerAgent::hasBreakpoint(Node* node, int type)
544 { 529 {
545 if (!m_domAgent->enabled()) 530 if (!m_domAgent->enabled())
546 return false; 531 return false;
547 uint32_t rootBit = 1 << type; 532 uint32_t rootBit = 1 << type;
548 uint32_t derivedBit = rootBit << domBreakpointDerivedTypeShift; 533 uint32_t derivedBit = rootBit << domBreakpointDerivedTypeShift;
549 return m_domBreakpoints.get(node) & (rootBit | derivedBit); 534 return m_domBreakpoints.get(node) & (rootBit | derivedBit);
550 } 535 }
(...skipping 13 matching lines...) Expand all
564 return; 549 return;
565 550
566 for (Node* child = InspectorDOMAgent::innerFirstChild(node); child; child = InspectorDOMAgent::innerNextSibling(child)) 551 for (Node* child = InspectorDOMAgent::innerFirstChild(node); child; child = InspectorDOMAgent::innerNextSibling(child))
567 updateSubtreeBreakpoints(child, newRootMask, set); 552 updateSubtreeBreakpoints(child, newRootMask, set);
568 } 553 }
569 554
570 void InspectorDOMDebuggerAgent::pauseOnNativeEventIfNeeded(std::unique_ptr<proto col::DictionaryValue> eventData, bool synchronous) 555 void InspectorDOMDebuggerAgent::pauseOnNativeEventIfNeeded(std::unique_ptr<proto col::DictionaryValue> eventData, bool synchronous)
571 { 556 {
572 if (!eventData) 557 if (!eventData)
573 return; 558 return;
559 String json = eventData->toJSONString();
574 if (synchronous) 560 if (synchronous)
575 m_v8Session->breakProgram(protocol::Debugger::API::Paused::ReasonEnum::E ventListener, eventData->toJSONString()); 561 m_v8Session->breakProgram(toV8InspectorStringView(protocol::Debugger::AP I::Paused::ReasonEnum::EventListener), toV8InspectorStringView(json));
576 else 562 else
577 m_v8Session->schedulePauseOnNextStatement(protocol::Debugger::API::Pause d::ReasonEnum::EventListener, eventData->toJSONString()); 563 m_v8Session->schedulePauseOnNextStatement(toV8InspectorStringView(protoc ol::Debugger::API::Paused::ReasonEnum::EventListener), toV8InspectorStringView(j son));
578 } 564 }
579 565
580 std::unique_ptr<protocol::DictionaryValue> InspectorDOMDebuggerAgent::preparePau seOnNativeEventData(const String& eventName, const String* targetName) 566 std::unique_ptr<protocol::DictionaryValue> InspectorDOMDebuggerAgent::preparePau seOnNativeEventData(const String& eventName, const String* targetName)
581 { 567 {
582 String fullEventName = (targetName ? listenerEventCategoryType : instrumenta tionEventCategoryType) + eventName; 568 String fullEventName = (targetName ? listenerEventCategoryType : instrumenta tionEventCategoryType) + eventName;
583 protocol::DictionaryValue* breakpoints = eventListenerBreakpoints(); 569 protocol::DictionaryValue* breakpoints = eventListenerBreakpoints();
584 protocol::Value* value = breakpoints->get(fullEventName); 570 protocol::Value* value = breakpoints->get(fullEventName);
585 if (!value) 571 if (!value)
586 return nullptr; 572 return nullptr;
587 bool match = false; 573 bool match = false;
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
656 642
657 void InspectorDOMDebuggerAgent::willSendXMLHttpOrFetchNetworkRequest(const Strin g& url) 643 void InspectorDOMDebuggerAgent::willSendXMLHttpOrFetchNetworkRequest(const Strin g& url)
658 { 644 {
659 String breakpointURL; 645 String breakpointURL;
660 if (m_state->booleanProperty(DOMDebuggerAgentState::pauseOnAllXHRs, false)) 646 if (m_state->booleanProperty(DOMDebuggerAgentState::pauseOnAllXHRs, false))
661 breakpointURL = ""; 647 breakpointURL = "";
662 else { 648 else {
663 protocol::DictionaryValue* breakpoints = xhrBreakpoints(); 649 protocol::DictionaryValue* breakpoints = xhrBreakpoints();
664 for (size_t i = 0; i < breakpoints->size(); ++i) { 650 for (size_t i = 0; i < breakpoints->size(); ++i) {
665 auto breakpoint = breakpoints->at(i); 651 auto breakpoint = breakpoints->at(i);
666 if (url.contains(breakpoint.first)) { 652 // TODO(dgozman): remove extra String cast after migrating away from String16.
653 if (url.contains(String(breakpoint.first))) {
667 breakpointURL = breakpoint.first; 654 breakpointURL = breakpoint.first;
668 break; 655 break;
669 } 656 }
670 } 657 }
671 } 658 }
672 659
673 if (breakpointURL.isNull()) 660 if (breakpointURL.isNull())
674 return; 661 return;
675 662
676 std::unique_ptr<protocol::DictionaryValue> eventData = protocol::DictionaryV alue::create(); 663 std::unique_ptr<protocol::DictionaryValue> eventData = protocol::DictionaryV alue::create();
677 eventData->setString("breakpointURL", breakpointURL); 664 eventData->setString("breakpointURL", breakpointURL);
678 eventData->setString("url", url); 665 eventData->setString("url", url);
679 m_v8Session->breakProgram(protocol::Debugger::API::Paused::ReasonEnum::XHR, eventData->toJSONString()); 666 String json = eventData->toJSONString();
667 m_v8Session->breakProgram(toV8InspectorStringView(protocol::Debugger::API::P aused::ReasonEnum::XHR), toV8InspectorStringView(json));
680 } 668 }
681 669
682 void InspectorDOMDebuggerAgent::didAddBreakpoint() 670 void InspectorDOMDebuggerAgent::didAddBreakpoint()
683 { 671 {
684 if (m_state->booleanProperty(DOMDebuggerAgentState::enabled, false)) 672 if (m_state->booleanProperty(DOMDebuggerAgentState::enabled, false))
685 return; 673 return;
686 setEnabled(true); 674 setEnabled(true);
687 } 675 }
688 676
689 void InspectorDOMDebuggerAgent::didRemoveBreakpoint() 677 void InspectorDOMDebuggerAgent::didRemoveBreakpoint()
(...skipping 19 matching lines...) Expand all
709 m_instrumentingAgents->removeInspectorDOMDebuggerAgent(this); 697 m_instrumentingAgents->removeInspectorDOMDebuggerAgent(this);
710 } 698 }
711 } 699 }
712 700
713 void InspectorDOMDebuggerAgent::didCommitLoadForLocalFrame(LocalFrame*) 701 void InspectorDOMDebuggerAgent::didCommitLoadForLocalFrame(LocalFrame*)
714 { 702 {
715 m_domBreakpoints.clear(); 703 m_domBreakpoints.clear();
716 } 704 }
717 705
718 } // namespace blink 706 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698