-
Lina Cambridge authored
There's some confusion in `GeckoEngineSession` about redirect flags. The `VISIT_REDIRECT_SOURCE` and `VISIT_REDIRECT_SOURCE_PERMANENT` flags that we get from GeckoView's history delegate are for the redirect _source_, not the visit type. They indicate if the URL passed to `onVisited` is redirecting _to_ another URL, most likely because the server returned an HTTP 3xy status code with a `Location` header. Rust Places decides whether to mark the URL as hidden based on these flags. `VISIT_REDIRECT_{PERMANENT, TEMPORARY}`, however, indicate if the URL passed to `onVisited` is the _target_ of a redirect (in other words, the page that's _in_ the `Location` header). These get translated into `VisitType` flags, which Rust Places stores as the visit transition type. These two flags don't affect whether a URL is hidden. Note that, in a redirect chain, the middle links are both sources and targets. For example, in "mozilla.org" -> "www.mozilla.org" -> "www.mozilla.org/en-US", "www.mozilla.org" is both a redirect target (since "mozilla.org" redirected to it), and a source (it redirected to "www.mozilla.org/en-US"). See mozilla-mobile/fenix#3526.