[FIX] qweb: renderToString now properly escape

closes #565
This commit is contained in:
Géry Debongnie
2019-12-11 11:49:28 +01:00
committed by aab-odoo
parent 97d8b3ed8c
commit b96ea79f2b
5 changed files with 58 additions and 18 deletions
+10 -3
View File
@@ -1,7 +1,7 @@
import { EventBus } from "../core/event_bus";
import { h, patch, VNode } from "../vdom/index";
import { CompilationContext } from "./compilation_context";
import { shallowEqual } from "../utils";
import { shallowEqual, escape } from "../utils";
import { addNS } from "../vdom/vdom";
/**
@@ -348,8 +348,15 @@ export class QWeb extends EventBus {
return vnode.text!;
}
const node = document.createElement(vnode.sel);
const result = patch(node, vnode);
return (<HTMLElement>result.elm).outerHTML;
const elem = patch(node, vnode).elm as HTMLElement;
function escapeTextNodes(node) {
if (node.nodeType === 3) {
node.textContent = escape(node.textContent);
}
for (let n of node.childNodes) { escapeTextNodes(n) }
}
escapeTextNodes(elem);
return elem.outerHTML;
}
/**