script: Add initial implementation of strikethrough command (#44410)

Part of #25005

Testing: WPT

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
This commit is contained in:
Tim van der Lippe
2026-04-22 11:23:05 +02:00
committed by GitHub
parent 7007dc4346
commit 6de7311014
11 changed files with 193 additions and 1286 deletions

View File

@@ -21,6 +21,7 @@ use crate::dom::execcommand::commands::delete::execute_delete_command;
use crate::dom::execcommand::commands::fontsize::{
execute_fontsize_command, font_size_loosely_equivalent, value_for_fontsize_command,
};
use crate::dom::execcommand::commands::strikethrough::execute_strikethrough_command;
use crate::dom::execcommand::commands::stylewithcss::execute_style_with_css_command;
use crate::dom::execcommand::commands::underline::execute_underline_command;
use crate::dom::html::htmlelement::HTMLElement;
@@ -372,6 +373,7 @@ impl CommandName {
},
CommandName::Delete => execute_delete_command(cx, document, selection),
CommandName::FontSize => execute_fontsize_command(cx, document, selection, value),
CommandName::Strikethrough => execute_strikethrough_command(cx, document, selection),
CommandName::StyleWithCss => execute_style_with_css_command(document, value),
CommandName::Underline => execute_underline_command(cx, document, selection),
_ => false,

View File

@@ -5,5 +5,6 @@
pub(crate) mod defaultparagraphseparator;
pub(crate) mod delete;
pub(crate) mod fontsize;
pub(crate) mod strikethrough;
pub(crate) mod stylewithcss;
pub(crate) mod underline;

View File

@@ -0,0 +1,25 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
use js::context::JSContext;
use crate::dom::document::Document;
use crate::dom::execcommand::basecommand::CommandName;
use crate::dom::execcommand::execcommands::DocumentExecCommandSupport;
use crate::dom::selection::Selection;
/// <https://w3c.github.io/editing/docs/execCommand/#the-strikethrough-command>
pub(crate) fn execute_strikethrough_command(
cx: &mut JSContext,
document: &Document,
selection: &Selection,
) -> bool {
// > If queryCommandState("strikethrough") returns true, set the selection's value to null.
// > Otherwise set the selection's value to "line-through". Either way, return true.
let value = Some("line-through".into())
.filter(|_| !document.command_state_for_command(cx, "strikethrough".into()));
selection.set_the_selection_value(cx, value, CommandName::Strikethrough, document);
true
}

View File

@@ -43,9 +43,15 @@ impl Element {
},
CommandName::Strikethrough => {
// Step 4. If command is "strikethrough", and element has a style attribute set, and that attribute sets "text-decoration":
// TODO
if let Some(value) = CssPropertyName::TextDecorationLine.value_set_for_style(self) {
// Step 4.1. If element's style attribute sets "text-decoration" to a value containing "line-through", return "line-through".
// Step 4.2. Return null.
return Some("line-through".into()).filter(|_| value.contains("line-through"));
}
// Step 5. If command is "strikethrough" and element is an s or strike element, return "line-through".
// TODO
if matches!(*self.local_name(), local_name!("s") | local_name!("strike")) {
return Some("line-through".into());
}
},
CommandName::Underline => {
// Step 6. If command is "underline", and element has a style attribute set, and that attribute sets "text-decoration":

View File

@@ -1322,7 +1322,18 @@ impl Node {
// and the effective command value of "strikethrough" for new parent is not "line-through",
// set the "text-decoration" property of new parent to "line-through".
CommandName::Strikethrough => {
// TODO
if new_value == "line-through" &&
new_parent
.upcast::<Node>()
.effective_command_value(&CommandName::Strikethrough)
.is_none_or(|value| value != "line-through")
{
CssPropertyName::TextDecoration.set_for_element(
cx,
new_parent_html_element,
new_value.clone(),
);
}
},
// Step 19. If command is "underline", and new value is "underline",
// and the effective command value of "underline" for new parent is not "underline",
@@ -2085,8 +2096,15 @@ impl Node {
// Step 6. If command is "strikethrough",
// and the "text-decoration" property of node or any of its ancestors has resolved value containing "line-through",
// return "line-through". Otherwise, return null.
// TODO
CommandName::Strikethrough => None,
CommandName::Strikethrough => Some("line-through".into()).filter(|_| {
self.inclusive_ancestors(ShadowIncluding::No).any(|node| {
node.downcast::<Element>()
.and_then(|element| {
CssPropertyName::TextDecorationLine.resolved_value_for_node(element)
})
.is_some_and(|property| property.contains("line-through"))
})
}),
// Step 7. If command is "underline",
// and the "text-decoration" property of node or any of its ancestors has resolved value containing "underline",
// return "underline". Otherwise, return null.

View File

@@ -120,6 +120,7 @@ impl Document {
"delete" => CommandName::Delete,
"defaultparagraphseparator" => CommandName::DefaultParagraphSeparator,
"fontsize" => CommandName::FontSize,
"strikethrough" => CommandName::Strikethrough,
"stylewithcss" => CommandName::StyleWithCss,
"underline" => CommandName::Underline,
_ => return None,

View File

@@ -77,12 +77,6 @@
[Command removeFormat, value "quasit": input event]
expected: FAIL
[Command strikeThrough, value "": input event]
expected: FAIL
[Command strikeThrough, value "quasit": input event]
expected: FAIL
[Command subscript, value "": input event]
expected: FAIL

View File

@@ -5,9 +5,6 @@
[In <input type="password">, execCommand("italic", false, null), a[b\]c): The command should be supported]
expected: FAIL
[In <input type="password">, execCommand("strikethrough", false, null), a[b\]c): The command should be supported]
expected: FAIL
[In <input type="password">, execCommand("superscript", false, null), a[b\]c): The command should be supported]
expected: FAIL
@@ -161,9 +158,6 @@
[In <input type="password"> in contenteditable, execCommand("italic", false, null), a[b\]c): The command should be supported]
expected: FAIL
[In <input type="password"> in contenteditable, execCommand("strikethrough", false, null), a[b\]c): The command should be supported]
expected: FAIL
[In <input type="password"> in contenteditable, execCommand("superscript", false, null), a[b\]c): The command should be supported]
expected: FAIL
@@ -425,6 +419,21 @@
[In <input type="password"> in contenteditable, execCommand("underline", false, null), a[b\]c): input.target should be undefined]
expected: FAIL
[In <input type="password"> in contenteditable, execCommand("strikethrough", false, null), a[b\]c): The command should not be enabled]
expected: FAIL
[In <input type="password"> in contenteditable, execCommand("strikethrough", false, null), a[b\]c): execCommand() should return false]
expected: FAIL
[In <input type="password"> in contenteditable, execCommand("strikethrough", false, null), a[b\]c): should not fire beforeinput event]
expected: FAIL
[In <input type="password"> in contenteditable, execCommand("strikethrough", false, null), a[b\]c): input.inputType should be undefined]
expected: FAIL
[In <input type="password"> in contenteditable, execCommand("strikethrough", false, null), a[b\]c): input.target should be undefined]
expected: FAIL
[exec-command-with-text-editor.tentative.html?type=text]
[In <input type="text">, execCommand("bold", false, bold), a[b\]c): The command should be supported]
@@ -433,9 +442,6 @@
[In <input type="text">, execCommand("italic", false, null), a[b\]c): The command should be supported]
expected: FAIL
[In <input type="text">, execCommand("strikethrough", false, null), a[b\]c): The command should be supported]
expected: FAIL
[In <input type="text">, execCommand("superscript", false, null), a[b\]c): The command should be supported]
expected: FAIL
@@ -589,9 +595,6 @@
[In <input type="text"> in contenteditable, execCommand("italic", false, null), a[b\]c): The command should be supported]
expected: FAIL
[In <input type="text"> in contenteditable, execCommand("strikethrough", false, null), a[b\]c): The command should be supported]
expected: FAIL
[In <input type="text"> in contenteditable, execCommand("superscript", false, null), a[b\]c): The command should be supported]
expected: FAIL
@@ -853,6 +856,21 @@
[In <input type="text"> in contenteditable, execCommand("underline", false, null), a[b\]c): input.target should be undefined]
expected: FAIL
[In <input type="text"> in contenteditable, execCommand("strikethrough", false, null), a[b\]c): The command should not be enabled]
expected: FAIL
[In <input type="text"> in contenteditable, execCommand("strikethrough", false, null), a[b\]c): execCommand() should return false]
expected: FAIL
[In <input type="text"> in contenteditable, execCommand("strikethrough", false, null), a[b\]c): should not fire beforeinput event]
expected: FAIL
[In <input type="text"> in contenteditable, execCommand("strikethrough", false, null), a[b\]c): input.inputType should be undefined]
expected: FAIL
[In <input type="text"> in contenteditable, execCommand("strikethrough", false, null), a[b\]c): input.target should be undefined]
expected: FAIL
[exec-command-with-text-editor.tentative.html?type=textarea]
[In <textarea>, execCommand("bold", false, bold), a[b\]c): The command should be supported]
@@ -861,9 +879,6 @@
[In <textarea>, execCommand("italic", false, null), a[b\]c): The command should be supported]
expected: FAIL
[In <textarea>, execCommand("strikethrough", false, null), a[b\]c): The command should be supported]
expected: FAIL
[In <textarea>, execCommand("superscript", false, null), a[b\]c): The command should be supported]
expected: FAIL
@@ -1023,9 +1038,6 @@
[In <textarea> in contenteditable, execCommand("italic", false, null), a[b\]c): The command should be supported]
expected: FAIL
[In <textarea> in contenteditable, execCommand("strikethrough", false, null), a[b\]c): The command should be supported]
expected: FAIL
[In <textarea> in contenteditable, execCommand("superscript", false, null), a[b\]c): The command should be supported]
expected: FAIL
@@ -1292,3 +1304,18 @@
[In <textarea> in contenteditable, execCommand("underline", false, null), a[b\]c): input.target should be undefined]
expected: FAIL
[In <textarea> in contenteditable, execCommand("strikethrough", false, null), a[b\]c): The command should not be enabled]
expected: FAIL
[In <textarea> in contenteditable, execCommand("strikethrough", false, null), a[b\]c): execCommand() should return false]
expected: FAIL
[In <textarea> in contenteditable, execCommand("strikethrough", false, null), a[b\]c): should not fire beforeinput event]
expected: FAIL
[In <textarea> in contenteditable, execCommand("strikethrough", false, null), a[b\]c): input.inputType should be undefined]
expected: FAIL
[In <textarea> in contenteditable, execCommand("strikethrough", false, null), a[b\]c): input.target should be undefined]
expected: FAIL

View File

@@ -1180,29 +1180,5 @@
[[["stylewithcss","false"\],["defaultparagraphseparator","p"\],["delete",""\]\] "<p>foo<p style=color:brown>[\]bar" compare innerHTML]
expected: FAIL
[[["stylewithcss","true"\],["defaultparagraphseparator","div"\],["delete",""\]\] "<p style=text-decoration:underline>foo<p style=text-decoration:line-through>[\]bar" compare innerHTML]
expected: FAIL
[[["stylewithcss","false"\],["defaultparagraphseparator","div"\],["delete",""\]\] "<p style=text-decoration:underline>foo<p style=text-decoration:line-through>[\]bar" compare innerHTML]
expected: FAIL
[[["stylewithcss","true"\],["defaultparagraphseparator","p"\],["delete",""\]\] "<p style=text-decoration:underline>foo<p style=text-decoration:line-through>[\]bar" compare innerHTML]
expected: FAIL
[[["stylewithcss","false"\],["defaultparagraphseparator","p"\],["delete",""\]\] "<p style=text-decoration:underline>foo<p style=text-decoration:line-through>[\]bar" compare innerHTML]
expected: FAIL
[[["stylewithcss","true"\],["defaultparagraphseparator","div"\],["delete",""\]\] "<p>foo<p style=text-decoration:line-through>[\]bar" compare innerHTML]
expected: FAIL
[[["stylewithcss","false"\],["defaultparagraphseparator","div"\],["delete",""\]\] "<p>foo<p style=text-decoration:line-through>[\]bar" compare innerHTML]
expected: FAIL
[[["stylewithcss","true"\],["defaultparagraphseparator","p"\],["delete",""\]\] "<p>foo<p style=text-decoration:line-through>[\]bar" compare innerHTML]
expected: FAIL
[[["stylewithcss","false"\],["defaultparagraphseparator","p"\],["delete",""\]\] "<p>foo<p style=text-decoration:line-through>[\]bar" compare innerHTML]
expected: FAIL
[[["stylewithcss","true"\],["defaultparagraphseparator","p"\],["delete",""\]\] "<p style=color:blue>foo<p style=color:rgba(0,0,255,1)>[\]bar" queryCommandState("stylewithcss") before]
expected: FAIL

View File

@@ -1887,27 +1887,15 @@
[[["italic",""\],["outdent",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandState("italic") after]
expected: FAIL
[[["strikethrough",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("inserttext", false, "a") return value]
expected: FAIL
[[["strikethrough",""\],["inserttext","a"\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["delete",""\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["delete",""\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["delete",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["delete",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("inserttext", false, "a") return value]
expected: FAIL
@@ -1917,24 +1905,15 @@
[[["strikethrough",""\],["delete",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["formatblock","<div>"\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["formatblock","<div>"\]\] "foo[\]bar": execCommand("formatblock", false, "<div>") return value]
expected: FAIL
[[["strikethrough",""\],["formatblock","<div>"\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["formatblock","<div>"\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["formatblock","<div>"\]\] "foo[\]bar" queryCommandValue("formatblock") after]
expected: FAIL
[[["strikethrough",""\],["formatblock","<div>"\],["inserttext","a"\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["formatblock","<div>"\],["inserttext","a"\]\] "foo[\]bar": execCommand("formatblock", false, "<div>") return value]
expected: FAIL
@@ -1944,27 +1923,15 @@
[[["strikethrough",""\],["formatblock","<div>"\],["inserttext","a"\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["formatblock","<div>"\],["inserttext","a"\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["formatblock","<div>"\],["inserttext","a"\]\] "foo[\]bar" queryCommandValue("formatblock") after]
expected: FAIL
[[["strikethrough",""\],["forwarddelete",""\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["forwarddelete",""\]\] "foo[\]bar": execCommand("forwarddelete", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["forwarddelete",""\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["forwarddelete",""\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["forwarddelete",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["forwarddelete",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("forwarddelete", false, "") return value]
expected: FAIL
@@ -1974,24 +1941,12 @@
[[["strikethrough",""\],["forwarddelete",""\],["inserttext","a"\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["forwarddelete",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["indent",""\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["indent",""\]\] "foo[\]bar": execCommand("indent", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["indent",""\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["indent",""\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["indent",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["indent",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("indent", false, "") return value]
expected: FAIL
@@ -2001,24 +1956,12 @@
[[["strikethrough",""\],["indent",""\],["inserttext","a"\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["indent",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["inserthorizontalrule",""\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["inserthorizontalrule",""\]\] "foo[\]bar": execCommand("inserthorizontalrule", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["inserthorizontalrule",""\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["inserthorizontalrule",""\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["inserthorizontalrule",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["inserthorizontalrule",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("inserthorizontalrule", false, "") return value]
expected: FAIL
@@ -2028,24 +1971,12 @@
[[["strikethrough",""\],["inserthorizontalrule",""\],["inserttext","a"\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["inserthorizontalrule",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["inserthtml","ab<b>c</b>d"\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["inserthtml","ab<b>c</b>d"\]\] "foo[\]bar": execCommand("inserthtml", false, "ab<b>c</b>d") return value]
expected: FAIL
[[["strikethrough",""\],["inserthtml","ab<b>c</b>d"\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["inserthtml","ab<b>c</b>d"\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["inserthtml","ab<b>c</b>d"\],["inserttext","a"\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["inserthtml","ab<b>c</b>d"\],["inserttext","a"\]\] "foo[\]bar": execCommand("inserthtml", false, "ab<b>c</b>d") return value]
expected: FAIL
@@ -2055,24 +1986,12 @@
[[["strikethrough",""\],["inserthtml","ab<b>c</b>d"\],["inserttext","a"\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["inserthtml","ab<b>c</b>d"\],["inserttext","a"\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["insertimage","/img/lion.svg"\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["insertimage","/img/lion.svg"\]\] "foo[\]bar": execCommand("insertimage", false, "/img/lion.svg") return value]
expected: FAIL
[[["strikethrough",""\],["insertimage","/img/lion.svg"\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["insertimage","/img/lion.svg"\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["insertimage","/img/lion.svg"\],["inserttext","a"\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["insertimage","/img/lion.svg"\],["inserttext","a"\]\] "foo[\]bar": execCommand("insertimage", false, "/img/lion.svg") return value]
expected: FAIL
@@ -2082,24 +2001,12 @@
[[["strikethrough",""\],["insertimage","/img/lion.svg"\],["inserttext","a"\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["insertimage","/img/lion.svg"\],["inserttext","a"\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["insertlinebreak",""\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["insertlinebreak",""\]\] "foo[\]bar": execCommand("insertlinebreak", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["insertlinebreak",""\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["insertlinebreak",""\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["insertlinebreak",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["insertlinebreak",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("insertlinebreak", false, "") return value]
expected: FAIL
@@ -2109,27 +2016,15 @@
[[["strikethrough",""\],["insertlinebreak",""\],["inserttext","a"\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["insertlinebreak",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["insertorderedlist",""\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["insertorderedlist",""\]\] "foo[\]bar": execCommand("insertorderedlist", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["insertorderedlist",""\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["insertorderedlist",""\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["insertorderedlist",""\]\] "foo[\]bar" queryCommandState("insertorderedlist") after]
expected: FAIL
[[["strikethrough",""\],["insertorderedlist",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["insertorderedlist",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("insertorderedlist", false, "") return value]
expected: FAIL
@@ -2139,27 +2034,15 @@
[[["strikethrough",""\],["insertorderedlist",""\],["inserttext","a"\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["insertorderedlist",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["insertorderedlist",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandState("insertorderedlist") after]
expected: FAIL
[[["strikethrough",""\],["insertparagraph",""\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["insertparagraph",""\]\] "foo[\]bar": execCommand("insertparagraph", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["insertparagraph",""\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["insertparagraph",""\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["insertparagraph",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["insertparagraph",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("insertparagraph", false, "") return value]
expected: FAIL
@@ -2169,27 +2052,15 @@
[[["strikethrough",""\],["insertparagraph",""\],["inserttext","a"\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["insertparagraph",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["insertunorderedlist",""\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["insertunorderedlist",""\]\] "foo[\]bar": execCommand("insertunorderedlist", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["insertunorderedlist",""\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["insertunorderedlist",""\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["insertunorderedlist",""\]\] "foo[\]bar" queryCommandState("insertunorderedlist") after]
expected: FAIL
[[["strikethrough",""\],["insertunorderedlist",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["insertunorderedlist",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("insertunorderedlist", false, "") return value]
expected: FAIL
@@ -2199,24 +2070,15 @@
[[["strikethrough",""\],["insertunorderedlist",""\],["inserttext","a"\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["insertunorderedlist",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["insertunorderedlist",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandState("insertunorderedlist") after]
expected: FAIL
[[["strikethrough",""\],["justifycenter",""\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["justifycenter",""\]\] "foo[\]bar": execCommand("justifycenter", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["justifycenter",""\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["justifycenter",""\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["justifycenter",""\]\] "foo[\]bar" queryCommandValue("justifycenter") before]
expected: FAIL
@@ -2226,9 +2088,6 @@
[[["strikethrough",""\],["justifycenter",""\]\] "foo[\]bar" queryCommandValue("justifycenter") after]
expected: FAIL
[[["strikethrough",""\],["justifycenter",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["justifycenter",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("justifycenter", false, "") return value]
expected: FAIL
@@ -2238,9 +2097,6 @@
[[["strikethrough",""\],["justifycenter",""\],["inserttext","a"\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["justifycenter",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["justifycenter",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandValue("justifycenter") before]
expected: FAIL
@@ -2250,18 +2106,12 @@
[[["strikethrough",""\],["justifycenter",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandValue("justifycenter") after]
expected: FAIL
[[["strikethrough",""\],["justifyfull",""\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["justifyfull",""\]\] "foo[\]bar": execCommand("justifyfull", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["justifyfull",""\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["justifyfull",""\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["justifyfull",""\]\] "foo[\]bar" queryCommandValue("justifyfull") before]
expected: FAIL
@@ -2271,9 +2121,6 @@
[[["strikethrough",""\],["justifyfull",""\]\] "foo[\]bar" queryCommandValue("justifyfull") after]
expected: FAIL
[[["strikethrough",""\],["justifyfull",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["justifyfull",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("justifyfull", false, "") return value]
expected: FAIL
@@ -2283,9 +2130,6 @@
[[["strikethrough",""\],["justifyfull",""\],["inserttext","a"\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["justifyfull",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["justifyfull",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandValue("justifyfull") before]
expected: FAIL
@@ -2295,15 +2139,9 @@
[[["strikethrough",""\],["justifyfull",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandValue("justifyfull") after]
expected: FAIL
[[["strikethrough",""\],["justifyleft",""\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["justifyleft",""\]\] "foo[\]bar": execCommand("justifyleft", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["justifyleft",""\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["justifyleft",""\]\] "foo[\]bar" queryCommandState("justifyleft") before]
expected: FAIL
@@ -2316,9 +2154,6 @@
[[["strikethrough",""\],["justifyleft",""\]\] "foo[\]bar" queryCommandValue("justifyleft") after]
expected: FAIL
[[["strikethrough",""\],["justifyleft",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["justifyleft",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("justifyleft", false, "") return value]
expected: FAIL
@@ -2328,9 +2163,6 @@
[[["strikethrough",""\],["justifyleft",""\],["inserttext","a"\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["justifyleft",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["justifyleft",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandState("justifyleft") before]
expected: FAIL
@@ -2343,18 +2175,12 @@
[[["strikethrough",""\],["justifyleft",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandValue("justifyleft") after]
expected: FAIL
[[["strikethrough",""\],["justifyright",""\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["justifyright",""\]\] "foo[\]bar": execCommand("justifyright", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["justifyright",""\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["justifyright",""\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["justifyright",""\]\] "foo[\]bar" queryCommandValue("justifyright") before]
expected: FAIL
@@ -2364,9 +2190,6 @@
[[["strikethrough",""\],["justifyright",""\]\] "foo[\]bar" queryCommandValue("justifyright") after]
expected: FAIL
[[["strikethrough",""\],["justifyright",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["justifyright",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("justifyright", false, "") return value]
expected: FAIL
@@ -2376,9 +2199,6 @@
[[["strikethrough",""\],["justifyright",""\],["inserttext","a"\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["justifyright",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["justifyright",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandValue("justifyright") before]
expected: FAIL
@@ -2388,18 +2208,9 @@
[[["strikethrough",""\],["justifyright",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandValue("justifyright") after]
expected: FAIL
[[["strikethrough",""\],["outdent",""\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["outdent",""\]\] "foo[\]bar": execCommand("outdent", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["outdent",""\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["strikethrough",""\],["outdent",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("strikethrough", false, "") return value]
expected: FAIL
[[["strikethrough",""\],["outdent",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("outdent", false, "") return value]
expected: FAIL
@@ -2409,9 +2220,6 @@
[[["strikethrough",""\],["outdent",""\],["inserttext","a"\]\] "foo[\]bar" compare innerHTML]
expected: FAIL
[[["strikethrough",""\],["outdent",""\],["inserttext","a"\]\] "foo[\]bar" queryCommandState("strikethrough") after]
expected: FAIL
[[["subscript",""\],["inserttext","a"\]\] "foo[\]bar": execCommand("subscript", false, "") return value]
expected: FAIL

File diff suppressed because it is too large Load Diff