constructor()

in src/screencast/cdp.ts [24:54]


    constructor() {
        // Handle CDP messages/events routed from the extension through post message
        window.addEventListener('message', e => {
            parseMessageFromChannel(e.data, (eventName, args) => {
                if (eventName === 'websocket') {
                    const { message } = JSON.parse(args) as { message: string };
                    if (message) {
                        // Handle event responses
                        const messageObj = JSON.parse(message) as CdpMessage;
                        for (const callback of this.eventCallbackMap.get(messageObj.method) || []) {
                            callback(messageObj.params);
                        }
                        // Handle method responses
                        const methodCallback = this.methodCallbackMap.get(messageObj.id);
                        if (methodCallback) {
                            methodCallback(messageObj.result);
                            this.methodCallbackMap.delete(messageObj.id);
                        }
                    }
                    return true;
                }
                if (eventName === 'toggleInspect') {
                    const { enabled } = JSON.parse(args) as { enabled: string };
                    for (const callback of this.eventCallbackMap.get('DevTools.toggleInspect') || []) {
                        callback(enabled);
                    }
                }
                return false;
            });
        });
    }