<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
const isMac = navigator.platform.indexOf('Mac') === 0;
const kBehaviors = window.internals ? ['mac', 'win'] : isMac ? ['mac'] : ['win'];
for (const behavior of kBehaviors) {
  if (window.internals) {
    internals.settings.setEditingBehavior(behavior);
    internals.settings.setSelectTrailingWhitespaceEnabled(behavior !== 'mac');
  }

selection_test(
  '<div contenteditable dir="ltr">|Lorem <span style="direction: ltr">ipsum dolor sit</span> amet</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">|Lorem <span style="direction: ltr">ipsum dolor sit</span> amet</div>',
  `${behavior} 3-0 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">L|orem <span style="direction: ltr">ipsum dolor sit</span> amet</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">|L^orem <span style="direction: ltr">ipsum dolor sit</span> amet</div>',
  `${behavior} 3-1 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lo|rem <span style="direction: ltr">ipsum dolor sit</span> amet</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">|Lo^rem <span style="direction: ltr">ipsum dolor sit</span> amet</div>',
  `${behavior} 3-2 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lor|em <span style="direction: ltr">ipsum dolor sit</span> amet</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">|Lor^em <span style="direction: ltr">ipsum dolor sit</span> amet</div>',
  `${behavior} 3-3 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lore|m <span style="direction: ltr">ipsum dolor sit</span> amet</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">|Lore^m <span style="direction: ltr">ipsum dolor sit</span> amet</div>',
  `${behavior} 3-4 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lorem| <span style="direction: ltr">ipsum dolor sit</span> amet</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">|Lorem^ <span style="direction: ltr">ipsum dolor sit</span> amet</div>',
  `${behavior} 3-5 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">|ipsum dolor sit</span> amet</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">|Lorem ^<span style="direction: ltr">ipsum dolor sit</span> amet</div>',
  `${behavior} 3-6 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">i|psum dolor sit</span> amet</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">|i^psum dolor sit</span> amet</div>',
  `${behavior} 3-7 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ip|sum dolor sit</span> amet</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">|ip^sum dolor sit</span> amet</div>',
  `${behavior} 3-8 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ips|um dolor sit</span> amet</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">|ips^um dolor sit</span> amet</div>',
  `${behavior} 3-9 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsu|m dolor sit</span> amet</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">|ipsu^m dolor sit</span> amet</div>',
  `${behavior} 3-10 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum| dolor sit</span> amet</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">|ipsum^ dolor sit</span> amet</div>',
  `${behavior} 3-11 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum |dolor sit</span> amet</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">|ipsum ^dolor sit</span> amet</div>',
  `${behavior} 3-12 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum d|olor sit</span> amet</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum |d^olor sit</span> amet</div>',
  `${behavior} 3-13 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum do|lor sit</span> amet</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum |do^lor sit</span> amet</div>',
  `${behavior} 3-14 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum dol|or sit</span> amet</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum |dol^or sit</span> amet</div>',
  `${behavior} 3-15 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum dolo|r sit</span> amet</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum |dolo^r sit</span> amet</div>',
  `${behavior} 3-16 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum dolor| sit</span> amet</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum |dolor^ sit</span> amet</div>',
  `${behavior} 3-17 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum dolor |sit</span> amet</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum |dolor ^sit</span> amet</div>',
  `${behavior} 3-18 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum dolor s|it</span> amet</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum dolor |s^it</span> amet</div>',
  `${behavior} 3-19 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum dolor si|t</span> amet</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum dolor |si^t</span> amet</div>',
  `${behavior} 3-20 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum dolor sit</span>| amet</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum dolor |sit^</span> amet</div>',
  `${behavior} 3-21 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum dolor sit</span> |amet</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum dolor |sit</span> ^amet</div>',
  `${behavior} 3-22 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum dolor sit</span> a|met</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum dolor sit</span> |a^met</div>',
  `${behavior} 3-23 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum dolor sit</span> am|et</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum dolor sit</span> |am^et</div>',
  `${behavior} 3-24 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum dolor sit</span> ame|t</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum dolor sit</span> |ame^t</div>',
  `${behavior} 3-25 ltr backward word`);

selection_test(
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum dolor sit</span> amet|</div>',
  selection => selection.modify('extend', 'backward', 'word'),
  '<div contenteditable dir="ltr">Lorem <span style="direction: ltr">ipsum dolor sit</span> |amet^</div>',
  `${behavior} 3-26 ltr backward word`);
}
</script>
