Minimise DOM changes made by ComposerPageState::cleanContent JS

By overriding ComposerPageState::getHtml to accept a parameter that
supports getting HTML with empty composer parts removed, cleanContent
can simply be made to linkify the page, thus allowing a ComposerWidget
to be re-used multiple times when sending an email.
This commit is contained in:
Michael Gratton 2019-11-08 10:39:46 +11:00 committed by Michael James Gratton
parent 43803239a4
commit 1447d1acbc
5 changed files with 59 additions and 43 deletions

View file

@ -9,7 +9,12 @@ class ComposerPageStateTest : ClientWebViewTestCase<ComposerWebView> {
public const string COMPLETE_BODY_TEMPLATE =
"""<div id="geary-body" dir="auto">%s<div><br></div><div><br></div></div><div id="geary-signature" dir="auto"></div>""";
public const string CLEAN_BODY_TEMPLATE = "%s<div><br></div><div><br></div>";
public const string DIRTY_BODY_TEMPLATE =
"""
<div id="geary-body" dir="auto" class="geary-focus" contenteditable="true">%s<div><br></div><div><br></div></div>
<div id="geary-signature" class="geary-no-display" dir="auto" contenteditable="true"></div>
""";
public const string CLEAN_BODY_TEMPLATE = """<div id="geary-body" dir="auto">%s<div><br></div><div><br></div></div>""";
public ComposerPageStateTest() {
base("ComposerPageStateTest");
@ -254,12 +259,11 @@ I can send email through smtp.gmail.com:587 or through <a href="https://www.gmai
try {
run_javascript("geary.cleanContent();");
assert(
Util.JS.to_string(
run_javascript("geary.bodyPart.innerHTML;")
.get_js_value()
) == CLEAN_BODY_TEMPLATE.printf(expected)
string result = Util.JS.to_string(
run_javascript("window.document.body.innerHTML;")
.get_js_value()
);
assert(result == DIRTY_BODY_TEMPLATE.printf(expected));
} catch (Util.JS.Error err) {
print("Util.JS.Error: %s\n", err.message);
assert_not_reached();
@ -273,12 +277,10 @@ I can send email through smtp.gmail.com:587 or through <a href="https://www.gmai
string html = "<p>para</p>";
load_body_fixture(html);
try {
assert(
Util.JS.to_string(
run_javascript(@"window.geary.getHtml();")
.get_js_value()
) == COMPLETE_BODY_TEMPLATE.printf(html)
string result = Util.JS.to_string(
run_javascript(@"window.geary.getHtml();").get_js_value()
);
assert(result == CLEAN_BODY_TEMPLATE.printf(html));
} catch (Util.JS.Error err) {
print("Util.JS.Error: %s\n", err.message);
assert_not_reached();