blob: f2e1ad1a483ad6eeca0443f2e5075eee73c0d577 [file] [log] [blame]
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
[
'<div contenteditable>',
'<div>Line|<span> 1<div><div>Line 2</div></div></span></div>',
'</div>',
],
'indent',
[
'<div contenteditable>',
'<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">',
'<div>Line|<span> 1</span></div></blockquote><div><span><div><div>Line 2',
'</div></div></span></div>',
'</div>',
],
'Indent content enclosed inside inline separated by nested divs');
selection_test(
[
'<div contenteditable>',
'<div>Line|<span> 1<div>Line 2</div></span></div>',
'</div>',
],
'indent',
[
'<div contenteditable>',
'<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">',
'<div>Line|<span> 1</span></div></blockquote><div><span><div>Line 2',
'</div></span></div>',
'</div>',
],
'Indent content enclosed inside inline separated by div');
selection_test(
[
'<div contenteditable>',
'<div>Line|<span> 1<br/>Line 2</span></div>',
'</div>',
],
'indent',
[
'<div contenteditable>',
'<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">',
'<div>Line|<span> 1<br></span></div></blockquote><div><span>Line 2',
'</span></div>',
'</div>',
],
'Indent content enclosed inside inline separated by br');
selection_test(
[
'<div contenteditable>',
'<div>Line|<span> 1<div><i>Line 2</i></div></span></div>',
'</div>',
],
'indent',
[
'<div contenteditable>',
'<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">',
'<div>Line|<span> 1</span></div></blockquote><div><span><div><i>Line 2',
'</i></div></span></div>',
'</div>',
],
'Indent content enclosed inside inline separated by div and inline elements');
selection_test(
[
'<div contenteditable>',
'<div>Line|<span> 1<br/><i>Line 2</i></span></div>',
'</div>',
],
'indent',
[
'<div contenteditable>',
'<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">',
'<div>Line|<span> 1<br></span></div></blockquote><div><span><i>Line 2',
'</i></span></div>',
'</div>',
],
'Indent content enclosed inside inline separated by br and inline elements');
selection_test(
[
'<div contenteditable>',
'<div>Line|<span> 1<br/><input value="text"></span></div>',
'</div>',
],
'indent',
[
'<div contenteditable>',
'<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">',
'<div>Line|<span> 1<br></span></div></blockquote><div><span>',
'<input value="text"></span></div>',
'</div>',
],
'Indent content enclosed inside inline separated by br and input element');
selection_test(
[
'<div contenteditable>',
'<div>Line|<span> 1<br/><textarea></textarea></span></div>',
'</div>',
],
'indent',
[
'<div contenteditable>',
'<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">',
'<div>Line|<span> 1<br></span></div></blockquote><div><span>',
'<textarea></textarea></span></div>',
'</div>',
],
'Indent content enclosed inside inline separated by br and textarea element');
selection_test(
[
'<div contenteditable>',
'<div>Line|<span> 1<br/><i><textarea></textarea></i></span></div>',
'</div>',
],
'indent',
[
'<div contenteditable>',
'<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">',
'<div>Line|<span> 1<br></span></div></blockquote><div><span>',
'<i><textarea></textarea></i></span></div>',
'</div>',
],
'Indent content enclosed inside inline separated by br and textarea element wrapped inside inline');
// The below test is from a clusterfuzz test and the expected result is not accurate, but it avoids the crash.
// Perhaps we should modify/rewrite the indent command to properly handle this weird selection cases.
selection_test(
[
'<pre contenteditable>',
'^hello',
'<svg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">',
'<foreignObject x="20" y="20" width="80" height="80">',
'Test|',
'</foreignObject>',
'</svg>',
'</pre>',
],
'indent',
[
'<pre contenteditable>',
'<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">^hello',
'<svg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">',
'<foreignobject height="80" width="80" x="20" y="20">Test|</foreignobject>',
'</svg></blockquote>',
'</pre>',
],
'Indent content spanning across different selection contexts');
</script>