From 6952ee18bce6fa2274e1e960cec5f5f4df67ef23 Mon Sep 17 00:00:00 2001 From: Mohammed Shekha Date: Mon, 19 Aug 2019 07:06:39 +0000 Subject: [PATCH] [FIX] web: crashmanager wrong syntax of arrow function arrow function used for error handler and error function is defined inside inner function so this will get changed, need to use self, also arrow function doesn't have its own arguments object, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions Issue raised from following commit: https://github.com/odoo/odoo/commit/2d6dc75a2cb5fa81189920d0f7fdc7b7f12132ab task-2052484 closes odoo/odoo#35788 Signed-off-by: pimodoo --- .../js/stock_traceability_report_backend.js | 2 +- .../src/js/chrome/action_manager_report.js | 4 +- .../web/static/src/js/fields/basic_fields.js | 2 +- .../src/js/views/pivot/pivot_controller.js | 2 +- .../web/static/src/js/widgets/data_export.js | 2 +- .../tests/chrome/action_manager_tests.js | 40 +++++++++++++++++++ 6 files changed, 46 insertions(+), 6 deletions(-) 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) {