Title: [255939] releases/WebKitGTK/webkit-2.28
Revision
255939
Author
[email protected]
Date
2020-02-06 07:11:17 -0800 (Thu, 06 Feb 2020)

Log Message

Merge r255887 - Web Inspector: Sources: add a special breakpoint for controlling whether `debugger` statements pause
https://bugs.webkit.org/show_bug.cgi?id=206818

Reviewed by Timothy Hatcher.

Source/_javascript_Core:

* inspector/protocol/Debugger.json:
* inspector/agents/InspectorDebuggerAgent.h:
* inspector/agents/InspectorDebuggerAgent.cpp:
(Inspector::InspectorDebuggerAgent::setPauseOnDebuggerStatements): Added.

* bytecompiler/NodesCodegen.cpp:
(JSC::DebuggerStatementNode::emitBytecode):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::finishCreation):
* bytecode/UnlinkedCodeBlock.cpp:
(JSC::dumpLineColumnEntry):
* interpreter/Interpreter.h:
* interpreter/Interpreter.cpp:
(JSC::Interpreter::debug):
(WTF::printInternal):
* debugger/Debugger.h:
(JSC::Debugger::setPauseOnDebuggerStatements): Added.
* debugger/Debugger.cpp:
(JSC::Debugger::didReachDebuggerStatement): Added.
(JSC::Debugger::didReachBreakpoint): Deleted.
Replace `DebugHookType::DidReachBreakpoint` with `DebugHookType::DidReachDebuggerStatement`,
as it is only actually used for `debugger;` statements, not breakpoints.

Source/WebInspectorUI:

* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager):
(WI.DebuggerManager.prototype.async initializeTarget):
(WI.DebuggerManager.prototype.get debuggerStatementsBreakpoint): Added.
(WI.DebuggerManager.prototype.isBreakpointRemovable):
(WI.DebuggerManager.prototype._breakpointDisabledStateDidChange):

* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.prototype._insertDebuggerTreeElement):
(WI.SourcesNavigationSidebarPanel.prototype._addBreakpoint):

* UserInterface/Views/BreakpointTreeElement.css:
(.breakpoint-debugger-statement-icon .icon): Added.
* UserInterface/Images/DebuggerStatement.svg: Added.

* Localizations/en.lproj/localizedStrings.js:

LayoutTests:

* inspector/debugger/setPauseOnDebuggerStatements.html: Added.
* inspector/debugger/setPauseOnDebuggerStatements-expected.txt: Added.

Modified Paths

Added Paths

Diff

Modified: releases/WebKitGTK/webkit-2.28/LayoutTests/ChangeLog (255938 => 255939)


--- releases/WebKitGTK/webkit-2.28/LayoutTests/ChangeLog	2020-02-06 15:11:05 UTC (rev 255938)
+++ releases/WebKitGTK/webkit-2.28/LayoutTests/ChangeLog	2020-02-06 15:11:17 UTC (rev 255939)
@@ -1,3 +1,13 @@
+2020-02-05  Devin Rousso  <[email protected]>
+
+        Web Inspector: Sources: add a special breakpoint for controlling whether `debugger` statements pause
+        https://bugs.webkit.org/show_bug.cgi?id=206818
+
+        Reviewed by Timothy Hatcher.
+
+        * inspector/debugger/setPauseOnDebuggerStatements.html: Added.
+        * inspector/debugger/setPauseOnDebuggerStatements-expected.txt: Added.
+
 2020-02-05  Chris Dumez  <[email protected]>
 
         Regression(r248734) StorageAreaMap objects are getting leaked

Added: releases/WebKitGTK/webkit-2.28/LayoutTests/inspector/debugger/setPauseOnDebuggerStatements-expected.txt (0 => 255939)


--- releases/WebKitGTK/webkit-2.28/LayoutTests/inspector/debugger/setPauseOnDebuggerStatements-expected.txt	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.28/LayoutTests/inspector/debugger/setPauseOnDebuggerStatements-expected.txt	2020-02-06 15:11:17 UTC (rev 255939)
@@ -0,0 +1,10 @@
+Tests for Debugger.setPauseOnDebuggerStatements command.
+
+
+== Running test suite: Debugger.setPauseOnDebuggerStatements
+-- Running test case: Debugger.setPauseOnDebuggerStatements.Disabled
+PASS: Should not pause.
+
+-- Running test case: Debugger.setPauseOnDebuggerStatements.Enabled
+PASS: Should paused.
+

Added: releases/WebKitGTK/webkit-2.28/LayoutTests/inspector/debugger/setPauseOnDebuggerStatements.html (0 => 255939)


--- releases/WebKitGTK/webkit-2.28/LayoutTests/inspector/debugger/setPauseOnDebuggerStatements.html	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.28/LayoutTests/inspector/debugger/setPauseOnDebuggerStatements.html	2020-02-06 15:11:17 UTC (rev 255939)
@@ -0,0 +1,61 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src=""
+<script>
+function triggerDebuggerStatement() {
+    debugger;
+}
+
+function test()
+{
+    let suite = InspectorTest.createAsyncSuite("Debugger.setPauseOnDebuggerStatements");
+
+    suite.addTestCase({
+        name: "Debugger.setPauseOnDebuggerStatements.Disabled",
+        description: "Test that the debugger does not pause on `debugger` statements when `setPauseOnDebuggerStatements` is disabled.",
+        test(resolve, reject) {
+            WI.debuggerManager.debuggerStatementsBreakpoint.disabled = true;
+
+            let listener = WI.debuggerManager.singleFireEventListener(WI.DebuggerManager.Event.Paused, (event) => {
+                InspectorTest.fail("Should not have paused.");
+                reject();
+            });
+
+            InspectorTest.evaluateInPage("triggerDebuggerStatement()", () => {
+                InspectorTest.pass("Should not pause.");
+                WI.debuggerManager.removeEventListener(WI.DebuggerManager.Event.Paused, listener);
+                resolve();
+            });
+        }
+    });
+
+    suite.addTestCase({
+        name: "Debugger.setPauseOnDebuggerStatements.Enabled",
+        description: "Test that the debugger does pause on `debugger` statements when `setPauseOnDebuggerStatements` is enabled.",
+        test(resolve, reject) {
+            WI.debuggerManager.debuggerStatementsBreakpoint.disabled = false;
+
+            let didPause = false;
+            let listener = WI.debuggerManager.singleFireEventListener(WI.DebuggerManager.Event.Paused, (event) => {
+                InspectorTest.pass("Should paused.");
+                WI.debuggerManager.resume();
+                didPause = true;
+            });
+
+            InspectorTest.evaluateInPage("triggerDebuggerStatement()", () => {
+                if (!didPause)
+                    InspectorTest.fail("Should have paused.");
+                resolve();
+            });
+        }
+    });
+
+    suite.runTestCasesAndFinish();
+}
+</script>
+</head>
+<body _onload_="runTest()">
+<p>Tests for Debugger.setPauseOnDebuggerStatements command.</p>
+</body>
+</html>

Modified: releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/ChangeLog (255938 => 255939)


--- releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/ChangeLog	2020-02-06 15:11:05 UTC (rev 255938)
+++ releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/ChangeLog	2020-02-06 15:11:17 UTC (rev 255939)
@@ -1,3 +1,33 @@
+2020-02-05  Devin Rousso  <[email protected]>
+
+        Web Inspector: Sources: add a special breakpoint for controlling whether `debugger` statements pause
+        https://bugs.webkit.org/show_bug.cgi?id=206818
+
+        Reviewed by Timothy Hatcher.
+
+        * inspector/protocol/Debugger.json:
+        * inspector/agents/InspectorDebuggerAgent.h:
+        * inspector/agents/InspectorDebuggerAgent.cpp:
+        (Inspector::InspectorDebuggerAgent::setPauseOnDebuggerStatements): Added.
+
+        * bytecompiler/NodesCodegen.cpp:
+        (JSC::DebuggerStatementNode::emitBytecode):
+        * bytecode/CodeBlock.cpp:
+        (JSC::CodeBlock::finishCreation):
+        * bytecode/UnlinkedCodeBlock.cpp:
+        (JSC::dumpLineColumnEntry):
+        * interpreter/Interpreter.h:
+        * interpreter/Interpreter.cpp:
+        (JSC::Interpreter::debug):
+        (WTF::printInternal):
+        * debugger/Debugger.h:
+        (JSC::Debugger::setPauseOnDebuggerStatements): Added.
+        * debugger/Debugger.cpp:
+        (JSC::Debugger::didReachDebuggerStatement): Added.
+        (JSC::Debugger::didReachBreakpoint): Deleted.
+        Replace `DebugHookType::DidReachBreakpoint` with `DebugHookType::DidReachDebuggerStatement`,
+        as it is only actually used for `debugger;` statements, not breakpoints.
+
 2020-02-04  Yusuke Suzuki  <[email protected]>
 
         [JSC] Structure::setMaxOffset and setTransitionOffset are racy

Modified: releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/bytecode/CodeBlock.cpp (255938 => 255939)


--- releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/bytecode/CodeBlock.cpp	2020-02-06 15:11:05 UTC (rev 255938)
+++ releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/bytecode/CodeBlock.cpp	2020-02-06 15:11:17 UTC (rev 255939)
@@ -758,7 +758,7 @@
         }
 
         case op_debug: {
-            if (instruction->as<OpDebug>().m_debugHookType == DidReachBreakpoint)
+            if (instruction->as<OpDebug>().m_debugHookType == DidReachDebuggerStatement)
                 m_hasDebuggerStatement = true;
             break;
         }

Modified: releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/bytecode/UnlinkedCodeBlock.cpp (255938 => 255939)


--- releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/bytecode/UnlinkedCodeBlock.cpp	2020-02-06 15:11:05 UTC (rev 255938)
+++ releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/bytecode/UnlinkedCodeBlock.cpp	2020-02-06 15:11:17 UTC (rev 255939)
@@ -156,7 +156,7 @@
         case WillExecuteProgram: event = " WillExecuteProgram"; break;
         case DidExecuteProgram: event = " DidExecuteProgram"; break;
         case DidEnterCallFrame: event = " DidEnterCallFrame"; break;
-        case DidReachBreakpoint: event = " DidReachBreakpoint"; break;
+        case DidReachDebuggerStatement: event = " DidReachDebuggerStatement"; break;
         case WillLeaveCallFrame: event = " WillLeaveCallFrame"; break;
         case WillExecuteStatement: event = " WillExecuteStatement"; break;
         case WillExecuteExpression: event = " WillExecuteExpression"; break;

Modified: releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/bytecompiler/NodesCodegen.cpp (255938 => 255939)


--- releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/bytecompiler/NodesCodegen.cpp	2020-02-06 15:11:05 UTC (rev 255938)
+++ releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/bytecompiler/NodesCodegen.cpp	2020-02-06 15:11:17 UTC (rev 255939)
@@ -3059,7 +3059,7 @@
 
 void DebuggerStatementNode::emitBytecode(BytecodeGenerator& generator, RegisterID*)
 {
-    generator.emitDebugHook(DidReachBreakpoint, position());
+    generator.emitDebugHook(DidReachDebuggerStatement, position());
 }
 
 // ------------------------------ ExprStatementNode ----------------------------

Modified: releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/debugger/Debugger.cpp (255938 => 255939)


--- releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/debugger/Debugger.cpp	2020-02-06 15:11:05 UTC (rev 255938)
+++ releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/debugger/Debugger.cpp	2020-02-06 15:11:17 UTC (rev 255939)
@@ -914,11 +914,14 @@
     m_afterBlackboxedScript = false;
 }
 
-void Debugger::didReachBreakpoint(CallFrame* callFrame)
+void Debugger::didReachDebuggerStatement(CallFrame* callFrame)
 {
     if (m_isPaused)
         return;
 
+    if (!m_pauseOnDebuggerStatements)
+        return;
+
     PauseReasonDeclaration reason(*this, PausedForDebuggerStatement);
     m_pauseAtNextOpportunity = true;
     setSteppingMode(SteppingModeEnabled);

Modified: releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/debugger/Debugger.h (255938 => 255939)


--- releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/debugger/Debugger.h	2020-02-06 15:11:05 UTC (rev 255938)
+++ releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/debugger/Debugger.h	2020-02-06 15:11:17 UTC (rev 255939)
@@ -89,6 +89,8 @@
     PauseOnExceptionsState pauseOnExceptionsState() const { return m_pauseOnExceptionsState; }
     void setPauseOnExceptionsState(PauseOnExceptionsState);
 
+    void setPauseOnDebuggerStatements(bool enabled) { m_pauseOnDebuggerStatements = enabled; }
+
     enum ReasonForPause {
         NotPaused,
         PausedForException,
@@ -132,7 +134,7 @@
     void unwindEvent(CallFrame*);
     void willExecuteProgram(CallFrame*);
     void didExecuteProgram(CallFrame*);
-    void didReachBreakpoint(CallFrame*);
+    void didReachDebuggerStatement(CallFrame*);
 
     virtual void recompileAllJSFunctions();
 
@@ -226,6 +228,7 @@
     HashMap<SourceID, BlackboxType, WTF::IntHash<SourceID>, WTF::UnsignedWithZeroKeyHashTraits<SourceID>> m_blackboxedScripts;
 
     PauseOnExceptionsState m_pauseOnExceptionsState;
+    bool m_pauseOnDebuggerStatements : 1;
     bool m_pauseAtNextOpportunity : 1;
     bool m_pauseOnStepOut : 1;
     bool m_pastFirstExpressionInStatement : 1;

Modified: releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/inspector/agents/InspectorDebuggerAgent.cpp (255938 => 255939)


--- releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/inspector/agents/InspectorDebuggerAgent.cpp	2020-02-06 15:11:05 UTC (rev 255938)
+++ releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/inspector/agents/InspectorDebuggerAgent.cpp	2020-02-06 15:11:17 UTC (rev 255939)
@@ -832,6 +832,11 @@
     }
 }
 
+void InspectorDebuggerAgent::setPauseOnDebuggerStatements(ErrorString&, bool enabled)
+{
+    m_scriptDebugServer.setPauseOnDebuggerStatements(enabled);
+}
+
 void InspectorDebuggerAgent::setPauseOnExceptions(ErrorString& errorString, const String& stringPauseState)
 {
     JSC::Debugger::PauseOnExceptionsState pauseState;

Modified: releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/inspector/agents/InspectorDebuggerAgent.h (255938 => 255939)


--- releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/inspector/agents/InspectorDebuggerAgent.h	2020-02-06 15:11:05 UTC (rev 255938)
+++ releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/inspector/agents/InspectorDebuggerAgent.h	2020-02-06 15:11:17 UTC (rev 255939)
@@ -80,6 +80,7 @@
     void searchInContent(ErrorString&, const String& scriptID, const String& query, const bool* optionalCaseSensitive, const bool* optionalIsRegex, RefPtr<JSON::ArrayOf<Protocol::GenericTypes::SearchMatch>>&) final;
     void getScriptSource(ErrorString&, const String& scriptID, String* scriptSource) final;
     void getFunctionDetails(ErrorString&, const String& functionId, RefPtr<Protocol::Debugger::FunctionDetails>&) final;
+    void setPauseOnDebuggerStatements(ErrorString&, bool enabled) final;
     void setPauseOnExceptions(ErrorString&, const String& pauseState) final;
     void setPauseOnAssertions(ErrorString&, bool enabled) final;
     void setPauseOnMicrotasks(ErrorString&, bool enabled) final;

Modified: releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/inspector/protocol/Debugger.json (255938 => 255939)


--- releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/inspector/protocol/Debugger.json	2020-02-06 15:11:05 UTC (rev 255938)
+++ releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/inspector/protocol/Debugger.json	2020-02-06 15:11:17 UTC (rev 255939)
@@ -249,6 +249,13 @@
             ]
         },
         {
+            "name": "setPauseOnDebuggerStatements",
+            "description": "Control whether the debugger pauses execution before `debugger` statements.",
+            "parameters": [
+                { "name": "enabled", "type": "boolean" }
+            ]
+        },
+        {
             "name": "setPauseOnExceptions",
             "description": "Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions or no exceptions. Initial pause on exceptions state is <code>none</code>.",
             "parameters": [

Modified: releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/interpreter/Interpreter.cpp (255938 => 255939)


--- releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/interpreter/Interpreter.cpp	2020-02-06 15:11:05 UTC (rev 255938)
+++ releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/interpreter/Interpreter.cpp	2020-02-06 15:11:17 UTC (rev 255939)
@@ -1252,8 +1252,8 @@
         case DidExecuteProgram:
             debugger->didExecuteProgram(callFrame);
             break;
-        case DidReachBreakpoint:
-            debugger->didReachBreakpoint(callFrame);
+        case DidReachDebuggerStatement:
+            debugger->didReachDebuggerStatement(callFrame);
             break;
     }
     scope.assertNoException();
@@ -1275,8 +1275,8 @@
     case JSC::DidEnterCallFrame:
         out.print("DidEnterCallFrame");
         return;
-    case JSC::DidReachBreakpoint:
-        out.print("DidReachBreakpoint");
+    case JSC::DidReachDebuggerStatement:
+        out.print("DidReachDebuggerStatement");
         return;
     case JSC::WillLeaveCallFrame:
         out.print("WillLeaveCallFrame");

Modified: releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/interpreter/Interpreter.h (255938 => 255939)


--- releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/interpreter/Interpreter.h	2020-02-06 15:11:05 UTC (rev 255938)
+++ releases/WebKitGTK/webkit-2.28/Source/_javascript_Core/interpreter/Interpreter.h	2020-02-06 15:11:17 UTC (rev 255939)
@@ -67,7 +67,7 @@
         WillExecuteProgram,
         DidExecuteProgram,
         DidEnterCallFrame,
-        DidReachBreakpoint,
+        DidReachDebuggerStatement,
         WillLeaveCallFrame,
         WillExecuteStatement,
         WillExecuteExpression,

Modified: releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI/ChangeLog (255938 => 255939)


--- releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI/ChangeLog	2020-02-06 15:11:05 UTC (rev 255938)
+++ releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI/ChangeLog	2020-02-06 15:11:17 UTC (rev 255939)
@@ -1,3 +1,28 @@
+2020-02-05  Devin Rousso  <[email protected]>
+
+        Web Inspector: Sources: add a special breakpoint for controlling whether `debugger` statements pause
+        https://bugs.webkit.org/show_bug.cgi?id=206818
+
+        Reviewed by Timothy Hatcher.
+
+        * UserInterface/Controllers/DebuggerManager.js:
+        (WI.DebuggerManager):
+        (WI.DebuggerManager.prototype.async initializeTarget):
+        (WI.DebuggerManager.prototype.get debuggerStatementsBreakpoint): Added.
+        (WI.DebuggerManager.prototype.isBreakpointRemovable):
+        (WI.DebuggerManager.prototype._breakpointDisabledStateDidChange):
+
+        * UserInterface/Views/SourcesNavigationSidebarPanel.js:
+        (WI.SourcesNavigationSidebarPanel):
+        (WI.SourcesNavigationSidebarPanel.prototype._insertDebuggerTreeElement):
+        (WI.SourcesNavigationSidebarPanel.prototype._addBreakpoint):
+
+        * UserInterface/Views/BreakpointTreeElement.css:
+        (.breakpoint-debugger-statement-icon .icon): Added.
+        * UserInterface/Images/DebuggerStatement.svg: Added.
+
+        * Localizations/en.lproj/localizedStrings.js:
+
 2020-02-05  Nikita Vasilyev  <[email protected]>
 
         Web Inspector: Bezier editor popover should be strictly LTR

Modified: releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js (255938 => 255939)


--- releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js	2020-02-06 15:11:05 UTC (rev 255938)
+++ releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js	2020-02-06 15:11:17 UTC (rev 255939)
@@ -368,6 +368,7 @@
 localizedStrings["Date"] = "Date";
 localizedStrings["Debug: "] = "Debug: ";
 localizedStrings["Debugger Statement"] = "Debugger Statement";
+localizedStrings["Debugger Statements"] = "Debugger Statements";
 localizedStrings["Debugger disabled during Audit"] = "Debugger disabled during Audit";
 localizedStrings["Debugger disabled during Timeline recording"] = "Debugger disabled during Timeline recording";
 localizedStrings["Debugging:"] = "Debugging:";

Modified: releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js (255938 => 255939)


--- releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js	2020-02-06 15:11:05 UTC (rev 255938)
+++ releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js	2020-02-06 15:11:17 UTC (rev 255939)
@@ -55,6 +55,12 @@
 
         const specialBreakpointLocation = new WI.SourceCodeLocation(null, Infinity, Infinity);
 
+        this._debuggerStatementsBreakpointEnabledSetting = new WI.Setting("break-on-debugger-statements", true);
+        this._debuggerStatementsBreakpoint = new WI.Breakpoint(specialBreakpointLocation, {
+            disabled: !this._debuggerStatementsBreakpointEnabledSetting.value,
+        });
+        this._debuggerStatementsBreakpoint.resolved = true;
+
         this._allExceptionsBreakpointEnabledSetting = new WI.Setting("break-on-all-exceptions", false);
         this._allExceptionsBreakpoint = new WI.Breakpoint(specialBreakpointLocation, {
             disabled: !this._allExceptionsBreakpointEnabledSetting.value,
@@ -147,6 +153,11 @@
         // Initialize global state.
         target.DebuggerAgent.enable();
         target.DebuggerAgent.setBreakpointsActive(this._breakpointsEnabledSetting.value);
+
+        // COMPATIBILITY (iOS 13.1): Debugger.setPauseOnDebuggerStatements did not exist yet.
+        if (target.hasCommand("Debugger.setPauseOnDebuggerStatements"))
+            target.DebuggerAgent.setPauseOnDebuggerStatements(!this._debuggerStatementsBreakpoint.disabled);
+
         target.DebuggerAgent.setPauseOnExceptions(this._breakOnExceptionsState);
 
         // COMPATIBILITY (iOS 10): DebuggerAgent.setPauseOnAssertions did not exist yet.
@@ -288,6 +299,7 @@
         return targetData;
     }
 
+    get debuggerStatementsBreakpoint() { return this._debuggerStatementsBreakpoint; }
     get allExceptionsBreakpoint() { return this._allExceptionsBreakpoint; }
     get uncaughtExceptionsBreakpoint() { return this._uncaughtExceptionsBreakpoint; }
     get assertionFailuresBreakpoint() { return this._assertionFailuresBreakpoint; }
@@ -337,7 +349,8 @@
 
     isBreakpointRemovable(breakpoint)
     {
-        return breakpoint !== this._allExceptionsBreakpoint
+        return breakpoint !== this._debuggerStatementsBreakpoint
+            && breakpoint !== this._allExceptionsBreakpoint
             && breakpoint !== this._uncaughtExceptionsBreakpoint;
     }
 
@@ -1160,6 +1173,14 @@
     {
         let breakpoint = event.target;
         switch (breakpoint) {
+        case this._debuggerStatementsBreakpoint:
+            if (!breakpoint.disabled && !this.breakpointsDisabledTemporarily)
+                this.breakpointsEnabled = true;
+            this._debuggerStatementsBreakpointEnabledSetting.value = !breakpoint.disabled;
+            for (let target of WI.targets)
+                target.DebuggerAgent.setPauseOnDebuggerStatements(!breakpoint.disabled);
+            return;
+
         case this._allExceptionsBreakpoint:
             if (!breakpoint.disabled && !this.breakpointsDisabledTemporarily)
                 this.breakpointsEnabled = true;

Added: releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI/UserInterface/Images/DebuggerStatement.svg (0 => 255939)


--- releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI/UserInterface/Images/DebuggerStatement.svg	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI/UserInterface/Images/DebuggerStatement.svg	2020-02-06 15:11:17 UTC (rev 255939)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright © 2013 Apple Inc. All rights reserved. -->
+<svg xmlns="http://www.w3.org/2000/svg" id="root" version="1.1" viewBox="0 0 16 16">
+    <path fill="rgb(148, 183, 219)" d="M 13 1 L 3 1 C 1.898438 1 1 1.898438 1 3 L 1 13 C 1 14.101562 1.898438 15 3 15 L 13 15 C 14.101562 15 15 14.101562 15 13 L 15 3 C 15 1.898438 14.101562 1 13 1 Z"/>
+    <path fill="rgb(106, 136, 170)" d="M 13 1 L 3 1 C 1.898438 1 1 1.898438 1 3 L 1 13 C 1 14.101562 1.898438 15 3 15 L 13 15 C 14.101562 15 15 14.101562 15 13 L 15 3 C 15 1.898438 14.101562 1 13 1 M 13 2 C 13.550781 2 14 2.449219 14 3 L 14 13 C 14 13.550781 13.550781 14 13 14 L 3 14 C 2.449219 14 2 13.550781 2 13 L 2 3 C 2 2.449219 2.449219 2 3 2 L 13 2"/>
+    <path fill="rgb(113, 146, 184)" d="M 4.445312 12.742188 C 3.890625 12.742188 3.445312 12.292969 3.445312 11.742188 L 3.445312 3.792969 C 3.445312 3.242188 3.890625 2.792969 4.445312 2.792969 L 7.867188 2.792969 C 9.367188 2.792969 10.554688 3.222656 11.402344 4.0625 C 12.25 4.910156 12.679688 6.101562 12.679688 7.601562 C 12.679688 9.171875 12.234375 10.429688 11.359375 11.347656 C 10.472656 12.273438 9.246094 12.742188 7.71875 12.742188 L 4.445312 12.742188 M 7.335938 9.613281 C 8.1875 9.613281 8.449219 9.324219 8.535156 9.226562 C 8.789062 8.941406 8.921875 8.414062 8.921875 7.699219 C 8.921875 7.140625 8.8125 6.703125 8.578125 6.363281 C 8.457031 6.183594 8.328125 6.070312 8.1875 6.011719 C 8.0625 5.964844 7.761719 5.882812 7.097656 5.882812 C 7.097656 6.960938 7.097656 8.539062 7.097656 9.613281 C 7.171875 9.613281 7.335938 9.613281 7.335938 9.613281"/>
+    <path fill="white" d="M 4.445312 11.742188 L 4.445312 3.792969 L 7.867188 3.792969 C 9.097656 3.792969 10.039062 4.121094 10.695312 4.773438 C 11.351562 5.425781 11.679688 6.371094 11.679688 7.601562 C 11.679688 8.910156 11.332031 9.929688 10.636719 10.65625 C 9.941406 11.378906 8.96875 11.742188 7.71875 11.742188 Z M 6.097656 10.613281 L 7.332031 10.613281 C 8.203125 10.613281 8.851562 10.375 9.28125 9.890625 C 9.707031 9.410156 9.921875 8.679688 9.921875 7.699219 C 9.921875 6.9375 9.75 6.308594 9.40625 5.800781 C 9.171875 5.453125 8.886719 5.214844 8.554688 5.082031 C 8.21875 4.949219 7.734375 4.882812 7.097656 4.882812 L 6.097656 4.882812 Z"/>
+</svg>

Modified: releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI/UserInterface/Views/BreakpointTreeElement.css (255938 => 255939)


--- releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI/UserInterface/Views/BreakpointTreeElement.css	2020-02-06 15:11:05 UTC (rev 255938)
+++ releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI/UserInterface/Views/BreakpointTreeElement.css	2020-02-06 15:11:17 UTC (rev 255939)
@@ -63,6 +63,10 @@
     font-style: italic;
 }
 
+.breakpoint-debugger-statement-icon .icon {
+    content: url(../Images/DebuggerStatement.svg);
+}
+
 .breakpoint-exception-icon .icon {
     content: url(../Images/Exception.svg);
 }

Modified: releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI/UserInterface/Views/SourcesNavigationSidebarPanel.js (255938 => 255939)


--- releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI/UserInterface/Views/SourcesNavigationSidebarPanel.js	2020-02-06 15:11:05 UTC (rev 255938)
+++ releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI/UserInterface/Views/SourcesNavigationSidebarPanel.js	2020-02-06 15:11:17 UTC (rev 255939)
@@ -331,6 +331,10 @@
             }, this);
         }
 
+        // COMPATIBILITY (iOS 13.1): Debugger.setPauseOnDebuggerStatements did not exist yet.
+        if (InspectorBackend.hasCommand("Debugger.setPauseOnDebuggerStatements"))
+            WI.debuggerManager.addBreakpoint(WI.debuggerManager.debuggerStatementsBreakpoint);
+
         WI.debuggerManager.addBreakpoint(WI.debuggerManager.allExceptionsBreakpoint);
         WI.debuggerManager.addBreakpoint(WI.debuggerManager.uncaughtExceptionsBreakpoint);
 
@@ -1093,6 +1097,7 @@
     {
         let comparator = (a, b) => {
             const rankFunctions = [
+                (treeElement) => treeElement.representedObject === WI.debuggerManager.debuggerStatementsBreakpoint,
                 (treeElement) => treeElement.representedObject === WI.debuggerManager.allExceptionsBreakpoint,
                 (treeElement) => treeElement.representedObject === WI.debuggerManager.uncaughtExceptionsBreakpoint,
                 (treeElement) => treeElement.representedObject === WI.debuggerManager.assertionFailuresBreakpoint,
@@ -1163,7 +1168,10 @@
             return domNodeTreeElement;
         };
 
-        if (breakpoint === WI.debuggerManager.allExceptionsBreakpoint) {
+        if (breakpoint === WI.debuggerManager.debuggerStatementsBreakpoint) {
+            options.className = "breakpoint-debugger-statement-icon";
+            options.title = WI.UIString("Debugger Statements");
+        } else if (breakpoint === WI.debuggerManager.allExceptionsBreakpoint) {
             options.className = "breakpoint-exception-icon";
             options.title = WI.repeatedUIString.allExceptions();
         } else if (breakpoint === WI.debuggerManager.uncaughtExceptionsBreakpoint) {
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to