Skip to content

Commit 7898797

Browse files
legendecasDevtools-frontend LUCI CQ
authored andcommitted
[node_app] Show network panel as a preview panel in node_app/js_app
Design-doc: https://docs.google.com/document/d/1CmXzXt2bVD6Oy4wMakjJcc2ciry4GAAGSgHk4UuqLsE/edit?tab=t.0 Bug: 353924015 Change-Id: Icfc6b5a6448f17b0d30ea80835cefd8a001412a3 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6185606 Reviewed-by: Danil Somsikov <[email protected]> Reviewed-by: Simon Zünd <[email protected]> Commit-Queue: Danil Somsikov <[email protected]>
1 parent 1e3942d commit 7898797

File tree

8 files changed

+39
-1
lines changed

8 files changed

+39
-1
lines changed

front_end/core/root/Runtime.test.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,23 @@ describe('Runtime', () => {
3434
assert.isNull(Root.Runtime.getRemoteBase(`${bundled}?remoteBase=${remoteOrigin}`));
3535
});
3636
});
37+
38+
describe('isNodeEntry', () => {
39+
it('returns true for node_app', () => {
40+
assert.isTrue(Root.Runtime.isNodeEntry('/bundled/node_app.html'));
41+
assert.isTrue(Root.Runtime.isNodeEntry('/node_app'));
42+
});
43+
44+
it('returns true for js_app', () => {
45+
assert.isTrue(Root.Runtime.isNodeEntry('/bundled/js_app.html'));
46+
assert.isTrue(Root.Runtime.isNodeEntry('/js_app'));
47+
});
48+
49+
it('returns false for other entries', () => {
50+
assert.isFalse(Root.Runtime.isNodeEntry('/bundled/inspector.html'));
51+
assert.isFalse(Root.Runtime.isNodeEntry('/inspector'));
52+
});
53+
});
3754
});
3855

3956
it('allConfigurableExperiments returns all registered experiments', () => {

front_end/core/root/Runtime.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const queryParamsObject = new URLSearchParams(location.search);
99
let runtimePlatform = '';
1010

1111
let runtimeInstance: Runtime|undefined;
12+
let isNode: boolean|undefined;
1213

1314
export function getRemoteBase(location: string = self.location.toString()): {
1415
base: string,
@@ -32,6 +33,11 @@ export function getPathName(): string {
3233
return window.location.pathname;
3334
}
3435

36+
export function isNodeEntry(pathname: string): boolean {
37+
const nodeEntryPoints = ['node_app', 'js_app'];
38+
return nodeEntryPoints.some(component => pathname.includes(component));
39+
}
40+
3541
export class Runtime {
3642
private constructor() {
3743
}
@@ -74,6 +80,13 @@ export class Runtime {
7480
}
7581
}
7682

83+
static isNode(): boolean {
84+
if (isNode === undefined) {
85+
isNode = isNodeEntry(getPathName());
86+
}
87+
return isNode;
88+
}
89+
7790
static setPlatform(platform: string): void {
7891
runtimePlatform = platform;
7992
}

front_end/core/sdk/Target.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ export class Target extends ProtocolClient.InspectorBackend.TargetBase {
8787
this.#capabilitiesMask = Capability.JS | Capability.LOG | Capability.EVENT_BREAKPOINTS | Capability.NETWORK;
8888
break;
8989
case Type.NODE:
90-
this.#capabilitiesMask = Capability.JS;
90+
this.#capabilitiesMask = Capability.JS | Capability.NETWORK;
9191
break;
9292
case Type.AUCTION_WORKLET:
9393
this.#capabilitiesMask = Capability.JS | Capability.EVENT_BREAKPOINTS;

front_end/entrypoints/js_app/BUILD.gn

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ devtools_entrypoint("entrypoint") {
1515
"../../generated:protocol",
1616
"../../panels/js_timeline:meta",
1717
"../../panels/mobile_throttling:meta",
18+
"../../panels/network:meta",
1819
"../../ui/legacy/components/utils:bundle",
1920
"../main:bundle",
2021
"../shell",

front_end/entrypoints/js_app/js_app.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import '../shell/shell.js';
66
import '../../panels/js_timeline/js_timeline-meta.js';
77
import '../../panels/mobile_throttling/mobile_throttling-meta.js';
8+
import '../../panels/network/network-meta.js';
89

910
import * as Common from '../../core/common/common.js';
1011
import * as Host from '../../core/host/host.js';

front_end/entrypoints/node_app/BUILD.gn

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ devtools_entrypoint("entrypoint") {
3838
"../../core/root:bundle",
3939
"../../panels/js_timeline:meta",
4040
"../../panels/mobile_throttling:meta",
41+
"../../panels/network:meta",
4142
"../../panels/sources:bundle",
4243
"../../ui/legacy:bundle",
4344
"../shell",

front_end/entrypoints/node_app/node_app.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import '../shell/shell.js';
55
import '../../panels/mobile_throttling/mobile_throttling-meta.js';
66
import '../../panels/js_timeline/js_timeline-meta.js';
7+
import '../../panels/network/network-meta.js';
78

89
import * as Common from '../../core/common/common.js';
910
import * as i18n from '../../core/i18n/i18n.js';

front_end/panels/network/network-meta.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import * as Common from '../../core/common/common.js';
66
import * as i18n from '../../core/i18n/i18n.js';
77
import type * as Platform from '../../core/platform/platform.js';
8+
import * as Root from '../../core/root/root.js';
89
import * as SDK from '../../core/sdk/sdk.js';
910
import * as Extensions from '../../models/extensions/extensions.js';
1011
import * as Workspace from '../../models/workspace/workspace.js';
@@ -144,6 +145,8 @@ const str_ = i18n.i18n.registerUIStrings('panels/network/network-meta.ts', UIStr
144145
const i18nLazyString = i18n.i18n.getLazilyComputedLocalizedString.bind(undefined, str_);
145146
let loadedNetworkModule: (typeof Network|undefined);
146147

148+
const isNode = Root.Runtime.Runtime.isNode();
149+
147150
async function loadNetworkModule(): Promise<typeof Network> {
148151
if (!loadedNetworkModule) {
149152
loadedNetworkModule = await import('./network.js');
@@ -164,6 +167,7 @@ UI.ViewManager.registerViewExtension({
164167
commandPrompt: i18nLazyString(UIStrings.showNetwork),
165168
title: i18nLazyString(UIStrings.network),
166169
order: 40,
170+
isPreviewFeature: isNode,
167171
async loadView() {
168172
const Network = await loadNetworkModule();
169173
return Network.NetworkPanel.NetworkPanel.instance();

0 commit comments

Comments
 (0)