diff options
| -rw-r--r-- | addons/web/static/src/js/chrome/action_manager_act_window.js | 2 | ||||
| -rw-r--r-- | addons/web/static/tests/chrome/action_manager_tests.js | 20 |
2 files changed, 21 insertions, 1 deletions
diff --git a/addons/web/static/src/js/chrome/action_manager_act_window.js b/addons/web/static/src/js/chrome/action_manager_act_window.js index ee39d7cb7a7..68a52ea12aa 100644 --- a/addons/web/static/src/js/chrome/action_manager_act_window.js +++ b/addons/web/static/src/js/chrome/action_manager_act_window.js @@ -84,7 +84,7 @@ ActionManager.include({ // jQuery's BBQ plugin does some parsing on values that are valid integers // which means that if there's only one item, it will do parseInt() on it, // otherwise it will keep the comma seperated list as string - context.active_ids = state.active_ids.split(',').map(function (id) { + context.active_ids = state.active_ids.toString().split(',').map(function (id) { return parseInt(id, 10) || id; }); } else if (state.active_id) { diff --git a/addons/web/static/tests/chrome/action_manager_tests.js b/addons/web/static/tests/chrome/action_manager_tests.js index 9ade9a544ec..8511a8bfb38 100644 --- a/addons/web/static/tests/chrome/action_manager_tests.js +++ b/addons/web/static/tests/chrome/action_manager_tests.js @@ -1339,6 +1339,26 @@ QUnit.module('ActionManager', { actionManager.destroy(); }); + QUnit.test('state with integer active_ids should not crash', async function (assert) { + assert.expect(0); + + var actionManager = await createActionManager({ + actions: this.actions, + mockRPC: function (route, args) { + if (route === '/web/action/run') { + return Promise.resolve(); + } + return this._super.apply(this, arguments); + }, + }); + await actionManager.loadState({ + action: 2, + active_ids: 3, + }); + + actionManager.destroy(); + }); + QUnit.module('Concurrency management'); QUnit.test('drop previous actions if possible', async function (assert) { |
