<!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', 'forward', '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 forward word`);

selection_test(
  '<div contenteditable dir="ltr">\n|abc \u05D0\u05D1\u05D2 xyz\n</div>',
  selection => selection.modify('extend', 'forward', '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 forward word`);

selection_test(
  '<div contenteditable dir="ltr">\na|bc \u05D0\u05D1\u05D2 xyz\n</div>',
  selection => selection.modify('extend', 'forward', '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 forward word`);

selection_test(
  '<div contenteditable dir="ltr">\nab|c \u05D0\u05D1\u05D2 xyz\n</div>',
  selection => selection.modify('extend', 'forward', '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 forward word`);

selection_test(
  '<div contenteditable dir="ltr">\nabc| \u05D0\u05D1\u05D2 xyz\n</div>',
  selection => selection.modify('extend', 'forward', '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 forward word`);

selection_test(
  '<div contenteditable dir="ltr">\nabc |\u05D0\u05D1\u05D2 xyz\n</div>',
  selection => selection.modify('extend', 'forward', '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 forward word`);

selection_test(
  '<div contenteditable dir="ltr">\nabc \u05D0|\u05D1\u05D2 xyz\n</div>',
  selection => selection.modify('extend', 'forward', '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 forward word`);

selection_test(
  '<div contenteditable dir="ltr">\nabc \u05D0\u05D1|\u05D2 xyz\n</div>',
  selection => selection.modify('extend', 'forward', '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 forward word`);

selection_test(
  '<div contenteditable dir="ltr">\nabc \u05D0\u05D1\u05D2| xyz\n</div>',
  selection => selection.modify('extend', 'forward', '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 forward word`);

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

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

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

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