






















@@ -245,6 +245,28 @@ function createManifestRegistryFixture() {
245245providers: [],
246246cliBackends: [],
247247},
248+{
249+id: "demo-global-startup-opt-out",
250+channels: [],
251+activation: {
252+onStartup: false,
253+},
254+origin: "global",
255+enabledByDefault: undefined,
256+providers: [],
257+cliBackends: [],
258+},
259+{
260+id: "demo-global-explicit-startup",
261+channels: [],
262+activation: {
263+onStartup: true,
264+},
265+origin: "global",
266+enabledByDefault: undefined,
267+providers: [],
268+cliBackends: [],
269+},
248270].map(withManifestLoadPaths),
249271diagnostics: [],
250272};
@@ -297,7 +319,12 @@ function createInstalledPluginRecordFixture(
297319enabled: true,
298320 ...(record.enabledByDefault === true ? { enabledByDefault: true } : {}),
299321startup: {
300-sidecar: record.channels.length === 0 && !hasRuntimeContractSurface(record) && !memory,
322+sidecar:
323+record.activation?.onStartup === true ||
324+(record.activation?.onStartup === undefined &&
325+record.channels.length === 0 &&
326+!hasRuntimeContractSurface(record) &&
327+!memory),
301328 memory,
302329deferConfiguredChannelFullLoadUntilAfterListen:
303330record.startupDeferConfiguredChannelFullLoadUntilAfterListen === true,
@@ -623,6 +650,42 @@ describe("resolveGatewayStartupPluginIds", () => {
623650});
624651});
625652653+it("keeps deprecated implicit startup sidecar fallback for legacy plugins", () => {
654+expectStartupPluginIdsCase({
655+config: createStartupConfig({
656+enabledPluginIds: ["demo-global-sidecar"],
657+allowPluginIds: ["demo-global-sidecar"],
658+noConfiguredChannels: true,
659+memorySlot: "none",
660+}),
661+expected: ["demo-global-sidecar"],
662+});
663+});
664+665+it("skips deprecated implicit startup sidecar fallback when activation.onStartup is false", () => {
666+expectStartupPluginIdsCase({
667+config: createStartupConfig({
668+enabledPluginIds: ["demo-global-startup-opt-out"],
669+allowPluginIds: ["demo-global-startup-opt-out"],
670+noConfiguredChannels: true,
671+memorySlot: "none",
672+}),
673+expected: [],
674+});
675+});
676+677+it("loads explicit startup plugins when activation.onStartup is true", () => {
678+expectStartupPluginIdsCase({
679+config: createStartupConfig({
680+enabledPluginIds: ["demo-global-explicit-startup"],
681+allowPluginIds: ["demo-global-explicit-startup"],
682+noConfiguredChannels: true,
683+memorySlot: "none",
684+}),
685+expected: ["demo-global-explicit-startup"],
686+});
687+});
688+626689it("starts bundled sidecars selected by root config activation paths", () => {
627690const rawConfig = {
628691browser: {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。