Ship Magisk like GOLDEN; KernelSU optional recycle only; parallel to sunfish-a16-rom standby.
7.3 KiB
Feature Specification: Call recording unlock + FLAG_SECURE override
Feature Branch: 008-call-rec-flag-secure
Created: 2026-09-16
Status: Draft
Input: Deliver constitution items 008 and 009 together as native ROM
features with two Developer Options toggles (global only). Call recording =
disable region/country restrictions via AXP GOLDEN / EXTENDROM native
extendrom_call_recording DO gate. FLAG_SECURE = optional global allow
screenshots/capture of secure windows (native frameworks + DO). Pattern
matches 005 DO style. No LSPosed/Zygisk/Magisk runtime. LAB only.
Design: docs/008-009-design.md
Absorbs roadmap
| # | Theme | In this feature |
|---|---|---|
| 008 | Unrestricted call recording (region) | Yes |
| 009 | FLAG_SECURE override | Yes — global only |
User Scenarios & Testing (mandatory)
User Story 1 - Call recording region unlock toggle (Priority: P1)
As a LAB/daily-driver user, I can enable Disable call recording restrictions under Developer Options. When ON, the Dialer no longer blocks recording solely because of country/region rules. When OFF, stock LOS restrictions apply.
Why this priority: Core 008 value; small surface; matches EXTENDROM/AXP
intent without porting full AXP recording UX.
Independent Test: Toggle setting; settings get secure extendrom_call_recording; attempt call recording on LAB Dialer with
toggle on vs off.
Acceptance Scenarios:
- Given a build with this feature on LAB, When Developer Options is opened, Then a switch for disabling call-recording region restrictions is visible (with a short legal responsibility summary).
- Given the switch is OFF (default), When Dialer evaluates recording eligibility, Then stock country/region rules apply.
- Given the switch is ON, When the user records a call with the system Dialer, Then recording is not refused solely due to region / country policy, and a recording artifact is produced.
- Given Developer Options is disabled globally, When that happens,
Then
extendrom_call_recordingreturns to0.
User Story 2 - Global FLAG_SECURE / screenshot override (Priority: P1)
As a LAB/daily-driver user, I can enable Allow screenshots of secure
windows under Developer Options. When ON, screenshots and screen capture
work even if apps set FLAG_SECURE. When OFF, Android’s normal secure-window
behaviour applies. The override is global (all apps).
Why this priority: Constitution 009 project requirement; same DO pattern
as spoofing.
Independent Test: App or screen that sets FLAG_SECURE; capture with
toggle OFF (expect fail) and ON (expect success);
settings get secure disable_secure_windows.
Acceptance Scenarios:
- Given a build with this feature on LAB, When Developer Options is opened, Then a switch for secure-window screenshot override is visible.
- Given the switch is OFF (default), When the user tries to screenshot
a
FLAG_SECUREwindow, Then capture is blocked as on stock. - Given the switch is ON, When the user screenshots or screen-records that same window, Then capture succeeds.
- Given Developer Options is disabled globally, When that happens,
Then
disable_secure_windowsreturns to0.
User Story 3 - Native, attributable packaging (Priority: P2)
As a maintainer, both behaviours ship in the bacon/ROM tree via
vendor/sunfish-a16 patches (idempotent apply), sourced from EXTENDROM /
AXP GOLDEN call-rec (and native FLAG_SECURE work), without Magisk modules.
Why this priority: Constitution: native ROM, attributable, reversible.
Independent Test: Patch script dry-run; tree markers; no Magisk zip in artifacts required for the feature to work after flash.
Acceptance Scenarios:
- Given a clean LOS tree after
repo sync, When the apply script runs, Then it is idempotent and records source attribution. - Given a flashed LAB image, When Magisk is not installed, Then both toggles still function.
Edge Cases
- Dialer path renamed on A16 → re-locate gate; do not assume A11 overlay paths.
- Call recording legal in some jurisdictions only → UI must warn; feature does not claim legality.
- Some capture paths (DRM / hardware buffers) may still block — document if a specific path remains blocked after toggle ON.
userbuilds: follow same policy as005for whether DO toggles are available (document decision in plan if it differs fromuserdebugLAB).
Requirements (mandatory)
Functional Requirements
- FR-001: System MUST expose Developer Options switch Disable call
recording restrictions backed by
Settings.Secure.extendrom_call_recording∈ {0,1}, default0. - FR-002: When that setting is
1, Dialer MUST NOT deny call recording solely due to country/region restriction logic. - FR-003: When that setting is
0, Dialer MUST use stock restriction behaviour. - FR-004: System MUST expose Developer Options switch Allow screenshots
of secure windows backed by
Settings.Secure.disable_secure_windows(DO:allow_flag_secure_override) ∈ {0,1}, default0. - FR-005: When that setting is
1, system screenshot and screen-capture paths MUST allow capture of windows that setFLAG_SECURE(global). - FR-006: When that setting is
0,FLAG_SECUREMUST behave as stock. - FR-007: Both settings MUST reset to
0when Developer Options is turned off (same pattern as EXTENDROM /005). - FR-008: Implementation MUST NOT require Magisk, LSPosed, or Zygisk at runtime.
- FR-009: Patches MUST be attributable (EXTENDROM/
er.shF_CALLREC for call-rec; native frameworks for FLAG_SECURE) and apply viavendor/sunfish-a16/patches/…. - FR-010: Validation MUST be LAB-only (
11231JEC207477).
Key Entities
- SecureSetting:
extendrom_call_recording,disable_secure_windows. - DeveloperOptionsController: preference controllers writing those settings.
- DialerRecordingPolicy: country/region gate gated by call-rec setting.
- SecureCapturePolicy: framework capture/
FLAG_SECUREenforcement gated by screenshot setting.
Success Criteria (mandatory)
- SC-001: On LAB, both settings read
0after fresh boot / DO off. - SC-002: With call-rec toggle ON, operator completes a recorded call and
stores evidence under
/srv/rom/artifacts/008-…/call-rec/. - SC-003: With screenshot toggle ON, operator captures a previously secure
window; evidence under
/srv/rom/artifacts/008-…/flag-secure/. - SC-004: Toggles OFF restore stock deny behaviour for the same tests.
- SC-005: Feature works on a Magisk-free LAB image.
Assumptions
- LOS 23.2 Dialer still has an identifiable country/region recording gate (or equivalent CarrierConfig path) that can be overridden.
- “Screenshot” includes the system screenshot gesture and common screen-record entry points; exotic DRM paths may remain blocked (document).
- FLAG_SECURE is global only (not planned: per-app lists).
007remains incomplete; this feature does not depend on KernelSU.
Out of scope
- AXP full call-recording automation UI.
- Per-app FLAG_SECURE lists.
- Relocked AVB / signed release (
011). - Banking PASS (
007).