<!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">|\nabc \u05D0\u05D1\u05D2 xyz\n</div>',
  selection => selection.modify('extend', 'right', 'word'),
  behavior === 'mac'
      ? '<div contenteditable dir="ltr">\n^abc| \u05D0\u05D1\u05D2 xyz\n</div>'
      : '<div contenteditable dir="ltr">\n^abc |\u05D0\u05D1\u05D2 xyz\n</div>',
  `${behavior} 10-0 ltr right word`);

selection_test(
  '<div contenteditable dir="ltr">\n|abc \u05D0\u05D1\u05D2 xyz\n</div>',
  selection => selection.modify('extend', 'right', 'word'),
  behavior === 'mac'
      ? '<div contenteditable dir="ltr">\n^abc| \u05D0\u05D1\u05D2 xyz\n</div>'
      : '<div contenteditable dir="ltr">\n^abc |\u05D0\u05D1\u05D2 xyz\n</div>',
  `${behavior} 10-1 ltr right word`);

selection_test(
  '<div contenteditable dir="ltr">\na|bc \u05D0\u05D1\u05D2 xyz\n</div>',
  selection => selection.modify('extend', 'right', 'word'),
  behavior === 'mac'
      ? '<div contenteditable dir="ltr">\na^bc| \u05D0\u05D1\u05D2 xyz\n</div>'
      : '<div contenteditable dir="ltr">\na^bc |\u05D0\u05D1\u05D2 xyz\n</div>',
  `${behavior} 10-2 ltr right word`);

selection_test(
  '<div contenteditable dir="ltr">\nab|c \u05D0\u05D1\u05D2 xyz\n</div>',
  selection => selection.modify('extend', 'right', 'word'),
  behavior === 'mac'
      ? '<div contenteditable dir="ltr">\nab^c| \u05D0\u05D1\u05D2 xyz\n</div>'
      : '<div contenteditable dir="ltr">\nab^c |\u05D0\u05D1\u05D2 xyz\n</div>',
  `${behavior} 10-3 ltr right word`);

selection_test(
  '<div contenteditable dir="ltr">\nabc| \u05D0\u05D1\u05D2 xyz\n</div>',
  selection => selection.modify('extend', 'right', 'word'),
  behavior === 'mac'
      ? '<div contenteditable dir="ltr">\nabc^ \u05D0\u05D1\u05D2| xyz\n</div>'
      : '<div contenteditable dir="ltr">\nabc^ |\u05D0\u05D1\u05D2 xyz\n</div>',
  `${behavior} 10-4 ltr right word`);

selection_test(
  '<div contenteditable dir="ltr">\nabc |\u05D0\u05D1\u05D2 xyz\n</div>',
  selection => selection.modify('extend', 'right', 'word'),
  behavior === 'mac'
      ? '<div contenteditable dir="ltr">\nabc ^\u05D0\u05D1\u05D2| xyz\n</div>'
      : '<div contenteditable dir="ltr">\nabc ^\u05D0\u05D1\u05D2 |xyz\n</div>',
  `${behavior} 10-5 ltr right word`);

selection_test(
  '<div contenteditable dir="ltr">\nabc \u05D0|\u05D1\u05D2 xyz\n</div>',
  selection => selection.modify('extend', 'right', 'word'),
  behavior === 'mac'
      ? '<div contenteditable dir="ltr">\nabc \u05D0^\u05D1\u05D2| xyz\n</div>'
      : '<div contenteditable dir="ltr">\nabc \u05D0^\u05D1\u05D2 |xyz\n</div>',
  `${behavior} 10-6 ltr right word`);

selection_test(
  '<div contenteditable dir="ltr">\nabc \u05D0\u05D1|\u05D2 xyz\n</div>',
  selection => selection.modify('extend', 'right', 'word'),
  behavior === 'mac'
      ? '<div contenteditable dir="ltr">\nabc \u05D0\u05D1^\u05D2| xyz\n</div>'
      : '<div contenteditable dir="ltr">\nabc \u05D0\u05D1^\u05D2 |xyz\n</div>',
  `${behavior} 10-7 ltr right word`);

selection_test(
  '<div contenteditable dir="ltr">\nabc \u05D0\u05D1\u05D2| xyz\n</div>',
  selection => selection.modify('extend', 'right', 'word'),
  behavior === 'mac'
      ? '<div contenteditable dir="ltr">\nabc \u05D0\u05D1\u05D2^ xyz|\n</div>'
      : '<div contenteditable dir="ltr">\nabc \u05D0\u05D1\u05D2^ |xyz\n</div>',
  `${behavior} 10-8 ltr right word`);

selection_test(
  '<div contenteditable dir="ltr">\nabc \u05D0\u05D1\u05D2 |xyz\n</div>',
  selection => selection.modify('extend', 'right', 'word'),
  '<div contenteditable dir="ltr">\nabc \u05D0\u05D1\u05D2 ^xyz|\n</div>',
  `${behavior} 10-9 ltr right word`);

selection_test(
  '<div contenteditable dir="ltr">\nabc \u05D0\u05D1\u05D2 x|yz\n</div>',
  selection => selection.modify('extend', 'right', 'word'),
  '<div contenteditable dir="ltr">\nabc \u05D0\u05D1\u05D2 x^yz|\n</div>',
  `${behavior} 10-10 ltr right word`);

selection_test(
  '<div contenteditable dir="ltr">\nabc \u05D0\u05D1\u05D2 xy|z\n</div>',
  selection => selection.modify('extend', 'right', 'word'),
  '<div contenteditable dir="ltr">\nabc \u05D0\u05D1\u05D2 xy^z|\n</div>',
  `${behavior} 10-11 ltr right word`);

selection_test(
  '<div contenteditable dir="ltr">\nabc \u05D0\u05D1\u05D2 xyz|\n</div>',
  selection => selection.modify('extend', 'right', 'word'),
  '<div contenteditable dir="ltr">\nabc \u05D0\u05D1\u05D2 xyz|\n</div>',
  `${behavior} 10-12 ltr right word`);
}
</script>
