Everything written this session that has not been through the device: rounds 43 to 48 (each patch adversarially verified, 43's transient-notice expectation fixed), a partial round 49, the pipeline scripts, the Android Auto design and the icon comparison mock. Also the two harness changes that were never A/B'd — adaptive waits, which may only shorten a declared wait and never lengthen it, and a ship that runs the mock walk and the deploy at the same time. The A/B and its 255-step baseline are in handoff/tools; main stays at what the phone has actually walked.
17 lines
800 B
Plaintext
17 lines
800 B
Plaintext
/** What a pick may offer and what it may copy. The filter is the document
|
|
* sheet's own, comma-separated ("audio/mpeg,audio/flac"); blank offers
|
|
* every type. `maxCopyBytes` is how big a document may be COPIED into the
|
|
* app's cache when it has no path of its own on this phone — 0 refuses the
|
|
* copy, which is what an audio-sized pick wants. Both are plain scalars on
|
|
* purpose: String / Int / Boolean is what the other plugins' args prove. */
|
|
@InvokeArg
|
|
class PickFileArgs {
|
|
var mimeTypes: String? = null
|
|
var maxCopyBytes: Int = 0
|
|
}
|
|
|
|
/** The copy walked past what the caller allowed. Its own exception, so the
|
|
* partial file can be deleted and the caller told in megabytes rather than
|
|
* in "could not be read". */
|
|
private class TooBig(message: String) : Exception(message)
|