mirror of
https://github.com/gchq/CyberChef
synced 2025-01-09 11:08:47 +00:00
63 lines
1.7 KiB
JavaScript
63 lines
1.7 KiB
JavaScript
|
/**
|
||
|
* @author n1474335 [n1474335@gmail.com]
|
||
|
* @copyright Crown Copyright 2016
|
||
|
* @license Apache-2.0
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Waiter to handle events related to the window object.
|
||
|
*/
|
||
|
class WindowWaiter {
|
||
|
|
||
|
/**
|
||
|
* WindowWaiter constructor.
|
||
|
*
|
||
|
* @param {App} app - The main view object for CyberChef.
|
||
|
*/
|
||
|
constructor(app) {
|
||
|
this.app = app;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Handler for window resize events.
|
||
|
* Resets the layout of CyberChef's panes after 200ms (so that continuous resizing doesn't cause
|
||
|
* continuous resetting).
|
||
|
*/
|
||
|
windowResize() {
|
||
|
clearTimeout(this.resetLayoutTimeout);
|
||
|
this.resetLayoutTimeout = setTimeout(this.app.resetLayout.bind(this.app), 200);
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Handler for window blur events.
|
||
|
* Saves the current time so that we can calculate how long the window was unfocussed for when
|
||
|
* focus is returned.
|
||
|
*/
|
||
|
windowBlur() {
|
||
|
this.windowBlurTime = new Date().getTime();
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Handler for window focus events.
|
||
|
*
|
||
|
* When a browser tab is unfocused and the browser has to run lots of dynamic content in other
|
||
|
* tabs, it swaps out the memory for that tab.
|
||
|
* If the CyberChef tab has been unfocused for more than a minute, we run a silent bake which will
|
||
|
* force the browser to load and cache all the relevant JavaScript code needed to do a real bake.
|
||
|
* This will stop baking taking a long time when the CyberChef browser tab has been unfocused for
|
||
|
* a long time and the browser has swapped out all its memory.
|
||
|
*/
|
||
|
windowFocus() {
|
||
|
const unfocusedTime = new Date().getTime() - this.windowBlurTime;
|
||
|
if (unfocusedTime > 60000) {
|
||
|
this.app.silentBake();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
export default WindowWaiter;
|