Changeset 239646 in webkit


Ignore:
Timestamp:
Jan 4, 2019 4:28:57 PM (5 years ago)
Author:
Devin Rousso
Message:

Web Inspector: Audit: disable breakpoints when running Audit
https://bugs.webkit.org/show_bug.cgi?id=193158
<rdar://problem/47057083>

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

  • UserInterface/Controllers/DebuggerManager.js:

(WI.DebuggerManager):
(WI.DebuggerManager.prototype._startDisablingBreakpointsTemporarily):
(WI.DebuggerManager.prototype._stopDisablingBreakpointsTemporarily):
(WI.DebuggerManager.prototype._handleAuditManagerTestScheduled): Added.
(WI.DebuggerManager.prototype._handleAuditManagerTestCompleted): Added.

  • UserInterface/Views/DebuggerSidebarPanel.js:

(WI.DebuggerSidebarPanel.prototype._timelineCapturingWillStart):
(WI.DebuggerSidebarPanel.prototype._timelineCapturingStopped):
(WI.DebuggerSidebarPanel.prototype._handleAuditManagerTestScheduled): Added.
(WI.DebuggerSidebarPanel.prototype._handleAuditManagerTestCompleted): Added.
(WI.DebuggerSidebarPanel.prototype._updateBreakpointsDisabledBanner):

  • UserInterface/Views/DebuggerSidebarPanel.css:

(.sidebar > .panel.navigation.debugger .warning-banner + .warning-banner): Added.

  • UserInterface/Base/Main.js:

(WI.loaded):

  • UserInterface/Test/Test.js:

(WI.loaded):
Move WI.auditManager higher in the managers list so that it can be used in
WI.DebuggerManager's constructor.

  • Localizations/en.lproj/localizedStrings.js:

LayoutTests:

  • inspector/audit/basic.html:
  • inspector/audit/basic-expected.txt:
  • inspector/audit/resources/audit-utilities.js:

(TestPage.registerInitializer.InspectorTest.Audit.addTest):

Location:
trunk
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r239644 r239646  
     12019-01-04  Devin Rousso  <drousso@apple.com>
     2
     3        Web Inspector: Audit: disable breakpoints when running Audit
     4        https://bugs.webkit.org/show_bug.cgi?id=193158
     5        <rdar://problem/47057083>
     6
     7        Reviewed by Joseph Pecoraro.
     8
     9        * inspector/audit/basic.html:
     10        * inspector/audit/basic-expected.txt:
     11
     12        * inspector/audit/resources/audit-utilities.js:
     13        (TestPage.registerInitializer.InspectorTest.Audit.addTest):
     14
    1152019-01-04  Youenn Fablet  <youenn@apple.com>
    216
  • trunk/LayoutTests/inspector/audit/basic-expected.txt

    r238850 r239646  
    127127   - rejected
    128128
     129-- Running test case: Audit.Basic.Debugger
     130Testing `debugger`...
     131PASS: Should not pause on the debugger statement.
     132PASS: Result should be "pass".
     133
  • trunk/LayoutTests/inspector/audit/basic.html

    r238850 r239646  
    4646    InspectorTest.Audit.addPromiseTest("Audit.Basic.Error.Promise.Rejected", `setTimeout(reject, 0, "rejected")`, WI.AuditTestCaseResult.Level.Error);
    4747
     48    suite.addTestCase({
     49        name: "Audit.Basic.Debugger",
     50        description: "Test that a debugger statement doesn't pause when running an audit.",
     51        test(resolve, reject) {
     52            const level = "pass";
     53            let audit = new WI.AuditTestCase("Audit.Basic.Debugger", `function() { debugger; return "${level}"; }`);
     54
     55            let paused = false;
     56            let pausedListener = WI.debuggerManager.singleFireEventListener(WI.DebuggerManager.Event.Paused, (event) => {
     57                paused = true;
     58
     59                WI.debuggerManager.resume();
     60            });
     61
     62            WI.auditManager.awaitEvent(WI.AuditManager.Event.TestCompleted).then((event) => {
     63                InspectorTest.expectFalse(paused, "Should not pause on the debugger statement.");
     64
     65                let results = WI.auditManager.results.lastValue;
     66                InspectorTest.assert(results.length === 1, "There should be 1 result.");
     67
     68                let result = results[0];
     69                InspectorTest.assert(result instanceof WI.AuditTestCaseResult, "Result should be a WI.AuditTestCaseResult.");
     70                if (!result)
     71                    return;
     72
     73                InspectorTest.expectEqual(result.level, level, `Result should be "${level}".`);
     74
     75                WI.debuggerManager.removeEventListener(WI.DebuggerManager.Event.Paused, pausedListener);
     76            });
     77
     78            InspectorTest.log("Testing `debugger`...");
     79
     80            WI.auditManager.start([audit])
     81            .then(resolve, reject);
     82        },
     83    });
     84
    4885    suite.runTestCasesAndFinish();
    4986}
  • trunk/LayoutTests/inspector/audit/resources/audit-utilities.js

    r238850 r239646  
    5959                    if (data.errors)
    6060                        logArray("errors", data.errors);
    61                 })
    62                 .then(resolve, reject);
     61                });
    6362
    6463                InspectorTest.log("Testing" + (logs.beforeStart || "") + "...");
  • trunk/Source/WebInspectorUI/ChangeLog

    r239635 r239646  
     12019-01-04  Devin Rousso  <drousso@apple.com>
     2
     3        Web Inspector: Audit: disable breakpoints when running Audit
     4        https://bugs.webkit.org/show_bug.cgi?id=193158
     5        <rdar://problem/47057083>
     6
     7        Reviewed by Joseph Pecoraro.
     8
     9        * UserInterface/Controllers/DebuggerManager.js:
     10        (WI.DebuggerManager):
     11        (WI.DebuggerManager.prototype._startDisablingBreakpointsTemporarily):
     12        (WI.DebuggerManager.prototype._stopDisablingBreakpointsTemporarily):
     13        (WI.DebuggerManager.prototype._handleAuditManagerTestScheduled): Added.
     14        (WI.DebuggerManager.prototype._handleAuditManagerTestCompleted): Added.
     15
     16        * UserInterface/Views/DebuggerSidebarPanel.js:
     17        (WI.DebuggerSidebarPanel.prototype._timelineCapturingWillStart):
     18        (WI.DebuggerSidebarPanel.prototype._timelineCapturingStopped):
     19        (WI.DebuggerSidebarPanel.prototype._handleAuditManagerTestScheduled): Added.
     20        (WI.DebuggerSidebarPanel.prototype._handleAuditManagerTestCompleted): Added.
     21        (WI.DebuggerSidebarPanel.prototype._updateBreakpointsDisabledBanner):
     22        * UserInterface/Views/DebuggerSidebarPanel.css:
     23        (.sidebar > .panel.navigation.debugger .warning-banner + .warning-banner): Added.
     24
     25        * UserInterface/Base/Main.js:
     26        (WI.loaded):
     27        * UserInterface/Test/Test.js:
     28        (WI.loaded):
     29        Move `WI.auditManager` higher in the managers list so that it can be used in
     30        `WI.DebuggerManager`'s constructor.
     31
     32        * Localizations/en.lproj/localizedStrings.js:
     33
    1342019-01-04  Joseph Pecoraro  <pecoraro@apple.com>
    235
  • trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js

    r239635 r239646  
    277277localizedStrings["Debugger Paused"] = "Debugger Paused";
    278278localizedStrings["Debugger Statement"] = "Debugger Statement";
     279localizedStrings["Debugger disabled during Audit"] = "Debugger disabled during Audit";
    279280localizedStrings["Debugger disabled during Timeline recording"] = "Debugger disabled during Timeline recording";
    280281localizedStrings["Debugger:"] = "Debugger:";
     
    897898localizedStrings["Stiffness"] = "Stiffness";
    898899localizedStrings["Stop"] = "Stop";
     900localizedStrings["Stop Audit"] = "Stop Audit";
    899901localizedStrings["Stop Recording"] = "Stop Recording";
    900902localizedStrings["Stop element selection (%s)"] = "Stop element selection (%s)";
  • trunk/Source/WebInspectorUI/UserInterface/Base/Main.js

    r239460 r239646  
    115115        WI.applicationCacheManager = new WI.ApplicationCacheManager,
    116116        WI.timelineManager = new WI.TimelineManager,
     117        WI.auditManager = new WI.AuditManager,
    117118        WI.debuggerManager = new WI.DebuggerManager,
    118119        WI.layerTreeManager = new WI.LayerTreeManager,
     
    120121        WI.domDebuggerManager = new WI.DOMDebuggerManager,
    121122        WI.canvasManager = new WI.CanvasManager,
    122         WI.auditManager = new WI.AuditManager,
    123123    ];
    124124
  • trunk/Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js

    r238048 r239646  
    4242        WI.timelineManager.addEventListener(WI.TimelineManager.Event.CapturingStopped, this._timelineCapturingStopped, this);
    4343
     44        WI.auditManager.addEventListener(WI.AuditManager.Event.TestScheduled, this._handleAuditManagerTestScheduled, this);
     45        WI.auditManager.addEventListener(WI.AuditManager.Event.TestCompleted, this._handleAuditManagerTestCompleted, this);
     46
    4447        WI.targetManager.addEventListener(WI.TargetManager.Event.TargetRemoved, this._targetRemoved, this);
    4548
     
    9497            this._temporarilyDisabledBreakpointsRestoreSetting.value = null;
    9598        }
     99        this._temporarilyDisableBreakpointsRequestCount = 0;
    96100
    97101        this._ignoreBreakpointDisplayLocationDidChangeEvent = false;
     
    11111115    _startDisablingBreakpointsTemporarily()
    11121116    {
     1117        if (++this._temporarilyDisableBreakpointsRequestCount > 1)
     1118            return;
     1119
    11131120        console.assert(!this.breakpointsDisabledTemporarily, "Already temporarily disabling breakpoints.");
    11141121        if (this.breakpointsDisabledTemporarily)
    11151122            return;
    11161123
     1124
    11171125        this._temporarilyDisabledBreakpointsRestoreSetting.value = this._breakpointsEnabledSetting.value;
    11181126
     
    11221130    _stopDisablingBreakpointsTemporarily()
    11231131    {
     1132        this._temporarilyDisableBreakpointsRequestCount = Math.max(0, this._temporarilyDisableBreakpointsRequestCount - 1);
     1133        if (this._temporarilyDisableBreakpointsRequestCount > 0)
     1134            return;
     1135
    11241136        console.assert(this.breakpointsDisabledTemporarily, "Was not temporarily disabling breakpoints.");
    11251137        if (!this.breakpointsDisabledTemporarily)
     
    11411153
    11421154    _timelineCapturingStopped(event)
     1155    {
     1156        this._stopDisablingBreakpointsTemporarily();
     1157    }
     1158
     1159    _handleAuditManagerTestScheduled(event)
     1160    {
     1161        this._startDisablingBreakpointsTemporarily();
     1162
     1163        if (this.paused)
     1164            this.resume();
     1165    }
     1166
     1167    _handleAuditManagerTestCompleted(event)
    11431168    {
    11441169        this._stopDisablingBreakpointsTemporarily();
  • trunk/Source/WebInspectorUI/UserInterface/Test/Test.js

    r239452 r239646  
    5858        WI.memoryManager = new WI.MemoryManager,
    5959        WI.timelineManager = new WI.TimelineManager,
     60        WI.auditManager = new WI.AuditManager,
    6061        WI.debuggerManager = new WI.DebuggerManager,
    6162        WI.layerTreeManager = new WI.LayerTreeManager,
     
    6364        WI.domDebuggerManager = new WI.DOMDebuggerManager,
    6465        WI.canvasManager = new WI.CanvasManager,
    65         WI.auditManager = new WI.AuditManager,
    6666    ];
    6767
  • trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.css

    r236540 r239646  
    6363}
    6464
     65.sidebar > .panel.navigation.debugger .warning-banner + .warning-banner {
     66    display: none;
     67}
     68
    6569.sidebar > .panel.navigation.debugger .tree-outline.single-thread > .item.thread {
    6670    display: none;
  • trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js

    r238859 r239646  
    5959        WI.timelineManager.addEventListener(WI.TimelineManager.Event.CapturingStopped, this._timelineCapturingStopped, this);
    6060
     61        WI.auditManager.addEventListener(WI.AuditManager.Event.TestScheduled, this._handleAuditManagerTestScheduled, this);
     62        WI.auditManager.addEventListener(WI.AuditManager.Event.TestCompleted, this._handleAuditManagerTestCompleted, this);
     63
    6164        WI.targetManager.addEventListener(WI.TargetManager.Event.TargetAdded, this._targetAdded, this);
    6265        WI.targetManager.addEventListener(WI.TargetManager.Event.TargetRemoved, this._targetRemoved, this);
     
    6467        this._timelineRecordingWarningElement = document.createElement("div");
    6568        this._timelineRecordingWarningElement.classList.add("warning-banner");
    66         this._timelineRecordingWarningElement.append(WI.UIString("Debugger disabled during Timeline recording"), " ");
    67         let stopRecordingLink = this._timelineRecordingWarningElement.appendChild(document.createElement("a"));
    68         stopRecordingLink.textContent = WI.UIString("Stop recording");
    69         stopRecordingLink.addEventListener("click", () => { WI.timelineManager.stopCapturing(); });
     69        this._timelineRecordingWarningElement.append(WI.UIString("Debugger disabled during Timeline recording"), document.createElement("br"));
     70        let timelineStopRecordingLink = this._timelineRecordingWarningElement.appendChild(document.createElement("a"));
     71        timelineStopRecordingLink.textContent = WI.UIString("Stop recording");
     72        timelineStopRecordingLink.addEventListener("click", () => { WI.timelineManager.stopCapturing(); });
     73
     74        this._auditTestWarningElement = document.createElement("div");
     75        this._auditTestWarningElement.classList.add("warning-banner");
     76        this._auditTestWarningElement.append(WI.UIString("Debugger disabled during Audit"), document.createElement("br"));
     77        let auditStopRecordingLink = this._auditTestWarningElement.appendChild(document.createElement("a"));
     78        auditStopRecordingLink.textContent = WI.UIString("Stop Audit");
     79        auditStopRecordingLink.addEventListener("click", () => { WI.auditManager.stop(); });
    7080
    7181        this._breakpointsDisabledWarningElement = document.createElement("div");
     
    623633    _timelineCapturingWillStart(event)
    624634    {
    625         this._debuggerBreakpointsButtonItem.enabled = false;
    626         this._debuggerPauseResumeButtonItem.enabled = false;
     635        this._updateTemporarilyDisabledBreakpointsButtons();
    627636
    628637        this.contentView.element.insertBefore(this._timelineRecordingWarningElement, this.contentView.element.firstChild);
     
    632641    _timelineCapturingStopped(event)
    633642    {
    634         this._debuggerBreakpointsButtonItem.enabled = true;
    635         this._debuggerPauseResumeButtonItem.enabled = true;
     643        this._updateTemporarilyDisabledBreakpointsButtons();
    636644
    637645        this._timelineRecordingWarningElement.remove();
     
    639647    }
    640648
     649    _handleAuditManagerTestScheduled(event)
     650    {
     651        this._updateTemporarilyDisabledBreakpointsButtons();
     652
     653        this.contentView.element.insertBefore(this._auditTestWarningElement, this.contentView.element.firstChild);
     654        this._updateBreakpointsDisabledBanner();
     655    }
     656
     657    _handleAuditManagerTestCompleted(event)
     658    {
     659        this._updateTemporarilyDisabledBreakpointsButtons();
     660
     661        this._auditTestWarningElement.remove();
     662        this._updateBreakpointsDisabledBanner();
     663    }
     664
     665    _updateTemporarilyDisabledBreakpointsButtons()
     666    {
     667        let breakpointsDisabledTemporarily = WI.debuggerManager.breakpointsDisabledTemporarily;
     668        this._debuggerBreakpointsButtonItem.enabled = !breakpointsDisabledTemporarily;
     669        this._debuggerPauseResumeButtonItem.enabled = !breakpointsDisabledTemporarily;
     670    }
     671
    641672    _updateBreakpointsDisabledBanner()
    642673    {
    643674        let breakpointsEnabled = WI.debuggerManager.breakpointsEnabled;
    644675        let timelineWarningShowing = !!this._timelineRecordingWarningElement.parentElement;
    645 
    646         if (!breakpointsEnabled && !timelineWarningShowing)
     676        let auditWarningShowing = !!this._auditTestWarningElement.parentElement;
     677
     678        if (!breakpointsEnabled && !timelineWarningShowing && !auditWarningShowing)
    647679            this.contentView.element.insertBefore(this._breakpointsDisabledWarningElement, this.contentView.element.firstChild);
    648680        else
Note: See TracChangeset for help on using the changeset viewer.