<script>
if (window.layoutTestController)
     layoutTestController.dumpEditingCallbacks();
</script>
<p>This tests pasting a Mail blockquote at the start of a paragraph.  Blockquoting should be stripped.</p>
<div id="test1" contenteditable="true">x</div>

<script type="text/javascript" src="../editing.js"></script>
<script>
var e = document.getElementById("test1");
var s = window.getSelection();

setSelectionCommand(e, 0, e, 0);
insertHTMLCommand("<blockquote type='cite'><div>Blockquoted Text</div></blockquote>");
</script>

<p>This tests pasting text into a Mail blockquote.  The last bit of content in the incoming fragment should be merged with the paragraph after the position being pasted into.</p>
<div id="test2" contenteditable="true"><blockquote type='cite'><div>Blockquoted Text</div></blockquote></div>

<script>
var e = document.getElementById("test2");
var s = window.getSelection();

setSelectionCommand(e, 0, e, 0);
moveSelectionForwardByWordCommand();
insertHTMLCommand("<div>foo</div><div>bar</div>");
</script>