<!DOCTYPE html>

  <meta charset="UTF-8">

  <title>CSS Pseudo-Elements Test: active selection and vertical writing-modes</title>

  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
  <link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-styling">
  <link rel="match" href="reference/active-selection-031-ref.html">

  <meta content="" name="flags">

  <style>
  div > div
    {
      color: red;
      float: left;
      font-size: 32px;
      margin-left: 16px;
    }

  div.vrl
    {
      writing-mode: vertical-rl;
    }

  div.vlr
    {
      writing-mode: vertical-lr;
    }

  div.mixed
    {
      text-orientation: mixed;
    }

  div.sideways
    {
      text-orientation: sideways;
    }

  div.upright
    {
      text-orientation: upright;
    }

  div::selection
    {
      background-color: yellow;
      color: green;
    }
  </style>

  <script>
  function startTest()
  {
    var targetRange = document.createRange();
    /* We first create an empty range */

    targetRange.selectNodeContents(document.getElementById("test"));
    /* Then we set the range boundaries to the contents of div#test */

    window.getSelection().addRange(targetRange);
    /* Finally, we now add such range of content into a selection */
  }
  </script>

  <body onload="startTest();">

  <p>Test passes if each glyph of the 6 "Selected Text" is green and if there is <strong>no red</strong>.

  <div id="test">

    <div class="vrl mixed">Selected Text</div>

    <div class="vrl sideways">Selected Text</div>

    <div class="vrl upright">Selected Text</div>

    <div class="vlr mixed">Selected Text</div>

    <div class="vlr sideways">Selected Text</div>

    <div class="vlr upright">Selected Text</div>

  </div>
