| // Copyright 2022 The Chromium Authors | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | import {assertNotReached} from 'chrome://resources/js/assert.js'; | 
 |  | 
 | import {ContentSetting, ContentSettingsTypes} from './constants.js'; | 
 |  | 
 | /** | 
 |  * Determine localization string for i18n for a given content settings type. | 
 |  * Sorted alphabetically by |ContentSettingsType|. | 
 |  */ | 
 | export function getLocalizationStringForContentType( | 
 |     contentSettingsType: ContentSettingsTypes): string|null { | 
 |   switch (contentSettingsType) { | 
 |     case ContentSettingsTypes.ADS: | 
 |       return 'siteSettingsAdsMidSentence'; | 
 |     case ContentSettingsTypes.AR: | 
 |       return 'siteSettingsArMidSentence'; | 
 |     case ContentSettingsTypes.AUTO_PICTURE_IN_PICTURE: | 
 |       return 'siteSettingsAutoPictureInPictureMidSentence'; | 
 |     case ContentSettingsTypes.AUTOMATIC_DOWNLOADS: | 
 |       return 'siteSettingsAutomaticDownloadsMidSentence'; | 
 |     case ContentSettingsTypes.AUTOMATIC_FULLSCREEN: | 
 |       return 'siteSettingsAutomaticFullscreenMidSentence'; | 
 |     case ContentSettingsTypes.BACKGROUND_SYNC: | 
 |       return 'siteSettingsBackgroundSyncMidSentence'; | 
 |     case ContentSettingsTypes.BLUETOOTH_DEVICES: | 
 |       return 'siteSettingsBluetoothDevicesMidSentence'; | 
 |     case ContentSettingsTypes.BLUETOOTH_SCANNING: | 
 |       return 'siteSettingsBluetoothScanningMidSentence'; | 
 |     case ContentSettingsTypes.CAMERA: | 
 |       return 'siteSettingsCameraMidSentence'; | 
 |     case ContentSettingsTypes.CAPTURED_SURFACE_CONTROL: | 
 |       return 'siteSettingsCapturedSurfaceControlMidSentence'; | 
 |     case ContentSettingsTypes.CLIPBOARD: | 
 |       return 'siteSettingsClipboardMidSentence'; | 
 |     case ContentSettingsTypes.COOKIES: | 
 |       return 'siteSettingsCookiesMidSentence'; | 
 |     case ContentSettingsTypes.FEDERATED_IDENTITY_API: | 
 |       return 'siteSettingsFederatedIdentityApiMidSentence'; | 
 |     case ContentSettingsTypes.FILE_SYSTEM_WRITE: | 
 |       return 'siteSettingsFileSystemWriteMidSentence'; | 
 |     case ContentSettingsTypes.GEOLOCATION: | 
 |       return 'siteSettingsLocationMidSentence'; | 
 |     case ContentSettingsTypes.HAND_TRACKING: | 
 |       return 'siteSettingsHandTrackingMidSentence'; | 
 |     case ContentSettingsTypes.HID_DEVICES: | 
 |       return 'siteSettingsHidDevicesMidSentence'; | 
 |     case ContentSettingsTypes.IDLE_DETECTION: | 
 |       return 'siteSettingsIdleDetectionMidSentence'; | 
 |     case ContentSettingsTypes.IMAGES: | 
 |       return 'siteSettingsImagesMidSentence'; | 
 |     case ContentSettingsTypes.JAVASCRIPT: | 
 |       return 'siteSettingsJavascriptMidSentence'; | 
 |     case ContentSettingsTypes.JAVASCRIPT_OPTIMIZER: | 
 |       return 'siteSettingsJavascriptOptimizerMidsentence'; | 
 |     case ContentSettingsTypes.KEYBOARD_LOCK: | 
 |       return 'siteSettingsKeyboardLockMidSentence'; | 
 |     case ContentSettingsTypes.LOCAL_FONTS: | 
 |       return 'siteSettingsFontAccessMidSentence'; | 
 |     case ContentSettingsTypes.LOCAL_NETWORK_ACCESS: | 
 |       return 'siteSettingsLocalNetworkAccessMidSentence'; | 
 |     case ContentSettingsTypes.MIC: | 
 |       return 'siteSettingsMicMidSentence'; | 
 |     case ContentSettingsTypes.MIDI_DEVICES: | 
 |       return 'siteSettingsMidiDevicesMidSentence'; | 
 |     case ContentSettingsTypes.MIXEDSCRIPT: | 
 |       return 'siteSettingsInsecureContentMidSentence'; | 
 |     case ContentSettingsTypes.NOTIFICATIONS: | 
 |       return 'siteSettingsNotificationsMidSentence'; | 
 |     case ContentSettingsTypes.PAYMENT_HANDLER: | 
 |       return 'siteSettingsPaymentHandlerMidSentence'; | 
 |     case ContentSettingsTypes.POINTER_LOCK: | 
 |       return 'siteSettingsPointerLockMidSentence'; | 
 |     case ContentSettingsTypes.POPUPS: | 
 |       return 'siteSettingsPopupsMidSentence'; | 
 |     case ContentSettingsTypes.PROTECTED_CONTENT: | 
 |       return 'siteSettingsProtectedContentMidSentence'; | 
 |     case ContentSettingsTypes.PROTOCOL_HANDLERS: | 
 |       return 'siteSettingsHandlersMidSentence'; | 
 |     case ContentSettingsTypes.SENSORS: | 
 |       return 'siteSettingsSensorsMidSentence'; | 
 |     case ContentSettingsTypes.SERIAL_PORTS: | 
 |       return 'siteSettingsSerialPortsMidSentence'; | 
 |     case ContentSettingsTypes.SOUND: | 
 |       return 'siteSettingsSoundMidSentence'; | 
 |     case ContentSettingsTypes.STORAGE_ACCESS: | 
 |       return 'siteSettingsStorageAccessMidSentence'; | 
 |     case ContentSettingsTypes.USB_DEVICES: | 
 |       return 'siteSettingsUsbDevicesMidSentence'; | 
 |     case ContentSettingsTypes.WEB_APP_INSTALLATION: | 
 |       return 'siteSettingsWebAppInstallationMidSentence'; | 
 |     case ContentSettingsTypes.WEB_PRINTING: | 
 |       return 'siteSettingsWebPrintingMidSentence'; | 
 |     case ContentSettingsTypes.VR: | 
 |       return 'siteSettingsVrMidSentence'; | 
 |     case ContentSettingsTypes.WINDOW_MANAGEMENT: | 
 |       return 'siteSettingsWindowManagementMidSentence'; | 
 |     case ContentSettingsTypes.ZOOM_LEVELS: | 
 |       return 'siteSettingsZoomLevelsMidSentence'; | 
 |     // The following members do not have a mid-sentence localization. | 
 |     case ContentSettingsTypes.ANTI_ABUSE: | 
 |     case ContentSettingsTypes.PDF_DOCUMENTS: | 
 |     case ContentSettingsTypes.PERFORMANCE: | 
 |     case ContentSettingsTypes.PRIVATE_NETWORK_DEVICES: | 
 |     case ContentSettingsTypes.SITE_DATA: | 
 |     case ContentSettingsTypes.TRACKING_PROTECTION: | 
 |     case ContentSettingsTypes.OFFER_WRITING_HELP: | 
 |     case ContentSettingsTypes.SMART_CARD_READERS: | 
 |       return null; | 
 |     default: | 
 |       assertNotReached(); | 
 |   } | 
 | } | 
 |  | 
 | /** @return true if the passed `setting` is considered 'enabled' */ | 
 | export function isSettingEnabled(setting: ContentSetting): boolean { | 
 |   return setting !== ContentSetting.BLOCK; | 
 | } |