1 |
|
2 |
|
3 |
|
4 |
|
5 | import * as Common from '../../core/common/common.js';
|
6 | import type * as SDK from '../../core/sdk/sdk.js';
|
7 | import type * as Protocol from '../../generated/protocol.js';
|
8 |
|
9 | import {Events as NetworkLogEvents, NetworkLog} from './NetworkLog.js';
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 | export class RequestResolver extends
|
21 | Common.ResolverBase.ResolverBase<Protocol.Network.RequestId, SDK.NetworkRequest.NetworkRequest> {
|
22 | private networkListener: Common.EventTarget.EventDescriptor|null = null;
|
23 | private networkLog: NetworkLog;
|
24 |
|
25 | constructor(networkLog: NetworkLog = NetworkLog.instance()) {
|
26 | super();
|
27 | this.networkLog = networkLog;
|
28 | }
|
29 |
|
30 | protected getForId(id: Protocol.Network.RequestId): SDK.NetworkRequest.NetworkRequest|null {
|
31 | const requests = this.networkLog.requestsForId(id);
|
32 | if (requests.length > 0) {
|
33 | return requests[0];
|
34 | }
|
35 | return null;
|
36 | }
|
37 |
|
38 | private onRequestAdded(event: Common.EventTarget.EventTargetEvent<SDK.NetworkRequest.NetworkRequest>): void {
|
39 | const request = event.data;
|
40 | const backendRequestId = request.backendRequestId();
|
41 | if (backendRequestId) {
|
42 | this.onResolve(backendRequestId, request);
|
43 | }
|
44 | }
|
45 |
|
46 | protected override startListening(): void {
|
47 | if (this.networkListener) {
|
48 | return;
|
49 | }
|
50 | this.networkListener = this.networkLog.addEventListener(NetworkLogEvents.RequestAdded, this.onRequestAdded, this);
|
51 | }
|
52 |
|
53 | protected override stopListening(): void {
|
54 | if (!this.networkListener) {
|
55 | return;
|
56 | }
|
57 | Common.EventTarget.removeEventListeners([this.networkListener]);
|
58 | this.networkListener = null;
|
59 | }
|
60 | }
|