Ensure we emit a new position after seeing an outline caller

Bug: b/263357015
Bug: b/293630963
Bug: b/294904638
Change-Id: I10d31404dcc88fec51cb80981b9b62ba67f4a3d1
diff --git a/src/main/java/com/android/tools/r8/graph/DexDebugEventBuilder.java b/src/main/java/com/android/tools/r8/graph/DexDebugEventBuilder.java
index 399d2b7..200e8b4 100644
--- a/src/main/java/com/android/tools/r8/graph/DexDebugEventBuilder.java
+++ b/src/main/java/com/android/tools/r8/graph/DexDebugEventBuilder.java
@@ -258,9 +258,13 @@
         nextPosition.getCallerPosition() != previousPosition.getCallerPosition()
             || nextPosition.getMethod() != previousPosition.getMethod();
     boolean isOutline = nextPosition.isOutline();
-    boolean isOutlineCallee =
-        nextPosition.getOutlineCallee() != null && !nextPosition.getOutlinePositions().isEmpty();
-    if (isNewPosition || isOutline || isOutlineCallee) {
+    boolean isOutlineCallerWithInfo =
+        nextPosition.isOutlineCaller()
+            && nextPosition.getOutlineCallee() != null
+            && !nextPosition.getOutlinePositions().isEmpty();
+    boolean isNoLongerOutlineCaller =
+        previousPosition.isOutlineCaller() && !nextPosition.isOutlineCaller();
+    if (isNewPosition || isOutline || isOutlineCallerWithInfo || isNoLongerOutlineCaller) {
       events.add(factory.createPositionFrame(nextPosition));
     }
     addDefaultEventWithAdvancePcIfNecessary(lineDelta, pcDelta, events, factory);
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/outliner/OutlineMappingInformationTest.java b/src/test/java/com/android/tools/r8/ir/optimize/outliner/OutlineMappingInformationTest.java
index a51667e..8f8d723 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/outliner/OutlineMappingInformationTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/outliner/OutlineMappingInformationTest.java
@@ -95,14 +95,10 @@
               assertEquals(5, inspector.allClasses().size());
               assertEquals(expectedStackTrace, stackTrace);
             });
-    String proguardMap = compileResult.getProguardMap();
-
-    if (parameters.isDexRuntime()) {
-      // TODO(b/263357015, b/293630963): Outline information is not reset for new default events.
-      assertEquals(6, StringUtils.occurrences(proguardMap, "com.android.tools.r8.outlineCallsite"));
-    } else {
-      assertEquals(4, StringUtils.occurrences(proguardMap, "com.android.tools.r8.outlineCallsite"));
-    }
+    assertEquals(
+        4,
+        StringUtils.occurrences(
+            compileResult.getProguardMap(), "com.android.tools.r8.outlineCallsite"));
   }
 
   @NoHorizontalClassMerging