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 8161dd1c3bb..ff060153f27 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
@@ -688,7 +688,7 @@ ActionManager.include({
};
}
var options = {on_close: ev.data.on_closed};
- if (actionData.mobile) {
+ if (config.device.isMobile && actionData.mobile) {
options = Object.assign({}, options, actionData.mobile);
}
action.flags = _.extend({}, action.flags, {searchPanelDefaultNoFilter: true});
diff --git a/addons/web/static/tests/chrome/action_manager_mobile_tests.js b/addons/web/static/tests/chrome/action_manager_mobile_tests.js
index 6be9aae8e26..74f579e6dac 100644
--- a/addons/web/static/tests/chrome/action_manager_mobile_tests.js
+++ b/addons/web/static/tests/chrome/action_manager_mobile_tests.js
@@ -1,6 +1,7 @@
odoo.define('web.action_manager_mobile_tests', function (require) {
"use strict";
+var ActionManager = require('web.ActionManager');
var testUtils = require('web.test_utils');
var createActionManager = testUtils.createActionManager;
@@ -131,6 +132,57 @@ QUnit.module('ActionManager', {
actionManager.destroy();
});
+
+ QUnit.test('data-mobile attribute on action button, in mobile', async function (assert) {
+ assert.expect(2);
+
+ testUtils.mock.patch(ActionManager, {
+ doAction(action, options) {
+ if (typeof action !== 'number' && action.id === 1) {
+ assert.strictEqual(options.plop, 28);
+ } else {
+ assert.strictEqual(options.plop, undefined);
+ }
+ return this._super(...arguments);
+ },
+ });
+
+ this.archs['partner,75,kanban'] = `
+
+
+
+
+
+
+
+
+
+ `;
+
+ this.actions.push({
+ id: 100,
+ name: 'action 100',
+ res_model: 'partner',
+ type: 'ir.actions.act_window',
+ views: [[75, 'kanban']],
+ });
+
+ const actionManager = await createActionManager({
+ actions: this.actions,
+ archs: this.archs,
+ data: this.data
+ });
+
+ await actionManager.doAction(100, {});
+ await testUtils.dom.click(actionManager.$('button[data-mobile]:first'));
+
+ actionManager.destroy();
+ testUtils.mock.unpatch(ActionManager);
+ });
});
});
diff --git a/addons/web/static/tests/chrome/action_manager_tests.js b/addons/web/static/tests/chrome/action_manager_tests.js
index 42abad111c5..6af38ce02de 100644
--- a/addons/web/static/tests/chrome/action_manager_tests.js
+++ b/addons/web/static/tests/chrome/action_manager_tests.js
@@ -1,6 +1,7 @@
odoo.define('web.action_manager_tests', function (require) {
"use strict";
+var ActionManager = require('web.ActionManager');
var ReportClientAction = require('report.client_action');
var Notification = require('web.Notification');
var NotificationService = require('web.NotificationService');
@@ -4218,6 +4219,53 @@ QUnit.module('ActionManager', {
actionManager.destroy();
});
+ QUnit.test('data-mobile attribute on action button, in desktop', async function (assert) {
+ assert.expect(2);
+
+ testUtils.mock.patch(ActionManager, {
+ doAction(action, options) {
+ assert.strictEqual(options.plop, undefined);
+ return this._super(...arguments);
+ },
+ });
+
+ this.archs['partner,75,kanban'] = `
+
+
+
+
+
+
+
+
+
+ `;
+
+ this.actions.push({
+ id: 100,
+ name: 'action 100',
+ res_model: 'partner',
+ type: 'ir.actions.act_window',
+ views: [[75, 'kanban']],
+ });
+
+ const actionManager = await createActionManager({
+ actions: this.actions,
+ archs: this.archs,
+ data: this.data
+ });
+
+ await actionManager.doAction(100, {});
+ await testUtils.dom.click(actionManager.$('button[data-mobile]:first'));
+
+ actionManager.destroy();
+ testUtils.mock.unpatch(ActionManager);
+ });
+
QUnit.module('Search View Action');
QUnit.test('search view should keep focus during do_search', async function (assert) {