Changeset 243719 in webkit


Ignore:
Timestamp:
Apr 1, 2019 3:41:24 PM (5 years ago)
Author:
Devin Rousso
Message:

Web Inspector: DOMDebugger: breakpoints for attribute modifications still fire when breakpoints are disabled
https://bugs.webkit.org/show_bug.cgi?id=196456
<rdar://problem/49489747>

Reviewed by Joseph Pecoraro.

Source/WebCore:

Test: inspector/dom-debugger/dom-breakpoints.html

  • inspector/agents/InspectorDOMDebuggerAgent.cpp:

(WebCore::InspectorDOMDebuggerAgent::didInvalidateStyleAttr):
(WebCore::InspectorDOMDebuggerAgent::descriptionForDOMEvent):

LayoutTests:

  • inspector/dom-debugger/dom-breakpoints.html:
  • inspector/dom-debugger/dom-breakpoints-expected.txt:
Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r243714 r243719  
     12019-04-01  Devin Rousso  <drousso@apple.com>
     2
     3        Web Inspector: DOMDebugger: breakpoints for attribute modifications still fire when breakpoints are disabled
     4        https://bugs.webkit.org/show_bug.cgi?id=196456
     5        <rdar://problem/49489747>
     6
     7        Reviewed by Joseph Pecoraro.
     8
     9        * inspector/dom-debugger/dom-breakpoints.html:
     10        * inspector/dom-debugger/dom-breakpoints-expected.txt:
     11
    1122019-04-01  Per Arne Vollan  <pvollan@apple.com>
    213
  • trunk/LayoutTests/inspector/dom-debugger/dom-breakpoints-expected.txt

    r216681 r243719  
    1010-- Running test teardown.
    1111
    12 -- Running test case: BreakOnSubtreeModified
     12-- Running test case: DOMBreakpoints.SubtreeModified.BreakpointEnabled
    1313PASS: Added 'subtree-modified' breakpoint.
    1414PASS: Breakpoint should have expected type.
     
    2121-- Running test teardown.
    2222
    23 -- Running test case: BreakOnAttributeModified
     23-- Running test case: DOMBreakpoints.SubtreeModified.BreakpointDisabled
     24PASS: Added 'subtree-modified' breakpoint.
     25Wait for evaluate in page to return.
     26PASS: Should not pause for disabled breakpoint.
     27-- Running test teardown.
     28
     29-- Running test case: DOMBreakpoints.SubtreeModified.DebuggerDisabled
     30PASS: Added 'subtree-modified' breakpoint.
     31Wait for evaluate in page to return.
     32PASS: Should not pause for disabled breakpoint.
     33-- Running test teardown.
     34
     35-- Running test case: DOMBreakpoints.SubtreeModified.RemoveBreakpoint
     36PASS: Added 'subtree-modified' breakpoint.
     37Remove breakpoint.
     38Wait for evaluate in page to return.
     39PASS: Should not pause for removed breakpoint.
     40-- Running test teardown.
     41
     42-- Running test case: DOMBreakpoints.AttributeModified.BreakpointEnabled
    2443PASS: Added 'attribute-modified' breakpoint.
    2544PASS: Breakpoint should have expected type.
     
    3251-- Running test teardown.
    3352
    34 -- Running test case: BreakOnNodeRemoved
     53-- Running test case: DOMBreakpoints.AttributeModified.BreakpointDisabled
     54PASS: Added 'attribute-modified' breakpoint.
     55Wait for evaluate in page to return.
     56PASS: Should not pause for disabled breakpoint.
     57-- Running test teardown.
     58
     59-- Running test case: DOMBreakpoints.AttributeModified.DebuggerDisabled
     60PASS: Added 'attribute-modified' breakpoint.
     61Wait for evaluate in page to return.
     62PASS: Should not pause for disabled breakpoint.
     63-- Running test teardown.
     64
     65-- Running test case: DOMBreakpoints.AttributeModified.RemoveBreakpoint
     66PASS: Added 'attribute-modified' breakpoint.
     67Remove breakpoint.
     68Wait for evaluate in page to return.
     69PASS: Should not pause for removed breakpoint.
     70-- Running test teardown.
     71
     72-- Running test case: DOMBreakpoints.NodeRemoved.BreakpointEnabled
    3573PASS: Added 'node-removed' breakpoint.
    3674PASS: Breakpoint should have expected type.
     
    4381-- Running test teardown.
    4482
    45 -- Running test case: ShouldNotPauseOnDisabledBreakpoint
    46 PASS: Added 'subtree-modified' breakpoint.
     83-- Running test case: DOMBreakpoints.NodeRemoved.BreakpointDisabled
     84PASS: Added 'node-removed' breakpoint.
    4785Wait for evaluate in page to return.
    4886PASS: Should not pause for disabled breakpoint.
    4987-- Running test teardown.
    5088
    51 -- Running test case: RemoveBreakpoint
    52 PASS: Added 'subtree-modified' breakpoint.
     89-- Running test case: DOMBreakpoints.NodeRemoved.DebuggerDisabled
     90PASS: Added 'node-removed' breakpoint.
     91Wait for evaluate in page to return.
     92PASS: Should not pause for disabled breakpoint.
     93-- Running test teardown.
     94
     95-- Running test case: DOMBreakpoints.NodeRemoved.RemoveBreakpoint
     96PASS: Added 'node-removed' breakpoint.
    5397Remove breakpoint.
    5498Wait for evaluate in page to return.
  • trunk/LayoutTests/inspector/dom-debugger/dom-breakpoints.html

    r236766 r243719  
    2727    const multipleBreakpointsTestId = "multiple-breakpoints-test";
    2828
     29    let debuggerPausedListener = null;
     30
    2931    let suite = InspectorTest.createAsyncSuite("DOMBreakpoints");
    3032
     
    3335        for (let breakpoint of breakpoints)
    3436            WI.domDebuggerManager.removeDOMBreakpoint(breakpoint);
     37        InspectorTest.assert(!WI.domDebuggerManager.domBreakpoints.length);
     38
     39        WI.debuggerManager.removeEventListener(WI.DebuggerManager.Event.Paused, debuggerPausedListener);
     40        debuggerPausedListener = null;
    3541
    3642        resolve();
     
    3945    function rejectOnPause() {
    4046        return new Promise((resolve, reject) => {
    41             WI.debuggerManager.awaitEvent(WI.DebuggerManager.Event.Paused)
    42             .then((event) => {
     47            InspectorTest.assert(!debuggerPausedListener);
     48            debuggerPausedListener = WI.debuggerManager.addEventListener(WI.DebuggerManager.Event.Paused, (event) => {
    4349                WI.debuggerManager.resume();
    4450                InspectorTest.fail("Should not pause.");
     
    99105                });
    100106
    101                 WI.domDebuggerManager.addDOMBreakpoint(new WI.DOMBreakpoint(node, type, disabled));
    102             });
    103         });
    104     }
    105 
    106     function addSimpleTestCase({name, elementIdentifier, type, expression}) {
     107                WI.domDebuggerManager.addDOMBreakpoint(new WI.DOMBreakpoint(node, type, {disabled}));
     108            });
     109        });
     110    }
     111
     112    function addTestsForBreakpointType({name, elementIdentifier, type, expression}) {
    107113        suite.addTestCase({
    108             name: `BreakOn${name}`,
     114            name: `DOMBreakpoints.${name}.BreakpointEnabled`,
    109115            description: "Check that debugger pauses for breakpoint type.",
    110116            teardown,
     
    130136            }
    131137        });
     138
     139        suite.addTestCase({
     140            name: `DOMBreakpoints.${name}.BreakpointDisabled`,
     141            description: "Check that debugger does not pause for disabled breakpoint.",
     142            teardown,
     143            test(resolve, reject) {
     144                const disabled = true;
     145                addBreakpointForElementIdentifier(elementIdentifier, type, disabled)
     146                .then(() => Promise.race([awaitEvaluateInPage(expression), rejectOnPause()]))
     147                .then(() => {
     148                    InspectorTest.pass("Should not pause for disabled breakpoint.");
     149                    resolve();
     150                })
     151                .catch(reject);
     152            }
     153        });
     154
     155        suite.addTestCase({
     156            name: `DOMBreakpoints.${name}.DebuggerDisabled`,
     157            description: "Check that debugger does not pause when the debugger is disabled.",
     158            teardown,
     159            test(resolve, reject) {
     160                addBreakpointForElementIdentifier(elementIdentifier, type)
     161                .then(() => DebuggerAgent.setBreakpointsActive(false))
     162                .then(() => Promise.race([awaitEvaluateInPage(expression), rejectOnPause()]))
     163                .then(() => DebuggerAgent.setBreakpointsActive(true))
     164                .then(() => {
     165                    InspectorTest.pass("Should not pause for disabled breakpoint.");
     166                    resolve();
     167                })
     168                .catch(reject);
     169            }
     170        });
     171
     172        suite.addTestCase({
     173            name: `DOMBreakpoints.${name}.RemoveBreakpoint`,
     174            description: "Check that debugger does not pause for removed breakpoint.",
     175            teardown,
     176            test(resolve, reject) {
     177                addBreakpointForElementIdentifier(elementIdentifier, type)
     178                .then((event) => {
     179                    let promise = WI.domDebuggerManager.awaitEvent(WI.DOMDebuggerManager.Event.DOMBreakpointRemoved);
     180                    let breakpoint = event.data.breakpoint;
     181
     182                    InspectorTest.log("Remove breakpoint.");
     183                    WI.domDebuggerManager.removeDOMBreakpoint(breakpoint);
     184                    return promise;
     185                })
     186                .then(() => Promise.race([awaitEvaluateInPage(expression), rejectOnPause()]))
     187                .then(() => {
     188                    InspectorTest.pass("Should not pause for removed breakpoint.");
     189                    resolve();
     190                })
     191                .catch(reject);
     192            }
     193        });
    132194    }
    133195
     
    151213    });
    152214
    153     addSimpleTestCase({
     215    addTestsForBreakpointType({
    154216        name: "SubtreeModified",
    155217        elementIdentifier: subtreeModifiedTestId,
     
    158220    });
    159221
    160     addSimpleTestCase({
     222    addTestsForBreakpointType({
    161223        name: "AttributeModified",
    162224        elementIdentifier: attributeModifiedTestId,
     
    165227    });
    166228
    167     addSimpleTestCase({
     229    addTestsForBreakpointType({
    168230        name: "NodeRemoved",
    169231        elementIdentifier: nodeRemovedTestId,
    170232        type: WI.DOMBreakpoint.Type.NodeRemoved,
    171233        expression: "nodeRemovedTest()",
    172     });
    173 
    174     suite.addTestCase({
    175         name: "ShouldNotPauseOnDisabledBreakpoint",
    176         description: "Check that debugger does not pause for disabled breakpoint.",
    177         teardown,
    178         test(resolve, reject) {
    179             const disabled = true;
    180             addBreakpointForElementIdentifier(subtreeModifiedTestId, WI.DOMBreakpoint.Type.SubtreeModified, disabled)
    181             .then(() => Promise.race([awaitEvaluateInPage("modifySubtreeTest()"), rejectOnPause()]))
    182             .then(() => {
    183                 InspectorTest.pass("Should not pause for disabled breakpoint.");
    184                 resolve();
    185             })
    186             .catch(reject);
    187         }
    188     });
    189 
    190     suite.addTestCase({
    191         name: "RemoveBreakpoint",
    192         description: "Check that debugger does not pause for removed breakpoint.",
    193         teardown,
    194         test(resolve, reject) {
    195             addBreakpointForElementIdentifier(subtreeModifiedTestId, WI.DOMBreakpoint.Type.SubtreeModified)
    196             .then((event) => {
    197                 let promise = WI.domDebuggerManager.awaitEvent(WI.DOMDebuggerManager.Event.DOMBreakpointRemoved);
    198                 let breakpoint = event.data.breakpoint;
    199 
    200                 InspectorTest.log("Remove breakpoint.");
    201                 WI.domDebuggerManager.removeDOMBreakpoint(breakpoint);
    202                 return promise;
    203             })
    204             .then(() => Promise.race([awaitEvaluateInPage("modifySubtreeTest()"), rejectOnPause()]))
    205             .then(() => {
    206                 InspectorTest.pass("Should not pause for removed breakpoint.");
    207                 resolve();
    208             })
    209             .catch(reject);
    210         }
    211234    });
    212235
  • trunk/Source/WebCore/ChangeLog

    r243713 r243719  
     12019-04-01  Devin Rousso  <drousso@apple.com>
     2
     3        Web Inspector: DOMDebugger: breakpoints for attribute modifications still fire when breakpoints are disabled
     4        https://bugs.webkit.org/show_bug.cgi?id=196456
     5        <rdar://problem/49489747>
     6
     7        Reviewed by Joseph Pecoraro.
     8
     9        Test: inspector/dom-debugger/dom-breakpoints.html
     10
     11        * inspector/agents/InspectorDOMDebuggerAgent.cpp:
     12        (WebCore::InspectorDOMDebuggerAgent::didInvalidateStyleAttr):
     13        (WebCore::InspectorDOMDebuggerAgent::descriptionForDOMEvent):
     14
    1152019-04-01  Wenson Hsieh  <wenson_hsieh@apple.com>
    216
  • trunk/Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp

    r243273 r243719  
    173173void InspectorDOMDebuggerAgent::didInvalidateStyleAttr(Node& node)
    174174{
     175    if (!m_debuggerAgent->breakpointsActive())
     176        return;
     177
    175178    if (hasBreakpoint(&node, AttributeModified)) {
    176179        Ref<JSON::Object> eventData = JSON::Object::create();
     
    327330void InspectorDOMDebuggerAgent::descriptionForDOMEvent(Node& target, int breakpointType, bool insertion, JSON::Object& description)
    328331{
     332    ASSERT(m_debuggerAgent->breakpointsActive());
    329333    ASSERT(hasBreakpoint(&target, breakpointType));
    330334
Note: See TracChangeset for help on using the changeset viewer.