Skip to content

[DRO-2625] Prevent false SystemUI app exits - #158

Merged
RasulOs merged 1 commit into
mainfrom
fix/dro-2625-app-transitions
Aug 5, 2026
Merged

[DRO-2625] Prevent false SystemUI app exits#158
RasulOs merged 1 commit into
mainfrom
fix/dro-2625-app-transitions

Conversation

@RasulOs

@RasulOs RasulOs commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • validate app transitions only from confirmed active/focused TYPE_APPLICATION windows
  • keep foreground transition state separate from accessibility-event package/cache bookkeeping
  • preserve existing event names, payloads, trigger schemas, raw event handlers, and [Android] Non-focusable PopupWindow is visible but missing from the UIAutomator node tree #155 multi-root behavior
  • suppress notification-shade/SystemUI noise while retaining genuine app transitions such as Portal ↔ Settings, launcher, and PermissionController

Internal companion: https://github.com/droidrun/mobilerun-portal-internal/pull/78

Behavior

  • the first confirmed foreground app emits only APP_ENTERED
  • a genuine A → B transition emits one APP_EXITED, then one APP_ENTERED
  • repeated packages and Portal → SystemUI → Portal notification-shade sequences emit nothing
  • currentActivityName advances only with the same confirmed application-window evidence

Validation

Host:

  • focused resolver/tracker tests: 18 passed
  • :app:testDebugUnitTest: 551 tests; only the documented pre-existing SwitchTintResourceTest.trackTintSeparatesCheckedAndUncheckedStates failure
  • lintDebug, :app:assembleDebug, and git diff --check: passed

Android 16 / API 36:

  • instrumentation: 7/7 passed
  • UI-driven trigger smoke: all 12 assertions passed
  • notification shade held open across a clock update: zero APP_* events and zero app-trigger runs
  • Portal ↔ Settings and Portal ↔ PermissionController: one exact transition pair in each direction
  • notification debounce/removal and legacy duplicate suppression: passed
  • sanitized crash/ANR/accessibility/listener/WebSocket log gate: clean

Android 15 / API 35 (16 KB pages):

  • instrumentation: 7/7 passed
  • the same 12 trigger assertions and genuine-transition checks passed
  • sanitized log and cleanup gates: clean

Both device sessions were local-only with a blank launch token; cloud state was disconnected with no stored token or active task.

Related to DRO-2625

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

🧪 Test Build Ready

APK for PR #158 is available for testing.

Download APK from workflow run

Artifacts expire after 30 days.

@RasulOs
RasulOs merged commit 895f0b3 into main Aug 5, 2026
5 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant