<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>HTML Test: input with dir=auto, script assigns to start with L</title>
    <link rel="match" href="dir_auto-input-script-L-ref.html" />
    <link rel="author" title="Matitiahu Allouche" href="mailto:matitiahu.allouche@google.com" />
    <link rel="author" title="Oren Roth" href="mailto:oren.roth@gmail.com" />
    <link rel="author" title="Shai Berger" href="mailto:shai@platonix.com" />
    <link rel="author" title="HTML5 bidi test WG" href="mailto:html5bidi@googlegroups.com" />
    <link rel="help" href="https://html.spec.whatwg.org/multipage/#the-dir-attribute" />
    <meta name="assert" content="
      When dir='auto', the direction of an input element is set according to
      the first strong character of its value.
      In this test, it is the Latin letter A, thus the direction must be
      resolved as LTR." />
    <style>
      input, textarea {
        font-size:1em;
      }
      body {
        font-size:2em;
      }
      .test, .ref {
        border: medium solid gray;
        width: 400px;
        margin: 20px;
      }
      .comments {
        display: none;
      }
    </style>
  </head>
  <body>
    <div class="instructions"><p>Test passes if the two boxes below look exactly the same.</p></div>
    <div class="comments">
      Key to entities used below:
      &#x05D0; - The Hebrew letter Alef (strongly RTL).
      &#x05D1; - The Hebrew letter Bet (strongly RTL).
      &#x05D2; - The Hebrew letter Gimel (strongly RTL).
      This test makes sure that the direction is set correctly for an input whose value is set
      dynamically by script.
    </div>
    <div id="test" class="test">
      <script>
        window.onload = function() {
          var test = document.getElementById('test');
          var inputs = test.getElementsByTagName('input');
          for (var i = 0; i != inputs.length; i++) {
            inputs[i].value = 'ABC\u05D0\u05D1\u05D2.';
          }
        }
      </script>
      <div dir="ltr">
        <input type="text" dir="auto" value="&#x05D0;" />
      </div>
      <div dir="rtl">
        <input type="text" dir="auto" value="&#x05D0;" />
      </div>
    </div>
    <div class="ref">
      <div dir="ltr">
        <input type="text" dir="ltr" value="ABC&#x05D0;&#x05D1;&#x05D2;." />
      </div>
      <div dir="rtl">
        <input type="text" dir="ltr" value="ABC&#x05D0;&#x05D1;&#x05D2;." />
      </div>
    </div>
  </body>
</html>
