From 64fa41a573c3f8a23552fdb03fc15616ec6e0139 Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Tue, 4 Feb 2025 06:11:52 -0800 Subject: [PATCH] Default XMLHttpRequest's trackingName to null (#49161) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/49161 Avoid special strings, and default to null to mean undefined or unknown. This save us from bridging an unnecessary string but also makes the fallback name for logging network requests clearer. Changelog: [Internal] Reviewed By: bgirard Differential Revision: D69058211 fbshipit-source-id: d83f424e0c2c23842554a8e4e616cad39719f311 --- .../Libraries/Network/RCTNetworking.android.js | 2 +- .../react-native/Libraries/Network/RCTNetworking.ios.js | 2 +- .../react-native/Libraries/Network/RCTNetworking.js.flow | 2 +- .../react-native/Libraries/Network/XMLHttpRequest_new.js | 7 +++---- .../react-native/Libraries/Network/XMLHttpRequest_old.js | 7 +++---- .../__tests__/__snapshots__/public-api-test.js.snap | 6 +++--- 6 files changed, 12 insertions(+), 14 deletions(-) diff --git a/packages/react-native/Libraries/Network/RCTNetworking.android.js b/packages/react-native/Libraries/Network/RCTNetworking.android.js index d5d782a2100..798ee2177de 100644 --- a/packages/react-native/Libraries/Network/RCTNetworking.android.js +++ b/packages/react-native/Libraries/Network/RCTNetworking.android.js @@ -59,7 +59,7 @@ const RCTNetworking = { sendRequest( method: string, - trackingName: string, + trackingName: ?string, url: string, headers: Object, data: RequestBody, diff --git a/packages/react-native/Libraries/Network/RCTNetworking.ios.js b/packages/react-native/Libraries/Network/RCTNetworking.ios.js index 4d528eebdba..e5b2dd572ff 100644 --- a/packages/react-native/Libraries/Network/RCTNetworking.ios.js +++ b/packages/react-native/Libraries/Network/RCTNetworking.ios.js @@ -29,7 +29,7 @@ const RCTNetworking = { sendRequest( method: string, - trackingName: string, + trackingName: ?string, url: string, headers: {...}, data: RequestBody, diff --git a/packages/react-native/Libraries/Network/RCTNetworking.js.flow b/packages/react-native/Libraries/Network/RCTNetworking.js.flow index 6f8f64a6e91..75b67d51989 100644 --- a/packages/react-native/Libraries/Network/RCTNetworking.js.flow +++ b/packages/react-native/Libraries/Network/RCTNetworking.js.flow @@ -25,7 +25,7 @@ declare const RCTNetworking: interface { sendRequest( method: string, - trackingName: string, + trackingName: ?string, url: string, headers: {...}, data: RequestBody, diff --git a/packages/react-native/Libraries/Network/XMLHttpRequest_new.js b/packages/react-native/Libraries/Network/XMLHttpRequest_new.js index 6206936f545..8e4b91e6294 100644 --- a/packages/react-native/Libraries/Network/XMLHttpRequest_new.js +++ b/packages/react-native/Libraries/Network/XMLHttpRequest_new.js @@ -152,7 +152,7 @@ class XMLHttpRequest extends EventTarget { _sent: boolean; _url: ?string = null; _timedOut: boolean = false; - _trackingName: string = 'unknown'; + _trackingName: ?string = null; _incrementalEvents: boolean = false; _startTime: ?number = null; _performanceLogger: IPerformanceLogger = GlobalPerformanceLogger; @@ -478,7 +478,7 @@ class XMLHttpRequest extends EventTarget { /** * Custom extension for tracking origins of request. */ - setTrackingName(trackingName: string): XMLHttpRequest { + setTrackingName(trackingName: ?string): XMLHttpRequest { this._trackingName = trackingName; return this; } @@ -560,8 +560,7 @@ class XMLHttpRequest extends EventTarget { } const doSend = () => { - const friendlyName = - this._trackingName !== 'unknown' ? this._trackingName : this._url; + const friendlyName = this._trackingName ?? this._url; this._perfKey = 'network_XMLHttpRequest_' + String(friendlyName); this._performanceLogger.startTimespan(this._perfKey); this._startTime = performance.now(); diff --git a/packages/react-native/Libraries/Network/XMLHttpRequest_old.js b/packages/react-native/Libraries/Network/XMLHttpRequest_old.js index a7d68219967..9b9ed75341b 100644 --- a/packages/react-native/Libraries/Network/XMLHttpRequest_old.js +++ b/packages/react-native/Libraries/Network/XMLHttpRequest_old.js @@ -130,7 +130,7 @@ class XMLHttpRequest extends (EventTarget(...XHR_EVENTS): typeof EventTarget) { _sent: boolean; _url: ?string = null; _timedOut: boolean = false; - _trackingName: string = 'unknown'; + _trackingName: ?string = null; _incrementalEvents: boolean = false; _startTime: ?number = null; _performanceLogger: IPerformanceLogger = GlobalPerformanceLogger; @@ -453,7 +453,7 @@ class XMLHttpRequest extends (EventTarget(...XHR_EVENTS): typeof EventTarget) { /** * Custom extension for tracking origins of request. */ - setTrackingName(trackingName: string): XMLHttpRequest { + setTrackingName(trackingName: ?string): XMLHttpRequest { this._trackingName = trackingName; return this; } @@ -535,8 +535,7 @@ class XMLHttpRequest extends (EventTarget(...XHR_EVENTS): typeof EventTarget) { } const doSend = () => { - const friendlyName = - this._trackingName !== 'unknown' ? this._trackingName : this._url; + const friendlyName = this._trackingName ?? this._url; this._perfKey = 'network_XMLHttpRequest_' + String(friendlyName); this._performanceLogger.startTimespan(this._perfKey); this._startTime = performance.now(); diff --git a/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap b/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap index 2c60e5ffe97..37fd09f70b3 100644 --- a/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap +++ b/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap @@ -5985,7 +5985,7 @@ exports[`public API should not change unintentionally Libraries/Network/RCTNetwo ): EventSubscription, sendRequest( method: string, - trackingName: string, + trackingName: ?string, url: string, headers: { ... }, data: RequestBody, @@ -6073,7 +6073,7 @@ declare class XMLHttpRequest extends EventTarget { getAllResponseHeaders(): ?string; getResponseHeader(header: string): ?string; setRequestHeader(header: string, value: any): void; - setTrackingName(trackingName: string): XMLHttpRequest; + setTrackingName(trackingName: ?string): XMLHttpRequest; setPerformanceLogger(performanceLogger: IPerformanceLogger): XMLHttpRequest; open(method: string, url: string, async: ?boolean): void; send(data: any): void; @@ -6156,7 +6156,7 @@ declare class XMLHttpRequest extends EventTarget { getAllResponseHeaders(): ?string; getResponseHeader(header: string): ?string; setRequestHeader(header: string, value: any): void; - setTrackingName(trackingName: string): XMLHttpRequest; + setTrackingName(trackingName: ?string): XMLHttpRequest; setPerformanceLogger(performanceLogger: IPerformanceLogger): XMLHttpRequest; open(method: string, url: string, async: ?boolean): void; send(data: any): void;