Bug 1976779 - rsclientcerts: make each backend responsible for rate-limiting calls to find_objects r=jschanck
Before this patch, `rsclientcerts::manager` would rate-limit calls to
`find_objects` to once every 3 seconds because the underlying operation can be
time-consuming (in particular, on macOS and Windows, if there are many
certificates/keys available). On Android, keys aren't available until the user
selects one, which means that if a call to `find_objects` happened before the
selection prompt was shown (which is what happens) and the user chose one in
less than 3 seconds, the backend wouldn't search again, thus making it seem like
no keys were available, which would cause Firefox to not send a client
certificate. This patch makes each backend implementation responsible for this
rate-limiting, because only they know if it's appropriate to do so (in particular,
on Android, `find_objects` doesn't have the same performance concern as
on macOS and Windows because rather than searching for certificates and
keys, it asks `ClientAuthCertificateManager` for the cached list of certificates
and keys that have already been approved for use by the user).
Differential Revision: https://phabricator.services.mozilla.com/D257065
<!DOCTYPE html><metacharset="UTF-8"><title>CSS Backgrounds Test: box-shadow in 3 sub-tests with inset and Npx Mpx</title><linkrel="author"title="Gérard Talbot"href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"><linkrel="help"href="https://www.w3.org/TR/css-backgrounds-3/#the-box-shadow"><linkrel="match"href="reference/box-shadow-042-ref.html"><!-- <shadow> = inset? && <length>{2,4} && <color>? A comma-separated pair of numbers in curly braces {A,B} indicates that the preceding type, word, or group occurs at least A and at most B times. A question mark (?) indicates that the preceding type, word, or group is optional (occurs zero or one times). The components of each <shadow> are interpreted as follows: 1st <length> Specifies the horizontal offset of the shadow. A positive value draws a shadow that is offset to the right of the box, a negative length to the left. 2nd <length> Specifies the vertical offset of the shadow. A positive value offsets the shadow down, a negative one up. 4th <length> Specifies the spread distance. Positive values cause the shadow to expand in all directions by the specified radius. Negative values cause the shadow to contract. --><style>div{background-color:rgba(0,0,255,0.5);/* semi-transparent blue */border:blackdouble18px;height:36px;margin-bottom:36px;width:36px;}/* inset, Npx Mpx, zero spread */div#sub-test10{box-shadow:inset18px12pxrgba(255,165,0,0.5);/* semi-transparent orange */}/* inset, Npx Mpx, positive spread */div#sub-test11{box-shadow:inset18px12px0px12pxrgba(255,165,0,0.5);/* semi-transparent orange */}/* inset, Npx Mpx, negative spread */div#sub-test12{box-shadow:inset18px12px0px-6pxrgba(255,165,0,0.5);/* semi-transparent orange */}</style><h3>With inset and Npx Mpx: 18px 12px</h3><divid="sub-test10"></div><divid="sub-test11"></div><divid="sub-test12"></div>