blob: 9792215e42937726f99038c4629eabb26fb09d97 [file] [log] [blame]
<!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;
function query_command_test(command, contents, expectedStates) {
const expectedState = expectedStates[isMac ? 'mac' : 'other'];
selection_test(
`<div contenteditable>${contents}</div>`,
selection => {
assert_equals(
selection.document.queryCommandState(command),
expectedState,
"State");
assert_equals(
selection.document.queryCommandValue(command),
expectedState.toString(),
"Value");
},
`<div contenteditable>${contents}</div>`,
`queryCommandState(${command}) returns ${expectedState} when selecting ${contents}`);
}
query_command_test(
'bold', '^hello|',
{mac: false, other: false});
query_command_test(
'bold', '^<i>hello</i>|',
{mac: false, other: false});
query_command_test(
'bold', '^<b>hello</b>|',
{mac: true, other: true});
query_command_test(
'bold', '^hello <b>world</b>|',
{mac: false, other: false});
query_command_test(
'bold', '^<b>hello</b> world|',
{mac: true, other: false});
query_command_test(
'bold', 'hello <b>^world</b> |Webkit',
{mac: true, other: false});
query_command_test(
'bold', '<b>hello</b> ^world| <b>WebKit</b>',
{mac: false, other: false});
query_command_test(
'bold', '<i>hello <b>^world</b> |WebKit</i>',
{mac: true, other: false});
query_command_test(
'bold', '<b>hello <i>^hello|</i> WebKit</b>',
{mac: true, other: true});
query_command_test(
'bold', '<b><div>hello <i>^hello|</i> WebKit</div></b>',
{mac: true, other: true});
query_command_test(
'bold', '^<b style="font-weight: normal;">hello</b>|',
{mac: false, other: false});
query_command_test(
'bold', '^<i style="font-weight: bold;">hello</i>|',
{mac: true, other: true});
query_command_test(
'bold', '^<b>hello</b> world <b>WebKit</b>|',
{mac: true, other: false});
query_command_test(
'bold', '^<b>hello</b><b> world</b>|',
{mac: true, other: true});
query_command_test(
'bold', '^<div><b>hello</b></div><p><b> WebKit</b></p>|',
{mac: true, other: true});
query_command_test(
'italic', '^hello|',
{mac: false, other: false});
query_command_test(
'italic', '^<b>hello</b>|',
{mac: false, other: false});
query_command_test(
'italic', '^<i>hello</i>|',
{mac: true, other: true});
query_command_test(
'italic', '^<i>hello</i> world|',
{mac: true, other: false});
query_command_test(
'italic', '^hello <i>world</i>|',
{mac: false, other: false});
query_command_test(
'italic', '^<i><div>hello world</div></i>|',
{mac: true, other: true});
query_command_test(
'italic',
'^<div style="font-style: italic">hello <span style="font-style: normal;">hello</span></div>|',
{mac: true, other: false});
query_command_test(
'subscript', '^hello|',
{mac: false, other: false});
query_command_test(
'subscript', '^<sup>hello</sup>|',
{mac: false, other: false});
query_command_test(
'subscript', '^<sub>hello</sub>|',
{mac: true, other: true});
query_command_test(
'subscript', '^<sub>hello</sub> world|',
{mac: true, other: false});
query_command_test(
'subscript', '^hello <sub>world</sub>|',
{mac: false, other: false});
query_command_test(
'subscript', '^<div style="vertical-align: sub;">hello world</div>|',
{mac: true, other: true});
query_command_test(
'subscript', 'hello <span style="vertical-align: sub;">^world</span> |WebKit',
{mac: true, other: false});
query_command_test(
'superscript', '^hello|',
{mac: false, other: false});
query_command_test(
'superscript', '^<sub>hello</sub>|',
{mac: false, other: false});
query_command_test(
'superscript', '^<sup>hello</sup>|',
{mac: true, other: true});
query_command_test(
'superscript', '^<sup>hello</sup> world|',
{mac: true, other: false});
query_command_test(
'superscript', '^hello <sup>world</sup>|',
{mac: false, other: false});
query_command_test(
'superscript',
'^<span style="vertical-align: super;">hello</span><span style="vertical-align: sub;">world</span>|',
{mac: true, other: false});
query_command_test(
'superscript', '^hello<span style="vertical-align: super;">world</span>|',
{mac: false, other: false});
query_command_test(
'underline', '^hello|',
{mac: false, other: false});
query_command_test(
'underline', '^<s>hello</s>|',
{mac: false, other: false});
query_command_test(
'underline', '^<u>hello</u>|',
{mac: true, other: true});
query_command_test(
'underline', '^<u>hello</u> world|',
{mac: true, other: false});
query_command_test(
'underline', '^hello <u>world</u>|',
{mac: false, other: false});
query_command_test(
'underline', '^<u><div>hello world</div></u>|',
{mac: true, other: true});
query_command_test(
'underline', '<u><s><div>hello ^world |WebKit</div></s></u>',
{mac: true, other: true});
query_command_test(
'underline', '<s><u>hello</u> ^world</s> |WebKit',
{mac: false, other: false});
query_command_test(
'underline', '<u><s>hello</s> ^world</u> |WebKit',
{mac: true, other: false});
query_command_test(
'underline', '<s>hello <u>^world|</u></s><u> WebKit</u>',
{mac: true, other: true});
query_command_test(
'strikeThrough', '^hello|',
{mac: false, other: false});
query_command_test(
'strikeThrough', '^<u>hello</u>|',
{mac: false, other: false});
query_command_test(
'strikeThrough', '^<s>hello</s>|',
{mac: true, other: true});
query_command_test(
'strikeThrough', '^<s>hello</s> world|',
{mac: true, other: false});
query_command_test(
'strikeThrough', '^hello <s>world</s>|',
{mac: false, other: false});
query_command_test(
'strikeThrough', '^<s><div>hello world</div></s>|',
{mac: true, other: true});
query_command_test(
'strikeThrough', '<s><u><div>hello ^world |WebKit</div></u></s>',
{mac: true, other: true});
query_command_test(
'strikeThrough', '<u><s>hello</s> ^world</u> |WebKit',
{mac: false, other: false});
query_command_test(
'strikeThrough', 'hello <s>^world |WebKit</s>',
{mac: true, other: true});
query_command_test(
'strikeThrough', 'hello^ <s>world |WebKit</s>',
{mac: false, other: false});
</script>