mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
2e3e8cd603
Following 2922cee6ea
Previous commit was not correct: used children with a cancelled
fiber (for instance, with a new currentFiber) could be destroyed.
This commit fixes the issue differently, by directly detecting
children that are not used anymore (and not mounted), and destroy
them directly (no need to wait for willStart promise to be resolved
anymore).
44 lines
1.8 KiB
Plaintext
44 lines
1.8 KiB
Plaintext
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
|
|
exports[`props validation props are validated in dev mode (code snapshot) 1`] = `
|
|
"function anonymous(context,extra
|
|
) {
|
|
let utils = this.constructor.utils;
|
|
let QWeb = this.constructor;
|
|
let parent = context;
|
|
let owner = context;
|
|
let sibling = null;
|
|
var h = this.h;
|
|
let c1 = [], p1 = {key:1};
|
|
var vn1 = h('div', p1, c1);
|
|
//COMPONENT
|
|
let k4 = \`__5__\`;
|
|
let w3 = k4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k4]] : false;
|
|
let props3 = {message:1};
|
|
if (w3 && w3.__owl__.currentFiber && !w3.__owl__.vnode) {
|
|
w3.destroy();
|
|
w3 = false;
|
|
}
|
|
if (w3) {
|
|
w3.__updateProps(props3, extra.fiber, undefined, undefined, sibling);
|
|
let pvnode = w3.__owl__.pvnode;
|
|
c1.push(pvnode);
|
|
} else {
|
|
let componentKey3 = \`Child\`;
|
|
let W3 = context.constructor.components[componentKey3] || QWeb.components[componentKey3]|| context['Child'];
|
|
if (!W3) {throw new Error('Cannot find the definition of component \\"' + componentKey3 + '\\"')}
|
|
w3 = new W3(parent, props3);
|
|
parent.__owl__.cmap[k4] = w3.__owl__.id;
|
|
let def2 = w3.__prepare(extra.fiber, undefined, undefined, sibling);
|
|
let pvnode = h('dummy', {key: k4, hook: {insert(vn) { let nvn=w3.__mount(fiber, pvnode.elm);pvnode.elm=nvn.elm;},remove() {},destroy(vn) {w3.destroy();}}});
|
|
const fiber = w3.__owl__.currentFiber;
|
|
def2.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; });
|
|
c1.push(pvnode);
|
|
w3.__owl__.pvnode = pvnode;
|
|
}
|
|
w3.__owl__.parentLastFiberId = extra.fiber.id;
|
|
sibling = w3.__owl__.currentFiber || sibling;
|
|
return vn1;
|
|
}"
|
|
`;
|