testing/web-platform/tests/css/css-backgrounds/box-shadow-radius-001.html
author Dana Keeler <dkeeler@mozilla.com>
Sat, 12 Jul 2025 15:57:37 +0000 (6 hours ago)
changeset 796342 3a804f83c6b282c3c6b6ed9b67bacbc277bfb300
parent 561415 cb84be4005ce68695a8f2e8bc81e7ab6f12432cb
permissions -rw-r--r--
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>
<title>Box Shadow Border Radius (Inset)</title>
<link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact">
<link rel="help" href="https://www.w3.org/TR/css-backgrounds-3/#shadow-shape">
<link rel="match" href="box-shadow-radius-001-ref.html">

<style>
  body > div {
    /* Isolate tests from each other */
    position: relative;
    width: 100px;
    height: 100px;
    float: left;
  }
  div > div {
    position: absolute;
    box-sizing: border-box;
    /* opacity: 0.7; /* uncomment this line for debugging */
  }

  .floor > .test {
    color: silver;
  }
  .trap > .test {
    color: red;
  }
  .test {
    width: 60px;
    height: 60px;
    top: 20px;
    left: 20px;
  }

  .floor > .ref {
    border: 8px red;
    border-style: solid none none solid;
    top: 21px;
    left: 21px;
    width: 59px;
    height: 59px;
  }
  .trap > .ref {
    border: 31px silver;
    border-style: solid none none solid;
    width: 81px;
    height: 81px;
  }

  /* Keep tests consistent by offset - spread = 10
     Trap radius = 32px + shadow radius (round up)
     Floor radius = 8px + shadow radius (round down) */

  .once > .test {
    border-top-left-radius: 10px;
    box-shadow: 20px 20px 0 -10px inset;
    /* shadow radius = 20px */
  }
  .once.floor > .ref {
    border-top-left-radius: 28px;
  }
  .once.trap > .ref {
    border-top-left-radius: 52px;
  }

  .twice > .test {
    border-top-left-radius: 10px;
    box-shadow: 15px 15px 0 -5px inset;
    /* shadow radius = 15 */
  }
  .twice.floor > .ref {
    border-top-left-radius: 23px;
  }
  .twice.trap > .ref {
    border-top-left-radius: 47px;
  }

  .half > .test {
    border-top-left-radius: 8px;
    box-shadow: 26px 26px 0 -16px inset;
    /* shadow radius = 21px */
  }
  .half.floor > .ref {
    border-top-left-radius: 29px;
  }
  .half.trap > .ref {
    border-top-left-radius: 53px;
  }

  .fourth > .test {
    border-top-left-radius: 5px;
    box-shadow: 30px 30px 0 -20px inset;
    /* shadow radius = 14.45 */
  }
  .fourth.floor > .ref {
    border-top-left-radius: 22px;
  }
  .fourth.trap > .ref {
    border-top-left-radius: 47px;
  }

  .eighth > .test {
    border-top-left-radius: 2px;
    box-shadow: 26px 26px 0 -16px inset;
    /* shadow radius = 5.28 */
  }
  .eighth.floor > .ref {
    border-top-left-radius: 12px;
  }
  .eighth.trap > .ref {
    border-top-left-radius: 38px;
  }

</style>

<p>Test passes if there is no red.

<div class="once floor">
  <div class="ref"></div>
  <div class="test"></div>
</div>
<div class="once trap">
  <div class="test"></div>
  <div class="ref"></div>
</div>

<div class="twice floor">
  <div class="ref"></div>
  <div class="test"></div>
</div>
<div class="twice trap">
  <div class="test"></div>
  <div class="ref"></div>
</div>

<div class="half floor">
  <div class="ref"></div>
  <div class="test"></div>
</div>
<div class="half trap">
  <div class="test"></div>
  <div class="ref"></div>
</div>

<div class="fourth floor">
  <div class="ref"></div>
  <div class="test"></div>
</div>
<div class="fourth trap">
  <div class="test"></div>
  <div class="ref"></div>
</div>

<div class="eighth floor">
  <div class="ref"></div>
  <div class="test"></div>
</div>
<div class="eighth trap">
  <div class="test"></div>
  <div class="ref"></div>
</div>