[FIX] web: crash_manager uses BrowserDetection

Before this commit, the crash manager used a copy of the browser detection isBrowserChrome method
because it was not possible to to register the proper dependency in stable version

This commit makes the crash manager use the module BrowserDetection for that purpose, with the proper
registered dependency before hand

closes odoo/odoo#56364

X-original-commit: 59e0dbab98466a23792af4a10003142614bda676
Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
This commit is contained in:
Lucas Perais (lpe)
2020-08-24 07:30:42 +00:00
parent 86c4f79212
commit 59c8c523de
@@ -11,6 +11,7 @@ odoo.define('web.CrashManager', function (require) {
const AbstractService = require('web.AbstractService');
var ajax = require('web.ajax');
const BrowserDetection = require('web.BrowserDetection');
var core = require('web.core');
var Dialog = require('web.Dialog');
var ErrorDialogRegistry = require('web.ErrorDialogRegistry');
@@ -27,14 +28,6 @@ window.addEventListener('unhandledrejection', ev =>
let active = true;
// Note: we already have this function in browser_detection.js but browser_detection.js
// is in assets_backend while crash_managere.js is in common so it will have dependency
// of file browser_detection.js which will not be available in frontend, so copy function here
const isBrowserChrome = function () {
return $.browser.chrome && // depends on jquery 1.x, removed in jquery 2 and above
navigator.userAgent.toLocaleLowerCase().indexOf('edge') === -1; // as far as jquery is concerned, Edge is chrome
};
/**
* An extension of Dialog Widget to render the warnings and errors on the website.
* Extend it with your template of choice like ErrorDialog/WarningDialog
@@ -103,6 +96,7 @@ var CrashManager = AbstractService.extend({
'odoo.exceptions.ValidationError': _lt("Validation Error"),
};
this.browserDetection = new BrowserDetection();
this._super.apply(this, arguments);
// crash manager integration
@@ -155,7 +149,7 @@ var CrashManager = AbstractService.extend({
// In particular, Chrome formats the contents of Error.stack
// https://v8.dev/docs/stack-trace-api#compatibility
let traceback;
if (isBrowserChrome()) {
if (self.browserDetection.isBrowserChrome()) {
traceback = ev.reason.stack;
} else {
traceback = `${_t("Error:")} ${ev.reason.message}\n${ev.reason.stack}`;