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);
});
}