mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
8483cc805e
This commit performs two tasks: 1. it exports the internal browser object (in owl.browser), for ease of testing 2. it makes sure that Owl does not crash inside iframes in incognito mode, because window.localStorage raises an exception in that case closes #791
31 lines
990 B
TypeScript
31 lines
990 B
TypeScript
export interface Browser {
|
|
setTimeout: Window["setTimeout"];
|
|
clearTimeout: Window["clearTimeout"];
|
|
setInterval: Window["setInterval"];
|
|
clearInterval: Window["clearInterval"];
|
|
requestAnimationFrame: Window["requestAnimationFrame"];
|
|
random: Math["random"];
|
|
Date: typeof Date;
|
|
fetch: Window["fetch"];
|
|
localStorage: Window["localStorage"];
|
|
}
|
|
|
|
let localStorage: Window["localStorage"] | null = null;
|
|
|
|
export const browser: Browser = {
|
|
setTimeout: window.setTimeout.bind(window),
|
|
clearTimeout: window.clearTimeout.bind(window),
|
|
setInterval: window.setInterval.bind(window),
|
|
clearInterval: window.clearInterval.bind(window),
|
|
requestAnimationFrame: window.requestAnimationFrame.bind(window),
|
|
random: Math.random,
|
|
Date: window.Date,
|
|
fetch: (window.fetch || (() => {})).bind(window),
|
|
get localStorage() {
|
|
return localStorage || window.localStorage;
|
|
},
|
|
set localStorage(newLocalStorage: Window["localStorage"]) {
|
|
localStorage = newLocalStorage;
|
|
},
|
|
};
|