Keep background effects to desktops until the menu says what they cost

- The one support check asks for a desktop again, as #4059 had the
  pipeline do: menu and pipeline still agree, so a phone is neither
  offered blur nor refused it.
- Lifting it moves to the PR that tells the user where effects run
  slowly, so it is their choice to make.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
fkwp
2026-11-03 16:05:25 +01:00
committed by Timo K.
co-authored by Claude Opus 5.5
parent 445e010cd3
commit 8763832566
3 changed files with 13 additions and 14 deletions
+2 -2
View File
@@ -238,9 +238,9 @@ describe("createCallFooterViewModel", () => {
);
}
it("offers them on a phone whose browser can run them", () => {
it("offers nothing on a phone, where the pipeline would refuse them", () => {
sdkSupportMock.mockReturnValue(true);
expect(lobbyOn("ios").toggleBlur$.value).toBeDefined();
expect(lobbyOn("ios").toggleBlur$.value).toBeUndefined();
});
it("offers them where the pipeline will honour them", () => {
+7 -7
View File
@@ -53,8 +53,8 @@ vi.mock("@livekit/track-processors", () => ({
}),
supportsBackgroundProcessors: (): boolean => true,
}));
// A phone: the pipeline must not ask.
vi.mock("../Platform", () => ({ platform: "ios" }));
const platformMock = vi.hoisted(() => ({ platform: "desktop" }));
vi.mock("../Platform", () => platformMock);
vi.mock("./BackgroundEffectTransformer", () => ({
BackgroundEffectTransformer: vi.fn(),
}));
@@ -222,6 +222,7 @@ describe("ProcessorProvider", () => {
pipelines.built = 0;
pipelines.destroyed = 0;
pipelines.switches = [];
platformMock.platform = "desktop";
backgroundBlur.setValue(false);
});
afterEach(() => backgroundBlur.setValue(false));
@@ -240,15 +241,14 @@ describe("ProcessorProvider", () => {
expect(track.stopProcessor).not.toHaveBeenCalled();
});
it("runs on a phone whose browser can run it", async () => {
it("does not run on a phone, even where its browser could", async () => {
platformMock.platform = "ios";
const track = cameraTrack();
render(surfaces(track));
await blur(true);
expect(latest().supported).toBe(true);
expect(track.setProcessor).toHaveBeenCalledWith(
convertToLivekitProcessor(latest().processor!),
);
expect(latest().supported).toBe(false);
expect(track.setProcessor).not.toHaveBeenCalled();
});
it("preview and call share one pipeline", async () => {
+4 -5
View File
@@ -7,10 +7,9 @@ Please see LICENSE in the repository root for full details.
import { supportsBackgroundProcessors as supportsBackgroundProcessorsLivekitSdk } from "@livekit/track-processors";
/**
* Whether this browser can run background effects: the one answer for the
* controls and the pipeline, so nothing is offered that the pipeline refuses.
*/
import { platform } from "../Platform";
/** One answer for the controls and the pipeline, so neither offers what the other refuses. */
export function supportsBackgroundProcessors(): boolean {
return supportsBackgroundProcessorsLivekitSdk();
return supportsBackgroundProcessorsLivekitSdk() && platform === "desktop";
}