<!DOCTYPE html>
<html>
 <head>
  <title>CSS Test: getComputedStyle on blocks with auto margins</title>
  <link rel="author" title="Brad Werth" href="mailto:bwerth@mozilla.com">
  <link rel="help" href="https://drafts.csswg.org/cssom/#dom-window-getcomputedstyle" />
  <meta name="assert" content="getComputedStyle produces pixel values for margin: auto blocks">
  <script src="/resources/testharness.js" type="text/javascript"></script>
  <script src="/resources/testharnessreport.js" type="text/javascript"></script>
  <style>
    x {
      display: block;
      position: relative;
      background: grey;
      width: 60px;
      height: 10px;
    }
    y {
      display: block;
      background: blue;
      width: 40px;
      height: 10px;
      margin: auto;
    }

    #absolute {
      position: absolute;
      left: 0;
      right: 0;
    }
    #relative {
      position: relative;
    }
  </style>
 </head>
 <body>
 <div id="log"></div>
 <x><y id="absolute"></y></x>
 <x><y id="relative"></y></x>
 <script type="text/javascript">
   let idsToTest = [
     "absolute",
     "relative",
   ];

   for (let id of idsToTest) {
     let elem = document.getElementById(id);
     let elemStyle = window.getComputedStyle(elem);

     // positioned element's auto margins should be resolved to 10px.
     test(function() {
       assert_equals(elemStyle.getPropertyValue("margin-left"), "10px");
       assert_equals(elemStyle.getPropertyValue("margin-right"), "10px");
     }, id + "_computed_margins");

     // positioned element should have a left and right of 0px (as authored).
     test(function() {
       assert_equals(elemStyle.getPropertyValue("left"), "0px");
       assert_equals(elemStyle.getPropertyValue("right"), "0px");
     }, id + "_computed_left_and_right");
   }
 </script>
 </body>
</html>
