tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

select-ask-for-reset.html (2657B)


      1 <!doctype html>
      2 <meta charset=utf-8>
      3 <title>HTMLSelectElement ask for reset</title>
      4 <link rel="author" title="Dongie Agnir" href="dongie.agnir@gmail.com">
      5 <script src="/resources/testharness.js"></script>
      6 <script src="/resources/testharnessreport.js"></script>
      7 <div id=log></div>
      8 <script>
      9 test(function() {
     10  var select = makeSelect(5);
     11 
     12  select.children[4].selected = true;
     13  unselectedExcept(select, 4);
     14 
     15  select.children[4].remove();
     16  unselectedExcept(select, 0); // remove selected node, should default to first
     17 
     18  select.children[3].selected = true;
     19 
     20  select.children[0].remove();
     21  unselectedExcept(select, 2); // last node still selected
     22 
     23  select.size = 2;
     24  select.children[2].remove();
     25 
     26  unselectedExcept(select, null);
     27 }, "ask for reset on node remove, non multiple.");
     28 
     29 test(function() {
     30  var select = makeSelect(3);
     31  select.children[1].selected = true;
     32 
     33  // insert selected option, should remain selected
     34  var opt4 = document.createElement("option");
     35  opt4.selected = true;
     36  select.appendChild(opt4);
     37  unselectedExcept(select, 3);
     38 
     39  // insert unselected, 3 should remain selected
     40  var opt5 = document.createElement("option");
     41  select.appendChild(opt5);
     42  unselectedExcept(select, 3);
     43 }, "ask for reset on node insert, non multiple.");
     44 
     45 test(function() {
     46  var select = makeSelect(3);
     47 
     48  var options = select.children;
     49 
     50  // select options from first to last
     51  for (var i = 0; i < options.length; ++i) {
     52    options[i].selected = true;
     53    unselectedExcept(select, i);
     54  }
     55 
     56  // select options from last to first
     57  for (var i = options.length - 1; i >= 0; --i) {
     58    options[i].selected = true;
     59    unselectedExcept(select, i);
     60  }
     61 
     62  options[2].selected = true;
     63  options[2].selected = false; // none selected
     64  unselectedExcept(select, 0);
     65 
     66  // disable first so option at index 1 is first eligible
     67  options[0].disabled = true;
     68  options[2].selected = true;
     69  options[2].selected = false; // none selected
     70  unselectedExcept(select, 1);
     71 
     72  select.size = 2;
     73  options[1].selected = false;
     74  unselectedExcept(select, null); // size > 1 so should not default to any
     75 }, "change selectedness of option, non multiple.");
     76 
     77 
     78 function unselectedExcept(sel, opt) {
     79  for (var i = 0; i < sel.children.length; ++i) {
     80    if (i != opt) {
     81      assert_false(sel.children[i].selected, "option should not be selected.");
     82    }
     83    if (opt != null) {
     84      assert_true(sel.children[opt].selected, "option should be selected.");
     85    }
     86  }
     87 }
     88 
     89 function makeSelect(n) {
     90  var sel = document.createElement("select");
     91  for (var i = 0; i < n; ++i) {
     92    opt = document.createElement("option");
     93    sel.appendChild(opt);
     94  }
     95  return sel;
     96 }
     97 </script>