diff --git a/addons/stock/static/src/js/stock_traceability_report_backend.js b/addons/stock/static/src/js/stock_traceability_report_backend.js index 31e42767cf5..9a3b7872947 100644 --- a/addons/stock/static/src/js/stock_traceability_report_backend.js +++ b/addons/stock/static/src/js/stock_traceability_report_backend.js @@ -103,7 +103,7 @@ var stock_report_generic = AbstractAction.extend({ url: url_data.replace('output_format', 'pdf'), data: {data: JSON.stringify(dict)}, complete: framework.unblockUI, - error: () => this.call('crash_manager', 'rpc_error', ...arguments), + error: (error) => self.call('crash_manager', 'rpc_error', error), }); }); return this.$buttons; diff --git a/addons/web/static/src/js/chrome/action_manager_report.js b/addons/web/static/src/js/chrome/action_manager_report.js index 416cad6a942..5c1c5cbeb8e 100644 --- a/addons/web/static/src/js/chrome/action_manager_report.js +++ b/addons/web/static/src/js/chrome/action_manager_report.js @@ -53,8 +53,8 @@ ActionManager.include({ data: JSON.stringify([url, type]), }, success: resolve, - error: () => { - this.call('crash_manager', 'rpc_error', ...arguments); + error: (error) => { + self.call('crash_manager', 'rpc_error', error); reject(); }, complete: framework.unblockUI, diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js index a782e128bc7..664ce51b570 100644 --- a/addons/web/static/src/js/fields/basic_fields.js +++ b/addons/web/static/src/js/fields/basic_fields.js @@ -1941,7 +1941,7 @@ var FieldBinaryFile = AbstractFieldBinary.extend({ 'download': true, 'data': utils.is_bin_size(this.value) ? null : this.value, }, - error: () => this.call('crash_manager', 'rpc_error', ...arguments), + error: (error) => this.call('crash_manager', 'rpc_error', error), url: '/web/content', }); ev.stopPropagation(); diff --git a/addons/web/static/src/js/views/pivot/pivot_controller.js b/addons/web/static/src/js/views/pivot/pivot_controller.js index 7875dcef52e..998d6ccc22c 100644 --- a/addons/web/static/src/js/views/pivot/pivot_controller.js +++ b/addons/web/static/src/js/views/pivot/pivot_controller.js @@ -150,7 +150,7 @@ var PivotController = AbstractController.extend({ url: '/web/pivot/export_xls', data: {data: JSON.stringify(table)}, complete: framework.unblockUI, - error: () => this.call('crash_manager', 'rpc_error', ...arguments), + error: (error) => this.call('crash_manager', 'rpc_error', error), }); }, /** diff --git a/addons/web/static/src/js/widgets/data_export.js b/addons/web/static/src/js/widgets/data_export.js index 964e03e4aa1..64d54d942a1 100644 --- a/addons/web/static/src/js/widgets/data_export.js +++ b/addons/web/static/src/js/widgets/data_export.js @@ -178,7 +178,7 @@ var DataExport = Dialog.extend({ }) }, complete: framework.unblockUI, - error: () => this.call('crash_manager', 'rpc_error', ...arguments), + error: (error) => this.call('crash_manager', 'rpc_error', error), }); }, /** diff --git a/addons/web/static/tests/chrome/action_manager_tests.js b/addons/web/static/tests/chrome/action_manager_tests.js index 26ec7b1562b..bc40fc97011 100644 --- a/addons/web/static/tests/chrome/action_manager_tests.js +++ b/addons/web/static/tests/chrome/action_manager_tests.js @@ -2205,6 +2205,46 @@ QUnit.module('ActionManager', { testUtils.mock.unpatch(ReportClientAction); }); + QUnit.test('crashmanager service called on failed report download actions', async function (assert) { + assert.expect(1); + + var actionManager = await createActionManager({ + data: this.data, + actions: this.actions, + services: { + report: ReportService, + }, + mockRPC: function (route) { + if (route === '/report/check_wkhtmltopdf') { + return Promise.resolve('ok'); + } + return this._super.apply(this, arguments); + }, + session: { + get_file: function (params) { + params.error({ + data: { + name: 'error', + exception_type: 'warning', + arguments: ['could not download file'], + } + }); + params.complete(); + }, + }, + }); + + try { + await actionManager.doAction(11); + } catch (e) { + // e is undefined if we land here because of a rejected promise, + // otherwise, it is an Error, which is not what we expect + assert.strictEqual(e, undefined); + } + + actionManager.destroy(); + }); + QUnit.module('Window Actions'); QUnit.test('can execute act_window actions from db ID', async function (assert) {