<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<p id="target">This tests that arrow keys navigate through a paragraph as expected when in caret browsing mode, also with shift and ctrl modifiers.</p>
<p id="description"></p>
<div id="console"></div>
<script>
description("This tests that keys navigation through a paragraph work as expected when in caret mode, also with shift and ctrl modifiers.");

if (window.testRunner && window.internals) {
  internals.settings.setCaretBrowsingEnabled(true);
  testRunner.dumpAsText();
  internals.settings.setEditingBehavior('mac');

  var target = document.getElementById("target");
  target.focus();
  window.getSelection().setPosition(target.childNodes.item(0), 15);

  // check left/right arrows
  shouldBe("getSelection().baseOffset", "15");
  eventSender.keyDown("rightArrow");
  shouldBe("getSelection().baseOffset", "16");
  eventSender.keyDown("leftArrow");
  shouldBe("getSelection().baseOffset", "15");

  // check left/right arrows + Shift
  eventSender.keyDown("rightArrow", ["shiftKey"]);
  eventSender.keyDown("rightArrow", ["shiftKey"]);
  eventSender.keyDown("rightArrow", ["shiftKey"]);
  shouldBe("getSelection().baseOffset", "15");
  shouldBe("getSelection().extentOffset", "18");
  eventSender.keyDown("leftArrow", ["shiftKey"]);
  shouldBe("getSelection().baseOffset", "15");
  shouldBe("getSelection().extentOffset", "17");

  // check left/right arrows + Ctrl/Option
  var modifierForWordGranularity = navigator.platform == "MacIntel" ? "altKey" : "ctrlKey";
  eventSender.keyDown("rightArrow", [modifierForWordGranularity]);
  shouldBe("getSelection().baseOffset", "21");
  eventSender.keyDown("leftArrow", [modifierForWordGranularity]);
  shouldBe("getSelection().baseOffset", "16");

  // check left/right arrows + Ctrl/Option + Shift
  eventSender.keyDown("rightArrow", [modifierForWordGranularity, "shiftKey"]);
  eventSender.keyDown("rightArrow", [modifierForWordGranularity, "shiftKey"]);
  shouldBe("getSelection().baseOffset", "16");
  shouldBe("getSelection().extentOffset", "26");
  eventSender.keyDown("leftArrow", [modifierForWordGranularity]);
  shouldBe("getSelection().baseOffset", "22");
}

</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
