1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-12 06:13:38 +00:00

[deps] Platform: Update @types/chrome to v0.0.306 (#12126)

* [deps] Platform: Update @types/chrome to v0.0.306

* Fix APIs

* Add `await`

* Fix tests

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
This commit is contained in:
renovate[bot]
2025-03-12 11:56:11 -04:00
committed by GitHub
parent c0f9754bdf
commit 402db8e899
6 changed files with 69 additions and 51 deletions

View File

@@ -364,7 +364,7 @@ export class AutofillComponent implements OnInit {
return;
}
BrowserApi.updateDefaultBrowserAutofillSettings(!this.defaultBrowserAutofillDisabled);
await BrowserApi.updateDefaultBrowserAutofillSettings(!this.defaultBrowserAutofillDisabled);
}
private handleOverrideDialogAccept = async () => {

View File

@@ -103,6 +103,7 @@ export function createChromeTabMock(customFields = {}): chrome.tabs.Tab {
selected: true,
discarded: false,
autoDiscardable: false,
frozen: false,
groupId: 2,
url: "https://jest-testing-website.com",
...customFields,

View File

@@ -2,6 +2,8 @@ import { mock } from "jest-mock-extended";
import { BrowserApi } from "./browser-api";
type ChromeSettingsGet = chrome.types.ChromeSetting<boolean>["get"];
describe("BrowserApi", () => {
const executeScriptResult = ["value"];
@@ -468,19 +470,23 @@ describe("BrowserApi", () => {
describe("browserAutofillSettingsOverridden", () => {
it("returns true if the browser autofill settings are overridden", async () => {
const expectedDetails = {
const mockFn = jest.fn<
void,
[
details: chrome.types.ChromeSettingGetDetails,
callback: (details: chrome.types.ChromeSettingGetResult<boolean>) => void,
],
never
>((details, callback) => {
callback({
value: false,
levelOfControl: "controlled_by_this_extension",
} as chrome.types.ChromeSettingGetResultDetails;
chrome.privacy.services.autofillAddressEnabled.get = jest.fn((details, callback) =>
callback(expectedDetails),
);
chrome.privacy.services.autofillCreditCardEnabled.get = jest.fn((details, callback) =>
callback(expectedDetails),
);
chrome.privacy.services.passwordSavingEnabled.get = jest.fn((details, callback) =>
callback(expectedDetails),
);
});
});
chrome.privacy.services.autofillAddressEnabled.get = mockFn as unknown as ChromeSettingsGet;
chrome.privacy.services.autofillCreditCardEnabled.get =
mockFn as unknown as ChromeSettingsGet;
chrome.privacy.services.passwordSavingEnabled.get = mockFn as unknown as ChromeSettingsGet;
const result = await BrowserApi.browserAutofillSettingsOverridden();
@@ -488,19 +494,24 @@ describe("BrowserApi", () => {
});
it("returns false if the browser autofill settings are not overridden", async () => {
const expectedDetails = {
const mockFn = jest.fn<
void,
[
details: chrome.types.ChromeSettingGetDetails,
callback: (details: chrome.types.ChromeSettingGetResult<boolean>) => void,
],
never
>((details, callback) => {
callback({
value: true,
levelOfControl: "controlled_by_this_extension",
} as chrome.types.ChromeSettingGetResultDetails;
chrome.privacy.services.autofillAddressEnabled.get = jest.fn((details, callback) =>
callback(expectedDetails),
);
chrome.privacy.services.autofillCreditCardEnabled.get = jest.fn((details, callback) =>
callback(expectedDetails),
);
chrome.privacy.services.passwordSavingEnabled.get = jest.fn((details, callback) =>
callback(expectedDetails),
);
});
});
chrome.privacy.services.autofillAddressEnabled.get = mockFn as unknown as ChromeSettingsGet;
chrome.privacy.services.autofillCreditCardEnabled.get =
mockFn as unknown as ChromeSettingsGet;
chrome.privacy.services.passwordSavingEnabled.get = mockFn as unknown as ChromeSettingsGet;
const result = await BrowserApi.browserAutofillSettingsOverridden();
@@ -508,19 +519,23 @@ describe("BrowserApi", () => {
});
it("returns false if the browser autofill settings are not controlled by the extension", async () => {
const expectedDetails = {
const mockFn = jest.fn<
void,
[
details: chrome.types.ChromeSettingGetDetails,
callback: (details: chrome.types.ChromeSettingGetResult<boolean>) => void,
],
never
>((details, callback) => {
callback({
value: false,
levelOfControl: "controlled_by_other_extensions",
} as chrome.types.ChromeSettingGetResultDetails;
chrome.privacy.services.autofillAddressEnabled.get = jest.fn((details, callback) =>
callback(expectedDetails),
);
chrome.privacy.services.autofillCreditCardEnabled.get = jest.fn((details, callback) =>
callback(expectedDetails),
);
chrome.privacy.services.passwordSavingEnabled.get = jest.fn((details, callback) =>
callback(expectedDetails),
);
});
});
chrome.privacy.services.autofillAddressEnabled.get = mockFn as unknown as ChromeSettingsGet;
chrome.privacy.services.autofillCreditCardEnabled.get =
mockFn as unknown as ChromeSettingsGet;
chrome.privacy.services.passwordSavingEnabled.get = mockFn as unknown as ChromeSettingsGet;
const result = await BrowserApi.browserAutofillSettingsOverridden();

View File

@@ -504,7 +504,9 @@ export class BrowserApi {
*
* @param permissions - The permissions to check.
*/
static async permissionsGranted(permissions: string[]): Promise<boolean> {
static async permissionsGranted(
permissions: chrome.runtime.ManifestPermissions[],
): Promise<boolean> {
return new Promise((resolve) =>
chrome.permissions.contains({ permissions }, (result) => resolve(result)),
);
@@ -594,7 +596,7 @@ export class BrowserApi {
* Identifies if the browser autofill settings are overridden by the extension.
*/
static async browserAutofillSettingsOverridden(): Promise<boolean> {
const checkOverrideStatus = (details: chrome.types.ChromeSettingGetResultDetails) =>
const checkOverrideStatus = (details: chrome.types.ChromeSettingGetResult<boolean>) =>
details.levelOfControl === "controlled_by_this_extension" && !details.value;
const autofillAddressOverridden: boolean = await new Promise((resolve) =>
@@ -623,10 +625,10 @@ export class BrowserApi {
*
* @param value - Determines whether to enable or disable the autofill settings.
*/
static updateDefaultBrowserAutofillSettings(value: boolean) {
chrome.privacy.services.autofillAddressEnabled.set({ value });
chrome.privacy.services.autofillCreditCardEnabled.set({ value });
chrome.privacy.services.passwordSavingEnabled.set({ value });
static async updateDefaultBrowserAutofillSettings(value: boolean) {
await chrome.privacy.services.autofillAddressEnabled.set({ value });
await chrome.privacy.services.autofillCreditCardEnabled.set({ value });
await chrome.privacy.services.passwordSavingEnabled.set({ value });
}
/**

8
package-lock.json generated
View File

@@ -96,7 +96,7 @@
"@storybook/theming": "8.5.2",
"@storybook/web-components-webpack5": "8.5.2",
"@types/argon2-browser": "1.18.4",
"@types/chrome": "0.0.280",
"@types/chrome": "0.0.306",
"@types/firefox-webext-browser": "120.0.4",
"@types/inquirer": "8.2.10",
"@types/jest": "29.5.12",
@@ -10904,9 +10904,9 @@
}
},
"node_modules/@types/chrome": {
"version": "0.0.280",
"resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.280.tgz",
"integrity": "sha512-AotSmZrL9bcZDDmSI1D9dE7PGbhOur5L0cKxXd7IqbVizQWCY4gcvupPUVsQ4FfDj3V2tt/iOpomT9EY0s+w1g==",
"version": "0.0.306",
"resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.306.tgz",
"integrity": "sha512-95kgcqvTNcaZCXmx/kIKY6uo83IaRNT3cuPxYqlB2Iu+HzKDCP4t7TUe7KhJijTdibcvn+SzziIcfSLIlgRnhQ==",
"dev": true,
"license": "MIT",
"dependencies": {

View File

@@ -58,7 +58,7 @@
"@storybook/theming": "8.5.2",
"@storybook/web-components-webpack5": "8.5.2",
"@types/argon2-browser": "1.18.4",
"@types/chrome": "0.0.280",
"@types/chrome": "0.0.306",
"@types/firefox-webext-browser": "120.0.4",
"@types/inquirer": "8.2.10",
"@types/jest": "29.5.12",