Tungsten classifies a response as a download from three signals: the
sniffed type (from the body bytes), the declared
Content-Type, and the Content-Disposition. Each row below serves a
body that sniffs as a chosen type via /classify, with declared headers that may
agree or disagree. The valuable cases are the contradictions.
How to test: click open ↗ to load each case as a top-level
navigation through the proxy, then observe whether the browser downloads (or
shows a tungsten download/block interstitial) versus renders inline. Top-level
navigation is RequestKind::Document, which is the path is_download
governs. fetch()/XHR is classified as Resource and follows a different
path — see the XHR Download tile for that.
| # | Sniffed body | Declared Content-Type | Disposition | Expected (tungsten) | Open |
|---|