From ac81073a9d57782842f5832178704a14e5b61300 Mon Sep 17 00:00:00 2001 From: Edmond Chui Date: Wed, 8 May 2024 18:35:39 -0700 Subject: [PATCH 1/2] [skip ci] extract param type (#44498) Summary: Changelog: [internal] Quick refactor to reduce commit noise in the following diff in the stack Differential Revision: D57140480 --- .../src/inspector-proxy/DeviceEventReporter.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/dev-middleware/src/inspector-proxy/DeviceEventReporter.js b/packages/dev-middleware/src/inspector-proxy/DeviceEventReporter.js index 79c8aa166040..5fe9b4bc83dc 100644 --- a/packages/dev-middleware/src/inspector-proxy/DeviceEventReporter.js +++ b/packages/dev-middleware/src/inspector-proxy/DeviceEventReporter.js @@ -31,6 +31,11 @@ type RequestMetadata = $ReadOnly<{ frontendUserAgent: string | null, }>; +type ResponseMetadata = $ReadOnly<{ + pageId: string | null, + frontendUserAgent: string | null, +}>; + class DeviceEventReporter { #eventReporter: EventReporter; @@ -72,10 +77,7 @@ class DeviceEventReporter { logResponse( res: CDPResponse<>, origin: 'device' | 'proxy', - metadata: $ReadOnly<{ - pageId: string | null, - frontendUserAgent: string | null, - }>, + metadata: ResponseMetadata, ): void { const pendingCommand = this.#pendingCommands.get(res.id); if (!pendingCommand) { From c349989958fa83f11312e5430de191fc34e37e34 Mon Sep 17 00:00:00 2001 From: Edmond Chui Date: Wed, 8 May 2024 18:35:39 -0700 Subject: [PATCH 2/2] add prefersFuseboxFrontend field to debugger_command Summary: Changelog: [internal] As [discussed](https://fb.workplace.com/groups/react.devx.team/permalink/930483712103526/), we'll begin segmenting Telemetry signals by Fusebox/non-Fusebox. * Add new flag in event reporter for `debugger_command` (other events in subsequent diffs) * Add new column to the Scuba destination Differential Revision: D57140479 --- .../src/inspector-proxy/Device.js | 28 +++++++++++++++++-- .../inspector-proxy/DeviceEventReporter.js | 7 +++++ .../dev-middleware/src/types/EventReporter.js | 1 + 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/packages/dev-middleware/src/inspector-proxy/Device.js b/packages/dev-middleware/src/inspector-proxy/Device.js index 1ecfd66f6535..5a5f3ff0671d 100644 --- a/packages/dev-middleware/src/inspector-proxy/Device.js +++ b/packages/dev-middleware/src/inspector-proxy/Device.js @@ -320,6 +320,9 @@ export default class Device { this.#deviceEventReporter?.logRequest(debuggerRequest, 'debugger', { pageId: this.#debuggerConnection?.pageId ?? null, frontendUserAgent: metadata.userAgent, + prefersFuseboxFrontend: this.#isPageFuseboxFrontend( + this.#debuggerConnection?.pageId, + ), }); let processedReq = debuggerRequest; @@ -521,6 +524,7 @@ export default class Device { this.#deviceEventReporter?.logResponse(parsedPayload, 'device', { pageId, frontendUserAgent: this.#debuggerConnection?.userAgent ?? null, + prefersFuseboxFrontend: this.#isPageFuseboxFrontend(pageId), }); } @@ -601,9 +605,11 @@ export default class Device { ]; for (const message of toSend) { + const pageId = this.#debuggerConnection?.pageId ?? null; this.#deviceEventReporter?.logRequest(message, 'proxy', { - pageId: this.#debuggerConnection?.pageId ?? null, + pageId, frontendUserAgent: this.#debuggerConnection?.userAgent ?? null, + prefersFuseboxFrontend: this.#isPageFuseboxFrontend(pageId), }); this.#sendMessageToDevice({ event: 'wrappedEvent', @@ -713,6 +719,9 @@ export default class Device { this.#deviceEventReporter?.logRequest(resumeMessage, 'proxy', { pageId: this.#debuggerConnection?.pageId ?? null, frontendUserAgent: this.#debuggerConnection?.userAgent ?? null, + prefersFuseboxFrontend: this.#isPageFuseboxFrontend( + this.#debuggerConnection?.pageId, + ), }); this.#sendMessageToDevice({ event: 'wrappedEvent', @@ -796,9 +805,11 @@ export default class Device { result, }; socket.send(JSON.stringify(response)); + const pageId = this.#debuggerConnection?.pageId ?? null; this.#deviceEventReporter?.logResponse(response, 'proxy', { - pageId: this.#debuggerConnection?.pageId ?? null, + pageId, frontendUserAgent: this.#debuggerConnection?.userAgent ?? null, + prefersFuseboxFrontend: this.#isPageFuseboxFrontend(pageId), }); }; const sendErrorResponse = (error: string) => { @@ -809,9 +820,11 @@ export default class Device { // Send to the console as well, so the user can see it this.#sendErrorToDebugger(error); + const pageId = this.#debuggerConnection?.pageId ?? null; this.#deviceEventReporter?.logResponse(response, 'proxy', { - pageId: this.#debuggerConnection?.pageId ?? null, + pageId, frontendUserAgent: this.#debuggerConnection?.userAgent ?? null, + prefersFuseboxFrontend: this.#isPageFuseboxFrontend(pageId), }); }; @@ -909,4 +922,13 @@ export default class Device { ); } } + + #isPageFuseboxFrontend(pageId: ?string): boolean | null { + const page = pageId == null ? null : this.#pages.get(pageId); + if (page == null) { + return null; + } + + return this.#pageHasCapability(page, 'prefersFuseboxFrontend'); + } } diff --git a/packages/dev-middleware/src/inspector-proxy/DeviceEventReporter.js b/packages/dev-middleware/src/inspector-proxy/DeviceEventReporter.js index 5fe9b4bc83dc..41e8e6ddc24c 100644 --- a/packages/dev-middleware/src/inspector-proxy/DeviceEventReporter.js +++ b/packages/dev-middleware/src/inspector-proxy/DeviceEventReporter.js @@ -29,11 +29,13 @@ type DeviceMetadata = $ReadOnly<{ type RequestMetadata = $ReadOnly<{ pageId: string | null, frontendUserAgent: string | null, + prefersFuseboxFrontend: boolean | null, }>; type ResponseMetadata = $ReadOnly<{ pageId: string | null, frontendUserAgent: string | null, + prefersFuseboxFrontend: boolean | null, }>; class DeviceEventReporter { @@ -95,6 +97,7 @@ class DeviceEventReporter { deviceName: this.#metadata.deviceName, pageId: metadata.pageId, frontendUserAgent: metadata.frontendUserAgent, + prefersFuseboxFrontend: metadata.prefersFuseboxFrontend, }); return; } @@ -120,6 +123,7 @@ class DeviceEventReporter { deviceName: this.#metadata.deviceName, pageId: pendingCommand.metadata.pageId, frontendUserAgent: pendingCommand.metadata.frontendUserAgent, + prefersFuseboxFrontend: metadata.prefersFuseboxFrontend, }); return; } @@ -136,6 +140,7 @@ class DeviceEventReporter { deviceName: this.#metadata.deviceName, pageId: pendingCommand.metadata.pageId, frontendUserAgent: pendingCommand.metadata.frontendUserAgent, + prefersFuseboxFrontend: metadata.prefersFuseboxFrontend, }); } @@ -181,6 +186,7 @@ class DeviceEventReporter { deviceName: this.#metadata.deviceName, pageId: pendingCommand.metadata.pageId, frontendUserAgent: pendingCommand.metadata.frontendUserAgent, + prefersFuseboxFrontend: pendingCommand.metadata.prefersFuseboxFrontend, }); } this.#pendingCommands.clear(); @@ -220,6 +226,7 @@ class DeviceEventReporter { deviceName: this.#metadata.deviceName, pageId: pendingCommand.metadata.pageId, frontendUserAgent: pendingCommand.metadata.frontendUserAgent, + prefersFuseboxFrontend: pendingCommand.metadata.prefersFuseboxFrontend, }); } } diff --git a/packages/dev-middleware/src/types/EventReporter.js b/packages/dev-middleware/src/types/EventReporter.js index 8a242eab1bbb..c6f2de877c5a 100644 --- a/packages/dev-middleware/src/types/EventReporter.js +++ b/packages/dev-middleware/src/types/EventReporter.js @@ -64,6 +64,7 @@ export type ReportableEvent = timeSinceStart: number | null, ...DebuggerSessionIDs, frontendUserAgent: string | null, + prefersFuseboxFrontend: boolean | null, ... | SuccessResult | CodedErrorResult<