fix: switching the network in Settings tells open pages (closes #500)
Once Settings has saved the new network it asks the background to send chainChanged with the new chain id to every open tab, through the same function an approved site switch request uses. Only the extension's own pages can ask for that. Choosing the network already active changes nothing and sends nothing. Model: opus-5-5
This commit was merged in pull request #503.
This commit is contained in:
@@ -4538,6 +4538,42 @@ test("a site's network switch changes nothing until the user approves it (#408)"
|
||||
);
|
||||
});
|
||||
|
||||
// Switching the network in Settings tells the page too, as an approved site
|
||||
// request does (https://git.eeqj.de/sneak/AutistMask/issues/500). The wallet
|
||||
// goes back to mainnet the same way at the end.
|
||||
test("a network switch in Settings tells the page (#500)", async (env) => {
|
||||
const { mainnet, sepolia } = NETWORKS;
|
||||
const before = await storedNetwork(env.page);
|
||||
assert(
|
||||
before.networkId === "mainnet",
|
||||
"this test starts on mainnet, not on " + before.networkId,
|
||||
);
|
||||
const eventsBefore = (await chainChangedEvents(env.dapp)).length;
|
||||
await openSettings(env.page);
|
||||
|
||||
await env.page.selectOption("#settings-network", "sepolia");
|
||||
let events = await chainChangedEvents(env.dapp, eventsBefore + 1);
|
||||
assert(
|
||||
events.length === eventsBefore + 1 &&
|
||||
events[events.length - 1].data === sepolia.chainId,
|
||||
"the page was not told of the switch to Sepolia: " +
|
||||
JSON.stringify(events),
|
||||
);
|
||||
|
||||
await env.page.selectOption("#settings-network", "mainnet");
|
||||
events = await chainChangedEvents(env.dapp, eventsBefore + 2);
|
||||
assert(
|
||||
events.length === eventsBefore + 2 &&
|
||||
events[events.length - 1].data === mainnet.chainId,
|
||||
"the page was not told of the switch back to mainnet: " +
|
||||
JSON.stringify(events),
|
||||
);
|
||||
assert(
|
||||
isDeepStrictEqual(await storedNetwork(env.page), before),
|
||||
"switching back did not restore the mainnet network and endpoints",
|
||||
);
|
||||
});
|
||||
|
||||
// The closing pass over both boundaries at once. Every message the section
|
||||
// put on either channel is re-read here and required to be free of the
|
||||
// password — and required to be there at all, method by method, so the
|
||||
|
||||
Reference in New Issue
Block a user