protected doAttach()

in src/legacyEdge/edgeDebugAdapter.ts [224:261]


    protected doAttach(port: number, targetUrl?: string, address?: string, timeout?: number, websocketUrl?: string, extraCRDPChannelPort?: number): Promise<void> {
        return super.doAttach(port, targetUrl, address, timeout, websocketUrl, extraCRDPChannelPort).then(async () => {
            // Don't return this promise, a failure shouldn't fail attach
            const userAgentPromise = this.globalEvaluate({ expression: 'navigator.userAgent', silent: true }).then(evalResponse => evalResponse.result.value);
            userAgentPromise
                .then(
                    userAgent => logger.log('Target userAgent: ' + userAgent),
                    err => logger.log('Getting userAgent failed: ' + err.message));

            const userAgentForTelemetryPromise = userAgentPromise.then(userAgent => {
                const properties = { 'Versions.Target.UserAgent': userAgent };
                const edgeVersionMatch = userAgent.match(/Edge\/([0-9]+(?:.[0-9]+)+)/);
                if (edgeVersionMatch && edgeVersionMatch[1]) {
                    properties['Versions.Target.Version'] = edgeVersionMatch[1];
                }
                return properties;
            });

            const protocolVersionPromise = this._chromeConnection.api.Schema.getDomains().then(
                allDomainsResponse => {
                    return allDomainsResponse.domains.filter(domain => domain.name === 'Debugger');
                },
                err => {
                    logger.log('Error trying to use EDP api for protocol version ' + err.message);
                    return [];
                }
            );

            let protocolVersion = await protocolVersionPromise;
            this._edgeProtocolVersion = protocolVersion.length ? this.processEDPProtocolVersion(protocolVersion[0].version) : Version.unknownVersion();

            // Send the versions information as it's own event so we can easily backfill other events in the user session if needed
            userAgentForTelemetryPromise.then(versionInformation => telemetry.telemetry.reportEvent('target-version', versionInformation));

            // Add version information to all telemetry events from now on
            telemetry.telemetry.addCustomGlobalProperty(userAgentForTelemetryPromise);
        });
    }