#!/usr/bin/env python3
from pathlib import Path
import xml.etree.ElementTree as ET
root=Path(__file__).resolve().parents[1]
for p in root.rglob("*.xml"): ET.parse(p)
m=(root/"java/com/android/dialer/app/calllog/CallHistoryRetentionManager.java").read_text()
j=(root/"java/com/android/dialer/app/calllog/CallHistoryRetentionJobService.java").read_text()
f=(root/"java/com/android/dialer/app/settings/CallHistorySettingsFragment.java").read_text()
x=(root/"java/com/android/dialer/app/res/xml/call_history_settings.xml").read_text()
manifest=(root/"java/com/android/dialer/app/AndroidManifest.xml").read_text()
receiver=(root/"java/com/android/dialer/app/calllog/CallLogReceiver.java").read_text()
app=(root/"java/com/android/dialer/binary/common/DialerApplication.java").read_text()
system=(root/"java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java").read_text()
checks={
"off default": 'public static final String OFF = "off"' in m,
"24h/2d/4d/7d/14d": all(s in m for s in ['"24h"','"2d"','"4d"','"7d"','"14d"']),
"rolling age deletion": 'Calls.DATE + " < ?"' in m,
"system call-log source": "Calls.CONTENT_URI" in m,
"periodic job": ".setPeriodic(PERIOD_MILLIS)" in m,
"persisted scheduling": ".setPersisted(true)" in m,
"boot catch-up": "runCleanupAsync" in receiver,
"app start schedule": "restoreSchedule(this)" in app,
"setting immediate cleanup": "applySetting" in f and "runCleanupAsync" in m,
"custom privacy cleanup dialog": "showRetentionDialog" in f and "lemenzo_settings_section_privacy_data" in f,
"off cancels job": "cancel(context)" in m,
"permission safe": "catch (SecurityException e)" in m,
"job protected": "android.permission.BIND_JOB_SERVICE" in manifest,
"system call-log observer refreshes annotated DB":
    "registerContentObserver(CallLog.Calls.CONTENT_URI_WITH_VOICEMAIL" in system,
}
bad=[k for k,v in checks.items() if not v]
if bad: raise SystemExit("FAIL: "+", ".join(bad))
print("LEMENZO PHONE CALL-HISTORY RETENTION VALIDATION: PASS")
for k in checks: print(" -",k)
