<!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 dir="ltr">ipsum dolor sit</span> amet</div>',
  selection => selection.modify('extend', 'right', 'word'),
  behavior === 'mac'
      ? '<div contenteditable dir="ltr">^Lorem| <span dir="ltr">ipsum dolor sit</span> amet</div>'
      : '<div contenteditable dir="ltr">^Lorem |<span dir="ltr">ipsum dolor sit</span> amet</div>',
  `${behavior} 4-0 ltr right word`);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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