Drop the raw and online loaders - #581
Merged
Merged
Conversation
odrcore 6.5 renders svg and xml itself, which is the whole of what RawLoader existed for, so the routing around the core goes with it - along with nameSays, which only guarded that routing. OnlineLoader goes too. It was the last thing that sent a document off the device, to use.opendocument.app or to google's and microsoft's viewers, and what it still reached was rtf and WordPerfect. Those are the engine's to learn. A file the core cannot open now says so instead of offering an upload. That leaves MetadataLoader and CoreLoader, so the FileLoader base, LoaderService and LoaderServiceQueue stay: metadata still has to cache, name and type a file before the core sees it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CAJTcj3dfmn1yC5TpqdCeb
andiwand
marked this pull request as ready for review
August 10, 2026 19:34
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ba61904d12
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
Saved instance state outlives an app update, and DocumentFragment restores a parcelled Result from it. One written by the shipped version can name RAW or ONLINE, which valueOf raises IllegalArgumentException on - inside the getParcelable meant to bring the document back, where no caller can catch it. CORE is the right answer for both: what those two loaded is the core's now. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CAJTcj3dfmn1yC5TpqdCeb
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CAJTcj3dfmn1yC5TpqdCeb
andiwand
enabled auto-merge (squash)
August 10, 2026 19:51
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CAJTcj3dfmn1yC5TpqdCeb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps odrcore to 6.5.0 and takes the two loaders that routed around it with the bump.
RawLoader
It existed for exactly two formats — svg, which the WebView drew from the file, and xml, which the core named without a decoder. 6.5.0 renders both, so
LoaderServiceno longer has to ask anything before the core.nameSaysgoes with it: routing by filename was only ever there to guard that one decision, and the core identifies by content.OnlineLoader
The last thing in the app that sent a document off the device — to
use.opendocument.appfor conversion, or totransfer.opendocument.appand on to Google's or Microsoft's viewer. What it still reached was .rtf and WordPerfect; those are the engine's to learn. A file the core cannot open now gets the reopen bar and the contact dialog, which is already what a file it could name but not open got.Gone with it: the upload dialog and its strings in all 31 locales,
ProgressDialogFragment's upload mode, the third-party-viewer passthrough inPageView.shouldOverrideUrlLoading, and the TTS gate that existed because those viewers had no javascript bridge.What is left
Not just
CoreLoader—MetadataLoaderstays, and it is load-bearing: it caches the file, resolves the filename, mime type and extension every downstream decision reads, and keeps the recent-documents list and its uri grants. SoFileLoader,LoaderServiceandLoaderServiceQueuestay too.LoaderTypeis down toCOREandMETADATA.INTERNETstays in the manifest — ads and the consent SDK need it in the lite build — but no document reaches the network any more.Checks
assembleDebug(all three flavors),lintProDebug,testProDebugUnitTestandassembleProDebugAndroidTestall pass. They were run against 6.4.0, since odrcore 6.5.0 is not published yet — Maven Central has 6.4.0 as the latest. This cannot build green until the release is cut, andCoreLoaderTest.xmlIsSupportedis the assertion that will fail until then.🤖 Generated with Claude Code