lighthouse
Version:
Automated auditing, performance metrics, and best practices for the web.
42 lines (35 loc) • 1.14 kB
JavaScript
/**
* @license
* Copyright 2021 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import BaseGatherer from '../base-gatherer.js';
import DevtoolsLogGatherer from './devtools-log.js';
/** @implements {LH.Gatherer.GathererInstance<'DevtoolsLog'>} */
class NetworkUserAgent extends BaseGatherer {
/** @type {LH.Gatherer.GathererMeta<'DevtoolsLog'>} */
meta = {
supportedModes: ['timespan', 'navigation'],
dependencies: {DevtoolsLog: DevtoolsLogGatherer.symbol},
};
/**
* @param {LH.Artifacts['DevtoolsLog']} devtoolsLog
* @return {string}
*/
static getNetworkUserAgent(devtoolsLog) {
for (const entry of devtoolsLog) {
if (entry.method !== 'Network.requestWillBeSent') continue;
const userAgent = entry.params.request.headers['User-Agent'];
if (userAgent) return userAgent;
}
return '';
}
/**
* @param {LH.Gatherer.Context<'DevtoolsLog'>} context
* @return {Promise<LH.Artifacts['NetworkUserAgent']>}
*/
async getArtifact(context) {
return NetworkUserAgent.getNetworkUserAgent(context.dependencies.DevtoolsLog);
}
}
export default NetworkUserAgent;