XFA - Elements under an area must be bound (bug 1723734)

- aims to fix https://bugzilla.mozilla.org/show_bug.cgi?id=1723734.
This commit is contained in:
Calixte Denizet 2021-08-06 18:54:42 +02:00
parent 849bab973c
commit 328383ea7a
2 changed files with 39 additions and 0 deletions

View File

@ -503,6 +503,10 @@ class Area extends XFAObject {
return true;
}
[$isBindable]() {
return true;
}
[$addHTML](html, bbox) {
const [x, y, w, h] = bbox;
this[$extra].width = Math.max(this[$extra].width, x + w);
@ -2869,6 +2873,11 @@ class Field extends XFAObject {
}
if (value) {
if (this.ui.numericEdit) {
value = parseFloat(value);
value = isNaN(value) ? "" : value.toString();
}
if (ui.children[0].name === "textarea") {
ui.children[0].attributes.textContent = value;
} else {
@ -5166,6 +5175,10 @@ class SubformSet extends XFAObject {
}
return parent;
}
[$isBindable]() {
return true;
}
}
class SubjectDN extends ContentObject {

View File

@ -1400,4 +1400,30 @@ describe("XFAParser", function () {
).toEqual(["a", "b", "c", "d", "e"]);
});
});
it("should make a binding with a element in an area", function () {
const xml = `
<?xml version="1.0"?>
<xdp:xdp xmlns:xdp="http://ns.adobe.com/xdp/">
<template xmlns="http://www.xfa.org/schema/xfa-template/3.3">
<subform name="A" mergeMode="matchTemplate">
<area>
<field name="B"/>
</area>
</subform>
</template>
<xfa:datasets xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">
<xfa:data>
<A><B>foobar</B></A>
</xfa:data>
</xfa:datasets>
</xdp:xdp>
`;
const root = new XFAParser().parse(xml);
const form = new Binder(root).bind();
expect(searchNode(form, form, "A..B..text")[0][$dump]().$content).toBe(
"foobar"
);
});
});