blob: 07b2c465e8a57c2c3d96cd00b4d3fd88c9312595 [file] [log] [blame]
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* @fileoverview The main entry point for the ChromeOS Settings SWA. This
* imports all of the necessary modules and custom elements to load the page.
*/
import '../strings.m.js';
import '../prefs/prefs.js';
import './device_page/audio.js';
import './device_page/cros_audio_config.js';
import './device_page/device_page.js';
import './device_page/display.js';
import './device_page/display_layout.js';
import './device_page/display_overscan_dialog.js';
import './device_page/fake_input_device_data.js';
import './device_page/fake_input_device_settings_provider.js';
import './device_page/input_device_mojo_interface_provider.js';
import './device_page/input_device_settings_types.js';
import './device_page/keyboard.js';
import './device_page/per_device_keyboard.js';
import './device_page/per_device_keyboard_remap_keys.js';
import './device_page/per_device_keyboard_subsection.js';
import './device_page/per_device_mouse.js';
import './device_page/per_device_mouse_subsection.js';
import './device_page/per_device_pointing_stick.js';
import './device_page/per_device_pointing_stick_subsection.js';
import './device_page/per_device_touchpad.js';
import './device_page/per_device_touchpad_subsection.js';
import './device_page/pointers.js';
import './device_page/power.js';
import './device_page/storage.js';
import './device_page/storage_external.js';
import './device_page/storage_external_entry.js';
import './device_page/stylus.js';
import './google_assistant_page/google_assistant_page.js';
import './internet_page/apn_subpage.js';
import './internet_page/cellular_roaming_toggle_button.js';
import './internet_page/cellular_setup_dialog.js';
import './internet_page/esim_remove_profile_dialog.js';
import './internet_page/hotspot_subpage.js';
import './internet_page/hotspot_summary_item.js';
import './internet_page/internet_config.js';
import './internet_page/internet_detail_page.js';
import './internet_page/internet_known_networks_page.js';
import './internet_page/internet_page.js';
import './internet_page/internet_subpage.js';
import './internet_page/network_always_on_vpn.js';
import './internet_page/network_proxy_section.js';
import './internet_page/network_summary.js';
import './internet_page/network_summary_item.js';
import './internet_page/settings_traffic_counters.js';
import './internet_page/tether_connection_dialog.js';
import './kerberos_page/kerberos_accounts.js';
import './kerberos_page/kerberos_page.js';
import './multidevice_page/multidevice_page.js';
import './nearby_share_page/nearby_share_receive_dialog.js';
import './nearby_share_page/nearby_share_subpage.js';
import './personalization_page/personalization_page.js';
import './os_a11y_page/change_dictation_locale_dialog.js';
import './os_a11y_page/os_a11y_page.js';
import './os_about_page/channel_switcher_dialog.js';
import './os_about_page/detailed_build_info.js';
import './os_about_page/os_about_page.js';
import './os_about_page/update_warning_dialog.js';
import './os_apps_page/android_apps_subpage.js';
import './os_apps_page/app_notifications_page/app_notifications_subpage.js';
import './os_apps_page/app_management_page/app_detail_view.js';
import './os_apps_page/app_management_page/app_details_item.js';
import './os_apps_page/app_management_page/app_item.js';
import './os_apps_page/app_management_page/app_management_page.js';
import './os_apps_page/app_management_page/arc_detail_view.js';
import './os_apps_page/app_management_page/borealis_page/borealis_detail_view.js';
import './os_apps_page/app_management_page/chrome_app_detail_view.js';
import './os_apps_page/app_management_page/dom_switch.js';
import 'chrome://resources/cr_components/app_management/icons.html.js';
import './os_apps_page/app_management_page/main_view.js';
import './os_apps_page/app_management_page/pin_to_shelf_item.js';
import './os_apps_page/app_management_page/plugin_vm_page/plugin_vm_detail_view.js';
import './os_apps_page/app_management_page/pwa_detail_view.js';
import './os_apps_page/app_management_page/app_management_cros_shared_style.css.js';
import './os_apps_page/app_management_page/app_management_cros_shared_vars.css.js';
import './os_apps_page/app_management_page/supported_links_overlapping_apps_dialog.js';
import './os_apps_page/app_management_page/supported_links_dialog.js';
import './os_apps_page/app_management_page/supported_links_item.js';
import 'chrome://resources/cr_components/app_management/toggle_row.js';
import 'chrome://resources/cr_components/app_management/uninstall_button.js';
import './os_apps_page/app_notifications_page/mojo_interface_provider.js';
import './os_apps_page/os_apps_page.js';
import './os_bluetooth_page/os_bluetooth_devices_subpage.js';
import './os_bluetooth_page/os_bluetooth_device_detail_subpage.js';
import './os_bluetooth_page/os_bluetooth_saved_devices_subpage.js';
import './os_bluetooth_page/os_remove_saved_device_dialog.js';
import './os_bluetooth_page/os_bluetooth_forget_device_dialog.js';
import './os_bluetooth_page/os_bluetooth_true_wireless_images.js';
import './os_bluetooth_page/os_bluetooth_change_device_name_dialog.js';
import './os_bluetooth_page/os_bluetooth_pairing_dialog.js';
import './os_bluetooth_page/os_bluetooth_page.js';
import './os_bluetooth_page/os_bluetooth_summary.js';
import './os_bluetooth_page/os_paired_bluetooth_list.js';
import './os_bluetooth_page/os_paired_bluetooth_list_item.js';
import './os_bluetooth_page/os_saved_devices_list.js';
import './os_bluetooth_page/os_saved_devices_list_item.js';
import './os_bluetooth_page/settings_fast_pair_constants.js';
import './os_settings_icons.html.js';
import './os_people_page/account_manager.js';
import './os_people_page/os_people_page.js';
import './os_people_page/os_sync_controls.js';
import './os_search_page/os_search_page.js';
import './os_settings_main/os_settings_main.js';
import './os_settings_page/os_settings_page.js';
import './os_settings_page/settings_idle_load.js';
import './os_settings_menu/os_settings_menu.js';
import './os_settings_ui/os_settings_ui.js';
import './os_settings_icons.css.js';
import './os_settings_search_box/os_search_result_row.js';
import './os_settings_search_box/os_settings_search_box.js';
import './os_toolbar/os_toolbar.js';
import './parental_controls_page/parental_controls_page.js';
import './settings_scheduler_slider/settings_scheduler_slider.js';
import {startColorChangeUpdater} from 'chrome://resources/cr_components/color_change_listener/colors_css_updater.js';
import {loadTimeData} from 'chrome://resources/js/load_time_data.js';
import * as appNotificationHandlerMojom from '../mojom-webui/app_notification_handler.mojom-webui.js';
import * as crosAudioConfigMojom from '../mojom-webui/cros_audio_config.mojom-webui.js';
import * as routesMojomWebui from '../mojom-webui/routes.mojom-webui.js';
import * as personalizationSearchMojom from '../mojom-webui/search/personalization_search.mojom-webui.js';
import * as searchMojomWebui from '../mojom-webui/search/search.mojom-webui.js';
import * as searchResultIconMojomWebui from '../mojom-webui/search/search_result_icon.mojom-webui.js';
import * as userActionRecorderMojomWebui from '../mojom-webui/search/user_action_recorder.mojom-webui.js';
import * as settingMojomWebui from '../mojom-webui/setting.mojom-webui.js';
import * as fakeCrosAudioConfig from './device_page/fake_cros_audio_config.js';
/**
* With the optimize_webui() build step, the generated JS files are bundled
* into a single JS file. The exports below are necessary so they can be
* imported into browser tests.
*/
export {PermissionType, TriState} from 'chrome://resources/cr_components/app_management/app_management.mojom-webui.js';
export {BrowserProxy as AppManagementComponentBrowserProxy} from 'chrome://resources/cr_components/app_management/browser_proxy.js';
export {PageType, WindowMode} from 'chrome://resources/cr_components/app_management/constants.js';
export {createBoolPermission, createTriStatePermission, getBoolPermissionValue, isBoolValue} from 'chrome://resources/cr_components/app_management/permission_util.js';
export {convertOptionalBoolToBool, createEmptyState, createInitialState, getPermissionValueBool} from 'chrome://resources/cr_components/app_management/util.js';
export {OpenWindowProxyImpl} from 'chrome://resources/js/open_window_proxy.js';
export {LifetimeBrowserProxyImpl} from '../lifetime_browser_proxy.js';
export {ProfileInfoBrowserProxyImpl} from '../people_page/profile_info_browser_proxy.js';
export {PageStatus, StatusAction, SyncBrowserProxyImpl} from '../people_page/sync_browser_proxy.js';
export {CrSettingsPrefs} from '../prefs/prefs_types.js';
export {PrivacyPageBrowserProxyImpl, SecureDnsMode, SecureDnsUiManagementMode} from '../privacy_page/privacy_page_browser_proxy.js';
export {getContactManager, observeContactManager, setContactManagerForTesting} from '../shared/nearby_contact_manager.js';
export {getNearbyShareSettings, observeNearbyShareSettings, setNearbyShareSettingsForTesting} from '../shared/nearby_share_settings.js';
export {NearbySettings, NearbyShareSettingsBehavior} from '../shared/nearby_share_settings_behavior.js';
export {setCrosAudioConfigForTesting} from './device_page/cros_audio_config.js';
export {DevicePageBrowserProxy, DevicePageBrowserProxyImpl, IdleBehavior, LidClosedBehavior, NoteAppLockScreenSupport, setDisplayApiForTesting, StorageSpaceState} from './device_page/device_page_browser_proxy.js';
export {fakeKeyboards, fakeMice, fakePointingSticks, fakeTouchpads} from './device_page/fake_input_device_data.js';
export {FakeInputDeviceSettingsProvider} from './device_page/fake_input_device_settings_provider.js';
export {getInputDeviceSettingsProvider, setInputDeviceSettingsProviderForTesting, setupFakeInputDeviceSettingsProvider} from './device_page/input_device_mojo_interface_provider.js';
export {MetaKey, ModifierKey} from './device_page/input_device_settings_types.js';
export {SettingsPerDeviceKeyboardElement} from './device_page/per_device_keyboard.js';
export {SettingsPerDeviceKeyboardRemapKeysElement} from './device_page/per_device_keyboard_remap_keys.js';
export {SettingsPerDeviceKeyboardSubsectionElement} from './device_page/per_device_keyboard_subsection.js';
export {SettingsPerDeviceMouseSubsectionElement} from './device_page/per_device_mouse_subsection.js';
export {SettingsPerDevicePointingStickSubsectionElement} from './device_page/per_device_pointing_stick_subsection.js';
export {SettingsPerDeviceTouchpadSubsectionElement} from './device_page/per_device_touchpad_subsection.js';
export {GoogleAssistantBrowserProxyImpl} from './google_assistant_page/google_assistant_browser_proxy.js';
export {ConsentStatus, DspHotwordState} from './google_assistant_page/google_assistant_page.js';
export {InternetPageBrowserProxy, InternetPageBrowserProxyImpl} from './internet_page/internet_page_browser_proxy.js';
export {KerberosAccountsBrowserProxyImpl, KerberosConfigErrorCode, KerberosErrorType} from './kerberos_page/kerberos_accounts_browser_proxy.js';
export {recordClick, recordNavigation, recordPageBlur, recordPageFocus, recordSearch, recordSettingChange, setUserActionRecorderForTesting} from './metrics_recorder.js';
export {MultiDeviceBrowserProxy, MultiDeviceBrowserProxyImpl} from './multidevice_page/multidevice_browser_proxy.js';
export {MultiDeviceFeature, MultiDeviceFeatureState, MultiDevicePageContentData, MultiDeviceSettingsMode, PhoneHubFeatureAccessProhibitedReason, PhoneHubFeatureAccessStatus, PhoneHubPermissionsSetupMode, SmartLockSignInEnabledState} from './multidevice_page/multidevice_constants.js';
export {NotificationAccessSetupOperationStatus} from './multidevice_page/multidevice_notification_access_setup_dialog.js';
export {PermissionsSetupStatus, SetupFlowStatus} from './multidevice_page/multidevice_permissions_setup_dialog.js';
export {Account, NearbyAccountManagerBrowserProxy, NearbyAccountManagerBrowserProxyImpl} from './nearby_share_page/nearby_account_manager_browser_proxy.js';
export {getReceiveManager, observeReceiveManager, setReceiveManagerForTesting} from './nearby_share_page/nearby_share_receive_manager.js';
export {dataUsageStringToEnum, NearbyShareDataUsage} from './nearby_share_page/types.js';
export {ManageA11yPageBrowserProxy, ManageA11yPageBrowserProxyImpl} from './os_a11y_page/manage_a11y_page_browser_proxy.js';
export {OsA11yPageBrowserProxy, OsA11yPageBrowserProxyImpl} from './os_a11y_page/os_a11y_page_browser_proxy.js';
export {SelectToSpeakSubpageBrowserProxy, SelectToSpeakSubpageBrowserProxyImpl} from './os_a11y_page/select_to_speak_subpage_browser_proxy.js';
export {SwitchAccessSubpageBrowserProxy, SwitchAccessSubpageBrowserProxyImpl} from './os_a11y_page/switch_access_subpage_browser_proxy.js';
export {TextToSpeechPageBrowserProxy, TextToSpeechPageBrowserProxyImpl} from './os_a11y_page/text_to_speech_page_browser_proxy.js';
export {TtsSubpageBrowserProxy, TtsSubpageBrowserProxyImpl} from './os_a11y_page/tts_subpage_browser_proxy.js';
export {AboutPageBrowserProxyImpl, BrowserChannel, UpdateStatus} from './os_about_page/about_page_browser_proxy.js';
export {DeviceNameBrowserProxyImpl} from './os_about_page/device_name_browser_proxy.js';
export {DeviceNameState, SetDeviceNameResult} from './os_about_page/device_name_util.js';
export {AndroidAppsBrowserProxyImpl} from './os_apps_page/android_apps_browser_proxy.js';
export {addApp, changeApp, removeApp, updateSelectedAppId} from './os_apps_page/app_management_page/actions.js';
export {AppManagementBrowserProxy} from './os_apps_page/app_management_page/browser_proxy.js';
export {FakePageHandler} from './os_apps_page/app_management_page/fake_page_handler.js';
export {PluginVmBrowserProxyImpl} from './os_apps_page/app_management_page/plugin_vm_page/plugin_vm_browser_proxy.js';
export {reduceAction, updateApps} from './os_apps_page/app_management_page/reducers.js';
export {AppManagementStore} from './os_apps_page/app_management_page/store.js';
export {AppManagementStoreMixin} from './os_apps_page/app_management_page/store_mixin.js';
export {setAppNotificationProviderForTesting} from './os_apps_page/app_notifications_page/mojo_interface_provider.js';
export {OsBluetoothDevicesSubpageBrowserProxyImpl} from './os_bluetooth_page/os_bluetooth_devices_subpage_browser_proxy.js';
export {FastPairSavedDevicesOptInStatus} from './os_bluetooth_page/settings_fast_pair_constants.js';
export {osPageVisibility} from './os_page_visibility.js';
export {AccountManagerBrowserProxy, AccountManagerBrowserProxyImpl} from './os_people_page/account_manager_browser_proxy.js';
export {FingerprintBrowserProxyImpl, FingerprintResultType} from './os_people_page/fingerprint_browser_proxy.js';
export {OsSyncBrowserProxyImpl} from './os_people_page/os_sync_browser_proxy.js';
export {FingerprintSetupStep} from './os_people_page/setup_fingerprint_dialog.js';
export {MetricsConsentBrowserProxy, MetricsConsentBrowserProxyImpl, MetricsConsentState} from './os_privacy_page/metrics_consent_browser_proxy.js';
export {DataAccessPolicyState, PeripheralDataAccessBrowserProxy, PeripheralDataAccessBrowserProxyImpl} from './os_privacy_page/peripheral_data_access_browser_proxy.js';
export {OsResetBrowserProxyImpl} from './os_reset_page/os_reset_browser_proxy.js';
export {SearchEngine, SearchEnginesBrowserProxy, SearchEnginesBrowserProxyImpl, SearchEnginesInfo} from './os_search_page/search_engines_browser_proxy.js';
export {routes} from './os_settings_routes.js';
export {OsSettingsSearchBoxBrowserProxyImpl} from './os_settings_search_box/os_settings_search_box_browser_proxy.js';
export {ParentalControlsBrowserProxy, ParentalControlsBrowserProxyImpl} from './parental_controls_page/parental_controls_browser_proxy.js';
export {PersonalizationHubBrowserProxy, PersonalizationHubBrowserProxyImpl} from './personalization_page/personalization_hub_browser_proxy.js';
export {Route, Router} from './router.js';
export {getPersonalizationSearchHandler, setPersonalizationSearchHandlerForTesting} from './search/personalization_search_handler.js';
export {getSettingsSearchHandler, setSettingsSearchHandlerForTesting} from './search/settings_search_handler.js';
export {
appNotificationHandlerMojom,
crosAudioConfigMojom,
fakeCrosAudioConfig,
personalizationSearchMojom,
routesMojomWebui,
searchMojomWebui,
searchResultIconMojomWebui,
settingMojomWebui,
userActionRecorderMojomWebui,
};
// TODO(b/257329722) After the Jelly experiment is launched, add the CSS link
// element directly to the HTML.
const jellyEnabled = loadTimeData.getBoolean('isJellyEnabled');
if (jellyEnabled) {
const link = document.createElement('link');
link.rel = 'stylesheet';
link.href = 'chrome://theme/colors.css?sets=legacy,sys';
document.head.appendChild(link);
document.body.classList.add('jelly-enabled');
}
window.onload = () => {
if (jellyEnabled) {
startColorChangeUpdater();
}
};