<!DOCTYPE html>
<html>
<head>
<style>
.editing {
    border: 2px solid red;
    font-size: 18px;
}
.explanation { 
    border: 2px solid blue;
    padding: 12px;
    font-size: 18px;
    margin-bottom: 24px;
}
.scenario { margin-bottom: 16px;}
.scenario:first-line { font-weight: bold; margin-bottom: 16px;}
.expected-results:first-line { font-weight: bold }
</style>
<script src="../editing.js"></script>
<script src="../../resources/dump-as-markup.js"></script>
<script>

Markup.waitUntilDone();

function editingTest() {
    Markup.description(document.getElementsByClassName('explanation')[0].textContent);
    for (var i = 0; i < 10; i++)
        extendSelectionForwardByLineCommand();
    Markup.dump('root', 'Before cut');
    cutCommand();
    Markup.dump('root', 'After cut');
    pasteCommand();
    Markup.dump('root', 'After paste (this should be identical to before cut)');
    Markup.notifyDone();
}

</script>
<title>Editing Test</title> 
</head> 
<body onload="runEditingTest()">
<div class="explanation">
<div class="scenario">
Tests: 
<br>
Bug fix for <a href="rdar://problem/4180820">&lt;rdar://problem/4180820&gt;</a> Erroneous spacing between lines introduced on paste
</div>
Applying block styles, like text-align, used to wrap paragraphs that needed block style changes in clones of other paragraphs in the document.  This would almost always introduce unwanted styles.
</div>
<div contenteditable id="root" style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space;">
<div id="test" class="editing">
<center>
<p>
This is an <b>interactive</b> documentation site, so please help out by posting any useful information that you've had to search out.<br>
(Adding to this <a href="db.cgi?Wiki_Is_So_Easy">wiki is so easy</a>, you can't screw it up). See <a href="db.cgi?Wiki_Reference">Wiki Reference</a> for text formatting syntax.<br>
Info for setting up your own wiki is at <a href="db.cgi?About_Howto.Apple.Com">about howto.apple.com</a>.<br>
Check out a cool wiki editor application that helps in wiki generation: <a href="db.cgi?Wikinator">Wikinator</a>
<p>
Start browsing the topics below, or use the search field at the bottom of every page.
</center>
</div>
</div>
</body>
</html>
