Skip to content

Convert chrome.py to LAVA @artifact_processor (multi-browser)#769

Merged
abrignoni merged 1 commit into
mainfrom
lava-batch-29
Jun 20, 2026
Merged

Convert chrome.py to LAVA @artifact_processor (multi-browser)#769
abrignoni merged 1 commit into
mainfrom
lava-batch-29

Conversation

@abrignoni

Copy link
Copy Markdown
Owner

Converts the core Chromium History parser to the LAVA @artifact_processor pattern, following the established multi-browser approach (per-browser HTML report + per-browser LAVA table + combined return with a Browser Name discriminator column).

Split the single old get_chrome into five decorated artifacts, one per report:

  • get_chrome → Web History
  • get_chromeWebVisits → Web Visits
  • get_chromeSearchTerms → Search Terms
  • get_chromeDownloads → Downloads (keeps the dynamic last_access_time/tab_url schema probes for older DB versions)
  • get_chromeKeywordSearchTerms → Keyword Search Terms

Timestamps: replaced all in-SQL datetime(col/1000000 + strftime('%s','1601-01-01'),'unixepoch') WebKit conversions with raw column selection + a Python _webkit_to_utc helper returning tz-aware UTC datetimes (anchored 1601-01-01 UTC, 0/NULL → ''); the relevant timestamp columns are marked datetime in LAVA.

get_browser_name is kept byte-for-byte identical (verified for Brave/Edge/Opera/Chrome/webview/Unknown), and the modules that import it (chromeDIPS, chromeAutofill, chromeBookmarks, etc.) still load.

Verified: byte-compile, all 5 functions decorated with 4-arg signature, return 3-tuples, output_types valid, loader resolves all, get_browser_name behavior preserved + importers load, pylint clean.

@abrignoni abrignoni merged commit 3a20176 into main Jun 20, 2026
1 check passed
@abrignoni abrignoni deleted the lava-batch-29 branch June 20, 2026 03:46
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