From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- browser/base/content/aboutDialog-appUpdater.js | 300 + browser/base/content/aboutDialog.css | 189 + browser/base/content/aboutDialog.js | 105 + browser/base/content/aboutDialog.xhtml | 162 + browser/base/content/aboutFrameCrashed.html | 32 + browser/base/content/aboutRestartRequired.js | 42 + browser/base/content/aboutRestartRequired.xhtml | 63 + browser/base/content/aboutRobots-icon.png | Bin 0 -> 7599 bytes browser/base/content/aboutRobots.css | 7 + browser/base/content/aboutRobots.js | 15 + browser/base/content/aboutRobots.xhtml | 73 + browser/base/content/aboutTabCrashed.css | 11 + browser/base/content/aboutTabCrashed.js | 265 + browser/base/content/aboutTabCrashed.xhtml | 113 + browser/base/content/appmenu-viewcache.inc.xhtml | 769 ++ browser/base/content/blanktab.html | 15 + browser/base/content/blockedSite.js | 168 + browser/base/content/blockedSite.xhtml | 83 + browser/base/content/browser-a11yUtils.js | 80 + browser/base/content/browser-addons.js | 1927 ++++ browser/base/content/browser-allTabsMenu.inc.xhtml | 43 + browser/base/content/browser-allTabsMenu.js | 189 + browser/base/content/browser-box.inc.xhtml | 28 + browser/base/content/browser-captivePortal.js | 406 + browser/base/content/browser-context.inc | 452 + browser/base/content/browser-ctrlTab.js | 810 ++ browser/base/content/browser-customization.js | 181 + .../content/browser-data-submission-info-bar.js | 122 + .../base/content/browser-development-helpers.js | 45 + .../content/browser-fullScreenAndPointerLock.js | 992 ++ browser/base/content/browser-fullZoom.js | 756 ++ browser/base/content/browser-gestureSupport.js | 993 ++ browser/base/content/browser-graphics-utils.js | 59 + browser/base/content/browser-menubar.inc | 525 + browser/base/content/browser-pageActions.js | 1015 ++ browser/base/content/browser-pagestyle.js | 125 + browser/base/content/browser-places.js | 2282 +++++ browser/base/content/browser-safebrowsing.js | 75 + browser/base/content/browser-sets.inc | 403 + browser/base/content/browser-sidebar.js | 674 ++ browser/base/content/browser-siteIdentity.js | 1376 +++ .../base/content/browser-sitePermissionPanel.js | 1122 ++ browser/base/content/browser-siteProtections.js | 2885 ++++++ browser/base/content/browser-sync.js | 2182 ++++ browser/base/content/browser-tabsintitlebar.js | 92 + browser/base/content/browser-thumbnails.js | 228 + browser/base/content/browser-toolbarKeyNav.js | 435 + browser/base/content/browser-unified-extensions.js | 206 + browser/base/content/browser-webrtc.js | 140 + browser/base/content/browser.css | 1528 +++ browser/base/content/browser.js | 10159 +++++++++++++++++++ browser/base/content/browser.xhtml | 183 + browser/base/content/contentTheme.js | 215 + browser/base/content/default-bookmarks.html | 69 + .../content/docs/tabbrowser/async-tab-switcher.rst | 239 + browser/base/content/docs/tabbrowser/index.rst | 35 + .../content/fullscreen-and-pointerlock.inc.xhtml | 30 + browser/base/content/global-scripts.inc | 25 + browser/base/content/hiddenWindowMac.xhtml | 35 + browser/base/content/logos/etp-mobile.svg | 13 + browser/base/content/logos/fxa-logo.svg | 6 + browser/base/content/logos/lockwise.svg | 4 + browser/base/content/logos/monitor.svg | 4 + browser/base/content/logos/passkey.svg | 15 + browser/base/content/logos/proxy-dark.svg | 4 + browser/base/content/logos/proxy-light.svg | 4 + browser/base/content/logos/relay.svg | 33 + browser/base/content/logos/send.svg | 4 + .../logos/tracking-protection-dark-theme.svg | 4 + browser/base/content/logos/tracking-protection.svg | 4 + browser/base/content/logos/vpn-dark.svg | 6 + browser/base/content/logos/vpn-light.svg | 6 + browser/base/content/logos/vpn-promo-logo.svg | 4 + browser/base/content/macWindow.inc.xhtml | 38 + browser/base/content/main-popupset.inc.xhtml | 661 ++ browser/base/content/metrics.yaml | 92 + browser/base/content/moz.build | 185 + browser/base/content/navigator-toolbox.inc.xhtml | 723 ++ browser/base/content/nonbrowser-mac.js | 160 + browser/base/content/nsContextMenu.js | 2732 +++++ browser/base/content/overrides/app-license.html | 8 + browser/base/content/pageinfo/pageInfo.css | 89 + browser/base/content/pageinfo/pageInfo.js | 1186 +++ browser/base/content/pageinfo/pageInfo.xhtml | 414 + browser/base/content/pageinfo/permissions.js | 240 + browser/base/content/pageinfo/security.js | 425 + browser/base/content/popup-notifications.inc | 282 + browser/base/content/robot.ico | Bin 0 -> 1791 bytes browser/base/content/safeMode.css | 7 + browser/base/content/safeMode.js | 85 + browser/base/content/safeMode.xhtml | 52 + browser/base/content/sanitize.xhtml | 144 + browser/base/content/sanitizeDialog.css | 73 + browser/base/content/sanitizeDialog.js | 597 ++ browser/base/content/sanitize_v2.xhtml | 232 + browser/base/content/spotlight.html | 37 + browser/base/content/spotlight.js | 84 + browser/base/content/static-robot.png | Bin 0 -> 224 bytes browser/base/content/swipe-navigation.inc.xhtml | 33 + browser/base/content/tabbrowser-tab.js | 713 ++ browser/base/content/tabbrowser-tabs.js | 2188 ++++ browser/base/content/tabbrowser.css | 101 + browser/base/content/tabbrowser.js | 7798 ++++++++++++++ .../base/content/test/about/POSTSearchEngine.xml | 6 + browser/base/content/test/about/browser.toml | 88 + .../content/test/about/browser_aboutCertError.js | 551 + .../test/about/browser_aboutCertError_clockSkew.js | 153 + .../test/about/browser_aboutCertError_exception.js | 221 + .../test/about/browser_aboutCertError_mitm.js | 159 + .../browser_aboutCertError_noSubjectAltName.js | 67 + .../about/browser_aboutCertError_offlineSupport.js | 52 + .../test/about/browser_aboutCertError_telemetry.js | 164 + .../test/about/browser_aboutDialog_distribution.js | 66 + .../test/about/browser_aboutHome_search_POST.js | 66 + .../about/browser_aboutHome_search_composing.js | 110 + .../about/browser_aboutHome_search_searchbar.js | 44 + .../about/browser_aboutHome_search_suggestion.js | 74 + .../about/browser_aboutHome_search_telemetry.js | 101 + .../content/test/about/browser_aboutNetError.js | 242 + .../test/about/browser_aboutNetError_csp_iframe.js | 153 + .../about/browser_aboutNetError_native_fallback.js | 176 + .../test/about/browser_aboutNetError_trr.js | 189 + .../test/about/browser_aboutNetError_xfo_iframe.js | 139 + .../about/browser_aboutNewTab_bookmarksToolbar.js | 317 + .../browser_aboutNewTab_bookmarksToolbarEmpty.js | 183 + ...rowser_aboutNewTab_bookmarksToolbarNewWindow.js | 82 + .../browser_aboutNewTab_bookmarksToolbarPrefs.js | 74 + .../content/test/about/browser_aboutStopReload.js | 175 + .../content/test/about/browser_aboutSupport.js | 146 + .../browser_aboutSupport_newtab_security_state.js | 19 + .../test/about/browser_aboutSupport_places.js | 45 + .../base/content/test/about/browser_bug435325.js | 58 + .../base/content/test/about/browser_bug633691.js | 32 + browser/base/content/test/about/csp_iframe.sjs | 33 + browser/base/content/test/about/dummy_page.html | 9 + browser/base/content/test/about/head.js | 221 + .../base/content/test/about/iframe_page_csp.html | 16 + .../base/content/test/about/iframe_page_xfo.html | 16 + browser/base/content/test/about/print_postdata.sjs | 25 + .../content/test/about/searchSuggestionEngine.sjs | 9 + .../content/test/about/searchSuggestionEngine.xml | 11 + .../base/content/test/about/slow_loading_page.sjs | 29 + browser/base/content/test/about/xfo_iframe.sjs | 34 + browser/base/content/test/alerts/browser.toml | 28 + .../test/alerts/browser_notification_close.js | 108 + .../alerts/browser_notification_do_not_disturb.js | 160 + .../alerts/browser_notification_open_settings.js | 80 + .../browser_notification_remove_permission.js | 86 + .../test/alerts/browser_notification_replace.js | 66 + .../alerts/browser_notification_tab_switching.js | 117 + .../test/alerts/file_dom_notifications.html | 39 + browser/base/content/test/alerts/head.js | 73 + browser/base/content/test/backforward/browser.toml | 5 + .../test/backforward/browser_history_menu.js | 175 + browser/base/content/test/caps/browser.toml | 8 + .../caps/browser_principalSerialization_csp.js | 106 + .../caps/browser_principalSerialization_json.js | 161 + .../browser_principalSerialization_version1.js | 159 + .../base/content/test/captivePortal/browser.toml | 16 + .../captivePortal/browser_CaptivePortalWatcher.js | 125 + .../browser_CaptivePortalWatcher_1.js | 108 + .../browser_captivePortalTabReference.js | 66 + .../browser_captivePortal_certErrorUI.js | 221 + .../browser_captivePortal_https_only.js | 73 + .../browser_closeCapPortalTabCanonicalURL.js | 230 + browser/base/content/test/captivePortal/head.js | 270 + browser/base/content/test/chrome/chrome.toml | 5 + .../content/test/chrome/test_aboutCrashed.xhtml | 77 + .../test/chrome/test_aboutRestartRequired.xhtml | 76 + .../base/content/test/contentTheme/browser.toml | 3 + .../browser_contentTheme_in_process_tab.js | 80 + browser/base/content/test/contextMenu/browser.toml | 101 + .../content/test/contextMenu/browser_bug1798178.js | 89 + .../test/contextMenu/browser_contextmenu.js | 2034 ++++ .../contextMenu/browser_contextmenu_badiframe.js | 182 + .../browser_contextmenu_contenteditable.js | 118 + .../test/contextMenu/browser_contextmenu_iframe.js | 73 + .../test/contextMenu/browser_contextmenu_input.js | 387 + .../contextMenu/browser_contextmenu_inspect.js | 61 + .../contextMenu/browser_contextmenu_keyword.js | 198 + .../contextMenu/browser_contextmenu_linkopen.js | 109 + .../browser_contextmenu_loadblobinnewtab.html | 56 + .../browser_contextmenu_loadblobinnewtab.js | 186 + .../browser_contextmenu_save_blocked.js | 78 + .../browser_contextmenu_share_macosx.js | 144 + .../contextMenu/browser_contextmenu_share_win.js | 71 + .../contextMenu/browser_contextmenu_shareurl.html | 2 + .../contextMenu/browser_contextmenu_spellcheck.js | 334 + .../test/contextMenu/browser_contextmenu_touch.js | 94 + .../test/contextMenu/browser_copy_image_link.js | 40 + .../contextMenu/browser_strip_on_share_link.js | 189 + .../test/contextMenu/browser_utilityOverlay.js | 78 + .../contextMenu/browser_utilityOverlayPrincipal.js | 72 + .../content/test/contextMenu/browser_view_image.js | 197 + .../base/content/test/contextMenu/bug1798178.sjs | 9 + .../content/test/contextMenu/contextmenu_common.js | 437 + .../content/test/contextMenu/ctxmenu-image.png | Bin 0 -> 5401 bytes browser/base/content/test/contextMenu/doggy.png | Bin 0 -> 46876 bytes .../content/test/contextMenu/file_bug1798178.html | 5 + browser/base/content/test/contextMenu/firebird.png | Bin 0 -> 16179 bytes .../content/test/contextMenu/firebird.png^headers^ | 2 + .../test/contextMenu/subtst_contextmenu.html | 61 + .../test/contextMenu/subtst_contextmenu_input.html | 30 + .../contextMenu/subtst_contextmenu_keyword.html | 17 + .../contextMenu/subtst_contextmenu_webext.html | 12 + .../test/contextMenu/subtst_contextmenu_xul.xhtml | 9 + .../test/contextMenu/test_contextmenu_iframe.html | 11 + .../test/contextMenu/test_contextmenu_links.html | 14 + .../contextMenu/test_view_image_inline_svg.html | 15 + .../test_view_image_revoked_cached_blob.html | 40 + browser/base/content/test/favicons/accept.html | 9 + browser/base/content/test/favicons/accept.sjs | 15 + browser/base/content/test/favicons/auth_test.html | 11 + browser/base/content/test/favicons/auth_test.png | 0 .../content/test/favicons/auth_test.png^headers^ | 2 + browser/base/content/test/favicons/blank.html | 6 + browser/base/content/test/favicons/browser.toml | 150 + .../content/test/favicons/browser_bug408415.js | 34 + .../content/test/favicons/browser_bug550565.js | 35 + .../test/favicons/browser_favicon_accept.js | 30 + .../content/test/favicons/browser_favicon_auth.js | 27 + .../content/test/favicons/browser_favicon_cache.js | 50 + .../test/favicons/browser_favicon_change.js | 33 + .../browser_favicon_change_not_in_document.js | 148 + .../test/favicons/browser_favicon_credentials.js | 89 + .../test/favicons/browser_favicon_crossorigin.js | 64 + .../test/favicons/browser_favicon_empty_data.js | 72 + .../content/test/favicons/browser_favicon_load.js | 167 + .../test/favicons/browser_favicon_nostore.js | 169 + .../test/favicons/browser_favicon_referer.js | 65 + .../content/test/favicons/browser_favicon_store.js | 56 + .../test/favicons/browser_icon_discovery.js | 136 + .../test/favicons/browser_invalid_href_fallback.js | 29 + .../test/favicons/browser_missing_favicon.js | 36 + .../content/test/favicons/browser_mixed_content.js | 26 + .../browser_multiple_icons_in_short_timeframe.js | 37 + .../content/test/favicons/browser_oversized.js | 28 + .../test/favicons/browser_preferred_icons.js | 140 + .../base/content/test/favicons/browser_redirect.js | 20 + .../content/test/favicons/browser_rich_icons.js | 50 + .../base/content/test/favicons/browser_rooticon.js | 24 + .../favicons/browser_subframe_favicons_not_used.js | 22 + .../content/test/favicons/browser_title_flicker.js | 185 + .../base/content/test/favicons/cookie_favicon.html | 11 + .../base/content/test/favicons/cookie_favicon.sjs | 26 + browser/base/content/test/favicons/credentials.png | Bin 0 -> 580 bytes .../content/test/favicons/credentials.png^headers^ | 3 + .../base/content/test/favicons/credentials1.html | 10 + .../base/content/test/favicons/credentials2.html | 10 + .../base/content/test/favicons/crossorigin.html | 10 + browser/base/content/test/favicons/crossorigin.png | Bin 0 -> 580 bytes .../content/test/favicons/crossorigin.png^headers^ | 1 + .../content/test/favicons/datauri-favicon.html | 8 + browser/base/content/test/favicons/discovery.html | 8 + .../test/favicons/file_bug970276_favicon1.ico | Bin 0 -> 1406 bytes .../test/favicons/file_bug970276_favicon2.ico | Bin 0 -> 1406 bytes .../test/favicons/file_bug970276_popup1.html | 14 + .../test/favicons/file_bug970276_popup2.html | 12 + .../base/content/test/favicons/file_favicon.html | 11 + .../base/content/test/favicons/file_favicon.png | Bin 0 -> 344 bytes .../test/favicons/file_favicon.png^headers^ | 1 + .../content/test/favicons/file_favicon_change.html | 13 + .../file_favicon_change_not_in_document.html | 20 + .../content/test/favicons/file_favicon_empty.html | 12 + .../test/favicons/file_favicon_no_referrer.html | 11 + .../test/favicons/file_favicon_redirect.html | 12 + .../test/favicons/file_favicon_redirect.ico | 0 .../favicons/file_favicon_redirect.ico^headers^ | 2 + .../test/favicons/file_favicon_thirdParty.html | 11 + .../content/test/favicons/file_generic_favicon.ico | Bin 0 -> 1406 bytes .../test/favicons/file_insecure_favicon.html | 11 + .../content/test/favicons/file_invalid_href.html | 12 + .../base/content/test/favicons/file_mask_icon.html | 11 + .../base/content/test/favicons/file_rich_icon.html | 12 + .../content/test/favicons/file_with_favicon.html | 12 + .../test/favicons/file_with_slow_favicon.html | 10 + browser/base/content/test/favicons/head.js | 98 + browser/base/content/test/favicons/icon.svg | 11 + browser/base/content/test/favicons/large.png | Bin 0 -> 21237 bytes .../base/content/test/favicons/large_favicon.html | 12 + browser/base/content/test/favicons/moz.png | Bin 0 -> 580 bytes browser/base/content/test/favicons/no-store.html | 11 + browser/base/content/test/favicons/no-store.png | Bin 0 -> 580 bytes .../content/test/favicons/no-store.png^headers^ | 1 + browser/base/content/test/favicons/rich_moz_1.png | Bin 0 -> 580 bytes browser/base/content/test/favicons/rich_moz_2.png | Bin 0 -> 580 bytes browser/base/content/test/forms/browser.toml | 34 + .../base/content/test/forms/browser_selectpopup.js | 914 ++ .../test/forms/browser_selectpopup_colors.js | 867 ++ .../content/test/forms/browser_selectpopup_dir.js | 21 + .../content/test/forms/browser_selectpopup_hr.js | 55 + .../test/forms/browser_selectpopup_large.js | 323 + .../test/forms/browser_selectpopup_searchfocus.js | 36 + .../test/forms/browser_selectpopup_showPicker.js | 60 + .../forms/browser_selectpopup_text_transform.js | 40 + .../test/forms/browser_selectpopup_toplevel.js | 25 + .../test/forms/browser_selectpopup_user_input.js | 90 + .../test/forms/browser_selectpopup_width.js | 49 + .../test/forms/browser_selectpopup_xhtml.js | 36 + browser/base/content/test/forms/head.js | 51 + .../test/fullscreen/FullscreenFrame.sys.mjs | 102 + browser/base/content/test/fullscreen/browser.toml | 65 + .../content/test/fullscreen/browser_bug1557041.js | 47 + .../content/test/fullscreen/browser_bug1620341.js | 102 + .../test/fullscreen/browser_domFS_statuspanel.js | 95 + .../fullscreen/browser_fullscreen_api_fission.js | 252 + .../fullscreen/browser_fullscreen_context_menu.js | 142 + .../fullscreen/browser_fullscreen_cross_origin.js | 64 + .../fullscreen/browser_fullscreen_enterInUrlbar.js | 56 + .../fullscreen/browser_fullscreen_from_minimize.js | 82 + .../browser_fullscreen_keydown_reservation.js | 112 + .../test/fullscreen/browser_fullscreen_menus.js | 72 + .../test/fullscreen/browser_fullscreen_newtab.js | 55 + .../fullscreen/browser_fullscreen_newwindow.js | 83 + .../browser_fullscreen_permissions_prompt.js | 290 + .../test/fullscreen/browser_fullscreen_warning.js | 280 + .../fullscreen/browser_fullscreen_window_focus.js | 136 + .../fullscreen/browser_fullscreen_window_open.js | 102 + .../base/content/test/fullscreen/fullscreen.html | 12 + .../content/test/fullscreen/fullscreen_frame.html | 9 + browser/base/content/test/fullscreen/head.js | 172 + .../test/fullscreen/open_and_focus_helper.html | 56 + .../base/content/test/general/alltabslistener.html | 8 + .../base/content/test/general/app_bug575561.html | 18 + .../test/general/app_subframe_bug575561.html | 12 + browser/base/content/test/general/audio.ogg | Bin 0 -> 14293 bytes browser/base/content/test/general/browser.toml | 536 + .../content/test/general/browser_accesskeys.js | 202 + .../test/general/browser_addCertException.js | 77 + .../test/general/browser_alltabslistener.js | 332 + .../test/general/browser_backButtonFitts.js | 40 + .../browser_beforeunload_duplicate_dialogs.js | 114 + .../content/test/general/browser_bug1261299.js | 112 + .../content/test/general/browser_bug1297539.js | 126 + .../content/test/general/browser_bug1299667.js | 70 + .../base/content/test/general/browser_bug321000.js | 91 + .../base/content/test/general/browser_bug356571.js | 101 + .../base/content/test/general/browser_bug380960.js | 18 + .../base/content/test/general/browser_bug406216.js | 64 + .../base/content/test/general/browser_bug417483.js | 50 + .../base/content/test/general/browser_bug424101.js | 72 + .../base/content/test/general/browser_bug427559.js | 41 + .../base/content/test/general/browser_bug431826.js | 59 + .../base/content/test/general/browser_bug432599.js | 109 + .../base/content/test/general/browser_bug455852.js | 27 + .../base/content/test/general/browser_bug462289.js | 144 + .../base/content/test/general/browser_bug462673.js | 66 + .../base/content/test/general/browser_bug477014.js | 36 + .../base/content/test/general/browser_bug479408.js | 23 + .../test/general/browser_bug479408_sample.html | 4 + .../base/content/test/general/browser_bug481560.js | 16 + .../base/content/test/general/browser_bug484315.js | 14 + .../base/content/test/general/browser_bug491431.js | 42 + .../base/content/test/general/browser_bug495058.js | 53 + .../base/content/test/general/browser_bug519216.js | 48 + .../base/content/test/general/browser_bug520538.js | 27 + .../base/content/test/general/browser_bug521216.js | 68 + .../base/content/test/general/browser_bug533232.js | 56 + .../base/content/test/general/browser_bug537013.js | 168 + .../base/content/test/general/browser_bug537474.js | 20 + .../base/content/test/general/browser_bug563588.js | 42 + .../base/content/test/general/browser_bug565575.js | 21 + .../base/content/test/general/browser_bug567306.js | 65 + .../base/content/test/general/browser_bug575561.js | 118 + .../base/content/test/general/browser_bug577121.js | 27 + .../base/content/test/general/browser_bug578534.js | 31 + .../base/content/test/general/browser_bug579872.js | 26 + .../base/content/test/general/browser_bug581253.js | 74 + .../base/content/test/general/browser_bug585785.js | 48 + .../base/content/test/general/browser_bug585830.js | 27 + .../base/content/test/general/browser_bug594131.js | 25 + .../base/content/test/general/browser_bug596687.js | 28 + .../base/content/test/general/browser_bug597218.js | 40 + .../base/content/test/general/browser_bug609700.js | 28 + .../base/content/test/general/browser_bug623893.js | 50 + .../base/content/test/general/browser_bug624734.js | 49 + .../base/content/test/general/browser_bug664672.js | 27 + .../base/content/test/general/browser_bug676619.js | 225 + .../base/content/test/general/browser_bug710878.js | 49 + .../base/content/test/general/browser_bug724239.js | 56 + .../base/content/test/general/browser_bug734076.js | 195 + .../base/content/test/general/browser_bug749738.js | 32 + .../test/general/browser_bug763468_perwindowpb.js | 57 + .../test/general/browser_bug767836_perwindowpb.js | 72 + .../base/content/test/general/browser_bug817947.js | 51 + .../base/content/test/general/browser_bug832435.js | 25 + .../base/content/test/general/browser_bug882977.js | 33 + .../base/content/test/general/browser_bug963945.js | 26 + .../base/content/test/general/browser_clipboard.js | 290 + .../test/general/browser_clipboard_pastefile.js | 133 + .../test/general/browser_contentAltClick.js | 205 + .../test/general/browser_contentAreaClick.js | 329 + .../base/content/test/general/browser_ctrlTab.js | 464 + .../general/browser_datachoices_notification.js | 293 + .../test/general/browser_documentnavigation.js | 493 + .../browser_domFullscreen_fullscreenMode.js | 237 + .../test/general/browser_double_close_tab.js | 120 + browser/base/content/test/general/browser_drag.js | 58 + .../content/test/general/browser_duplicateIDs.js | 11 + .../content/test/general/browser_findbarClose.js | 47 + .../content/test/general/browser_focusonkeydown.js | 34 + .../test/general/browser_fullscreen-window-open.js | 366 + .../content/test/general/browser_gestureSupport.js | 1150 +++ .../content/test/general/browser_hide_removing.js | 27 + .../base/content/test/general/browser_homeDrop.js | 111 + ...rowser_invalid_uri_back_forward_manipulation.js | 48 + .../test/general/browser_lastAccessedTab.js | 71 + .../test/general/browser_menuButtonFitts.js | 69 + .../test/general/browser_middleMouse_noJSPaste.js | 49 + .../base/content/test/general/browser_minimize.js | 49 + .../browser_modifiedclick_inherit_principal.js | 42 + .../content/test/general/browser_newTabDrop.js | 218 + .../content/test/general/browser_newWindowDrop.js | 225 + ...browser_new_http_window_opened_from_file_tab.js | 63 + .../test/general/browser_newwindow_focus.js | 93 + .../content/test/general/browser_plainTextLinks.js | 237 + .../content/test/general/browser_printpreview.js | 43 + .../general/browser_private_browsing_window.js | 133 + .../test/general/browser_private_no_prompt.js | 12 + .../content/test/general/browser_refreshBlocker.js | 211 + .../content/test/general/browser_relatedTabs.js | 74 + .../test/general/browser_remoteTroubleshoot.js | 130 + .../browser_remoteWebNavigation_postdata.js | 55 + .../test/general/browser_restore_isAppTab.js | 87 + .../test/general/browser_save_link-perwindowpb.js | 214 + .../browser_save_link_when_window_navigates.js | 197 + .../browser_save_private_link_perwindowpb.js | 127 + .../content/test/general/browser_save_video.js | 99 + .../test/general/browser_save_video_frame.js | 103 + .../test/general/browser_selectTabAtIndex.js | 89 + .../base/content/test/general/browser_star_hsts.js | 87 + .../content/test/general/browser_star_hsts.sjs | 12 + .../browser_storagePressure_notification.js | 182 + .../base/content/test/general/browser_tabDrop.js | 204 + .../general/browser_tab_close_dependent_window.js | 35 + .../test/general/browser_tab_detach_restore.js | 54 + .../general/browser_tab_drag_drop_perwindow.js | 417 + .../content/test/general/browser_tab_dragdrop.js | 257 + .../content/test/general/browser_tab_dragdrop2.js | 65 + .../general/browser_tab_dragdrop2_frame1.xhtml | 158 + .../test/general/browser_tab_dragdrop_embed.html | 2 + .../base/content/test/general/browser_tabfocus.js | 811 ++ .../test/general/browser_tabkeynavigation.js | 223 + .../general/browser_tabs_close_beforeunload.js | 69 + .../content/test/general/browser_tabs_isActive.js | 235 + .../content/test/general/browser_tabs_owner.js | 40 + ...r_testOpenNewRemoteTabsFromNonRemoteBrowsers.js | 144 + .../content/test/general/browser_typeAheadFind.js | 31 + .../general/browser_unknownContentType_title.js | 88 + .../content/test/general/browser_unloaddialogs.js | 40 + .../general/browser_viewSourceInTabOnViewSource.js | 60 + .../test/general/browser_visibleFindSelection.js | 62 + .../content/test/general/browser_visibleTabs.js | 125 + .../browser_visibleTabs_bookmarkAllPages.js | 35 + .../test/general/browser_visibleTabs_tabPreview.js | 52 + .../test/general/browser_windowactivation.js | 112 + .../content/test/general/browser_zbug569342.js | 77 + browser/base/content/test/general/bug792517-2.html | 5 + browser/base/content/test/general/bug792517.html | 5 + browser/base/content/test/general/bug792517.sjs | 13 + .../content/test/general/clipboard_pastefile.html | 52 + .../content/test/general/close_beforeunload.html | 8 + .../close_beforeunload_opens_second_tab.html | 3 + .../base/content/test/general/download_page.html | 72 + .../base/content/test/general/download_page_1.txt | 1 + .../base/content/test/general/download_page_2.txt | 1 + .../download_with_content_disposition_header.sjs | 19 + browser/base/content/test/general/dummy.ics | 13 + .../base/content/test/general/dummy.ics^headers^ | 1 + browser/base/content/test/general/dummy_page.html | 9 + .../general/file_documentnavigation_frameset.html | 12 + .../test/general/file_double_close_tab.html | 15 + .../test/general/file_fullscreen-window-open.html | 22 + .../test/general/file_window_activation.html | 4 + .../test/general/file_window_activation2.html | 1 + .../test/general/file_with_link_to_http.html | 9 + browser/base/content/test/general/head.js | 339 + browser/base/content/test/general/moz.png | Bin 0 -> 580 bytes .../general/navigating_window_with_download.html | 7 + .../base/content/test/general/print_postdata.sjs | 25 + .../content/test/general/redirect_download.sjs | 11 + .../base/content/test/general/refresh_header.sjs | 23 + browser/base/content/test/general/refresh_meta.sjs | 35 + .../base/content/test/general/test_bug462673.html | 18 + .../base/content/test/general/test_bug628179.html | 9 + .../test/general/test_remoteTroubleshoot.html | 50 + browser/base/content/test/general/title_test.svg | 59 + .../test/general/unknownContentType_file.pif | 1 + .../general/unknownContentType_file.pif^headers^ | 1 + browser/base/content/test/general/video.ogg | Bin 0 -> 285310 bytes browser/base/content/test/general/web_video.html | 10 + browser/base/content/test/general/web_video1.ogv | Bin 0 -> 28942 bytes .../content/test/general/web_video1.ogv^headers^ | 3 + browser/base/content/test/gesture/browser.toml | 3 + .../test/gesture/browser_gesture_navigation.js | 233 + .../test/historySwipeAnimation/browser.toml | 3 + .../browser_historySwipeAnimation.js | 49 + browser/base/content/test/keyboard/browser.toml | 22 + .../test/keyboard/browser_bookmarks_shortcut.js | 140 + .../browser_cancel_caret_browsing_in_content.js | 91 + .../content/test/keyboard/browser_popup_keyNav.js | 51 + .../test/keyboard/browser_toolbarButtonKeyPress.js | 334 + .../content/test/keyboard/browser_toolbarKeyNav.js | 643 ++ browser/base/content/test/keyboard/file_empty.html | 8 + .../content/test/keyboard/focusableContent.html | 1 + browser/base/content/test/keyboard/head.js | 61 + browser/base/content/test/menubar/browser.toml | 22 + .../test/menubar/browser_file_close_tabs.js | 60 + .../menubar/browser_file_menu_import_wizard.js | 23 + .../content/test/menubar/browser_file_share.js | 136 + .../browser_history_recently_closed_tabs.js | 397 + .../test/menubar/browser_search_bookmarks.js | 60 + .../content/test/menubar/browser_search_history.js | 56 + .../base/content/test/menubar/file_shareurl.html | 2 + .../base/content/test/metaTags/bad_meta_tags.html | 14 + browser/base/content/test/metaTags/browser.toml | 9 + .../content/test/metaTags/browser_bad_meta_tags.js | 37 + .../content/test/metaTags/browser_meta_tags.js | 57 + browser/base/content/test/metaTags/head.js | 19 + browser/base/content/test/metaTags/meta_tags.html | 29 + .../base/content/test/notificationbox/browser.toml | 7 + .../browser_notification_stacking.js | 78 + .../browser_notificationbar_telemetry.js | 224 + .../browser_tabnotificationbox_switch_tabs.js | 143 + .../base/content/test/outOfProcess/browser.toml | 19 + .../outOfProcess/browser_basic_outofprocess.js | 149 + .../test/outOfProcess/browser_controller.js | 127 + .../test/outOfProcess/browser_promisefocus.js | 262 + .../base/content/test/outOfProcess/file_base.html | 5 + .../content/test/outOfProcess/file_frame1.html | 5 + .../content/test/outOfProcess/file_frame2.html | 11 + .../content/test/outOfProcess/file_innerframe.html | 3 + browser/base/content/test/outOfProcess/head.js | 84 + browser/base/content/test/pageActions/browser.toml | 8 + .../pageActions/browser_PageActions_bookmark.js | 130 + .../pageActions/browser_PageActions_overflow.js | 257 + .../browser_PageActions_removeExtension.js | 338 + browser/base/content/test/pageActions/head.js | 163 + browser/base/content/test/pageStyle/browser.toml | 15 + .../pageStyle/browser_disable_author_style_oop.js | 100 + .../test/pageStyle/browser_page_style_menu.js | 177 + .../pageStyle/browser_page_style_menu_update.js | 49 + browser/base/content/test/pageStyle/head.js | 30 + .../base/content/test/pageStyle/page_style.html | 8 + .../test/pageStyle/page_style_only_alternates.html | 5 + .../content/test/pageStyle/page_style_sample.html | 45 + browser/base/content/test/pageStyle/style.css | 1 + browser/base/content/test/pageinfo/all_images.html | 15 + browser/base/content/test/pageinfo/browser.toml | 34 + .../browser_pageinfo_firstPartyIsolation.js | 89 + .../test/pageinfo/browser_pageinfo_iframe_media.js | 32 + .../test/pageinfo/browser_pageinfo_image_info.js | 57 + .../test/pageinfo/browser_pageinfo_images.js | 113 + .../test/pageinfo/browser_pageinfo_permissions.js | 258 + .../content/test/pageinfo/browser_pageinfo_rtl.js | 28 + .../test/pageinfo/browser_pageinfo_security.js | 356 + .../pageinfo/browser_pageinfo_separate_private.js | 49 + .../test/pageinfo/browser_pageinfo_svg_image.js | 34 + browser/base/content/test/pageinfo/iframes.html | 8 + browser/base/content/test/pageinfo/image.html | 5 + browser/base/content/test/pageinfo/svg_image.html | 11 + .../test/performance/PerfTestHelpers.sys.mjs | 77 + .../performance/StartupContentSubframe.sys.mjs | 55 + browser/base/content/test/performance/browser.toml | 115 + .../content/test/performance/browser_appmenu.js | 130 + .../performance/browser_hidden_browser_vsync.js | 56 + .../test/performance/browser_panel_vsync.js | 69 + .../test/performance/browser_preferences_usage.js | 272 + .../content/test/performance/browser_startup.js | 246 + .../test/performance/browser_startup_content.js | 186 + .../browser_startup_content_mainthreadio.js | 465 + .../browser_startup_content_subframe.js | 151 + .../test/performance/browser_startup_flicker.js | 72 + .../performance/browser_startup_hiddenwindow.js | 47 + .../test/performance/browser_startup_images.js | 136 + .../performance/browser_startup_mainthreadio.js | 881 ++ .../test/performance/browser_startup_syncIPC.js | 449 + .../content/test/performance/browser_tabclose.js | 108 + .../test/performance/browser_tabclose_grow.js | 91 + .../content/test/performance/browser_tabdetach.js | 118 + .../content/test/performance/browser_tabopen.js | 201 + .../test/performance/browser_tabopen_squeeze.js | 100 + .../browser_tabstrip_overflow_underflow.js | 200 + .../content/test/performance/browser_tabswitch.js | 123 + .../browser_toolbariconcolor_restyles.js | 65 + .../performance/browser_urlbar_keyed_search.js | 27 + .../test/performance/browser_urlbar_search.js | 27 + .../performance/browser_vsync_accessibility.js | 20 + .../test/performance/browser_window_resize.js | 132 + .../test/performance/browser_windowclose.js | 67 + .../content/test/performance/browser_windowopen.js | 164 + .../base/content/test/performance/file_empty.html | 1 + browser/base/content/test/performance/head.js | 1001 ++ .../content/test/performance/hidpi/browser.toml | 8 + .../base/content/test/performance/io/browser.toml | 38 + .../content/test/performance/lowdpi/browser.toml | 8 + browser/base/content/test/performance/moz.build | 17 + browser/base/content/test/performance/triage.json | 70 + browser/base/content/test/perftest.toml | 3 + .../content/test/perftest_browser_xhtml_dom.js | 85 + browser/base/content/test/permissions/browser.toml | 51 + .../test/permissions/browser_autoplay_blocked.html | 14 + .../test/permissions/browser_autoplay_blocked.js | 357 + .../permissions/browser_autoplay_blocked_slow.sjs | 36 + .../test/permissions/browser_autoplay_js.html | 16 + .../test/permissions/browser_autoplay_muted.html | 14 + .../browser_canvas_fingerprinting_resistance.js | 383 + .../permissions/browser_canvas_rfp_exclusion.js | 194 + .../permissions/browser_permission_delegate_geo.js | 278 + .../test/permissions/browser_permissions.js | 698 ++ .../browser_permissions_delegate_vibrate.js | 45 + .../browser_permissions_handling_user_input.js | 99 + .../permissions/browser_permissions_postPrompt.js | 82 + .../test/permissions/browser_reservedkey.js | 312 + .../permissions/browser_site_scoped_permissions.js | 124 + .../permissions/browser_temporary_permissions.js | 118 + .../browser_temporary_permissions_expiry.js | 208 + .../browser_temporary_permissions_navigation.js | 239 + .../browser_temporary_permissions_tabs.js | 148 + browser/base/content/test/permissions/dummy.js | 1 + browser/base/content/test/permissions/empty.html | 8 + browser/base/content/test/permissions/head.js | 28 + .../base/content/test/permissions/permissions.html | 49 + .../permissions/temporary_permissions_frame.html | 12 + .../temporary_permissions_subframe.html | 11 + browser/base/content/test/plugins/browser.toml | 15 + .../base/content/test/plugins/browser_bug797677.js | 45 + .../test/plugins/browser_enable_DRM_prompt.js | 298 + .../plugins/browser_globalplugin_crashinfobar.js | 63 + ...rowser_private_browsing_eme_persistent_state.js | 59 + browser/base/content/test/plugins/empty_file.html | 9 + browser/base/content/test/plugins/head.js | 204 + .../content/test/plugins/plugin_bug797677.html | 5 + .../content/test/popupNotifications/browser.toml | 98 + .../test/popupNotifications/browser_displayURI.js | 149 + .../browser_popupNotification.js | 394 + .../browser_popupNotification_2.js | 315 + .../browser_popupNotification_3.js | 378 + .../browser_popupNotification_4.js | 290 + .../browser_popupNotification_5.js | 502 + .../browser_popupNotification_accesskey.js | 44 + .../browser_popupNotification_checkbox.js | 248 + ..._popupNotification_hide_after_identity_panel.js | 36 + ...pupNotification_hide_after_protections_panel.js | 44 + .../browser_popupNotification_keyboard.js | 273 + .../browser_popupNotification_learnmore.js | 64 + .../browser_popupNotification_no_anchors.js | 288 + .../browser_popupNotification_security_delay.js | 402 + ...browser_popupNotification_selection_required.js | 57 + .../browser_reshow_in_background.js | 70 + .../base/content/test/popupNotifications/head.js | 367 + browser/base/content/test/popups/browser.toml | 93 + .../base/content/test/popups/browser_popupUI.js | 192 + .../content/test/popups/browser_popup_blocker.js | 155 + .../test/popups/browser_popup_blocker_frames.js | 100 + .../popups/browser_popup_blocker_identity_block.js | 242 + .../test/popups/browser_popup_blocker_iframes.js | 186 + .../test/popups/browser_popup_close_main_window.js | 84 + .../content/test/popups/browser_popup_frames.js | 128 + .../test/popups/browser_popup_inner_outer_size.js | 120 + .../test/popups/browser_popup_linux_move.js | 56 + .../test/popups/browser_popup_linux_resize.js | 53 + .../base/content/test/popups/browser_popup_move.js | 6 + .../test/popups/browser_popup_move_instant.js | 6 + .../test/popups/browser_popup_new_window_resize.js | 51 + .../test/popups/browser_popup_new_window_size.js | 90 + .../content/test/popups/browser_popup_resize.js | 6 + .../test/popups/browser_popup_resize_instant.js | 6 + .../test/popups/browser_popup_resize_repeat.js | 6 + .../popups/browser_popup_resize_repeat_instant.js | 6 + .../test/popups/browser_popup_resize_revert.js | 6 + .../popups/browser_popup_resize_revert_instant.js | 6 + browser/base/content/test/popups/head.js | 568 ++ .../base/content/test/popups/popup_blocker.html | 13 + .../base/content/test/popups/popup_blocker2.html | 10 + .../test/popups/popup_blocker_10_popups.html | 14 + .../base/content/test/popups/popup_blocker_a.html | 1 + .../base/content/test/popups/popup_blocker_b.html | 1 + .../content/test/popups/popup_blocker_frame.html | 27 + browser/base/content/test/popups/popup_size.html | 16 + .../base/content/test/privateBrowsing/browser.toml | 3 + .../browser_private_browsing_simplified_ui.js | 48 + .../content/test/protectionsUI/benignPage.html | 18 + .../base/content/test/protectionsUI/browser.toml | 97 + .../test/protectionsUI/browser_protectionsUI.js | 738 ++ .../test/protectionsUI/browser_protectionsUI_3.js | 224 + .../browser_protectionsUI_background_tabs.js | 74 + .../browser_protectionsUI_categories.js | 279 + .../browser_protectionsUI_cookie_banner.js | 489 + .../browser_protectionsUI_cookies_subview.js | 533 + .../browser_protectionsUI_cryptominers.js | 306 + ...browser_protectionsUI_email_trackers_subview.js | 179 + .../protectionsUI/browser_protectionsUI_fetch.js | 43 + .../browser_protectionsUI_fingerprinters.js | 303 + .../browser_protectionsUI_icon_state.js | 223 + .../browser_protectionsUI_info_message.js | 90 + .../browser_protectionsUI_milestones.js | 104 + .../browser_protectionsUI_open_preferences.js | 155 + .../browser_protectionsUI_pbmode_exceptions.js | 179 + .../browser_protectionsUI_report_breakage.js | 415 + .../browser_protectionsUI_shield_visibility.js | 124 + .../browser_protectionsUI_socialtracking.js | 321 + .../protectionsUI/browser_protectionsUI_state.js | 403 + .../browser_protectionsUI_state_reset.js | 129 + .../browser_protectionsUI_subview_shim.js | 400 + ...tectionsUI_suspicious_fingerprinters_subview.js | 427 + .../browser_protectionsUI_telemetry.js | 89 + .../browser_protectionsUI_trackers_subview.js | 144 + .../test/protectionsUI/canvas-fingerprinter.html | 22 + .../content/test/protectionsUI/containerPage.html | 6 + .../content/test/protectionsUI/cookiePage.html | 13 + .../content/test/protectionsUI/cookieServer.sjs | 24 + .../test/protectionsUI/cookieSetterPage.html | 6 + .../test/protectionsUI/emailTrackingPage.html | 12 + .../content/test/protectionsUI/embeddedPage.html | 6 + .../protectionsUI/file_protectionsUI_fetch.html | 17 + .../test/protectionsUI/file_protectionsUI_fetch.js | 2 + .../file_protectionsUI_fetch.js^headers^ | 1 + .../test/protectionsUI/font-fingerprinter.html | 102 + browser/base/content/test/protectionsUI/head.js | 247 + .../base/content/test/protectionsUI/sandboxed.html | 12 + .../test/protectionsUI/sandboxed.html^headers^ | 1 + .../base/content/test/protectionsUI/trackingAPI.js | 77 + .../content/test/protectionsUI/trackingPage.html | 13 + browser/base/content/test/referrer/browser.toml | 44 + .../referrer/browser_referrer_click_pinned_tab.js | 82 + .../test/referrer/browser_referrer_middle_click.js | 25 + .../browser_referrer_middle_click_in_container.js | 33 + .../browser_referrer_open_link_in_container_tab.js | 80 + ...browser_referrer_open_link_in_container_tab2.js | 43 + ...browser_referrer_open_link_in_container_tab3.js | 81 + .../browser_referrer_open_link_in_private.js | 33 + .../referrer/browser_referrer_open_link_in_tab.js | 27 + .../browser_referrer_open_link_in_window.js | 28 + ...er_referrer_open_link_in_window_in_container.js | 39 + .../test/referrer/browser_referrer_simple_click.js | 27 + .../test/referrer/file_referrer_policyserver.sjs | 40 + .../referrer/file_referrer_policyserver_attr.sjs | 40 + .../test/referrer/file_referrer_testserver.sjs | 30 + browser/base/content/test/referrer/head.js | 311 + browser/base/content/test/sanitize/browser.toml | 39 + .../test/sanitize/browser_cookiePermission.js | 1 + .../sanitize/browser_cookiePermission_aboutURL.js | 111 + .../browser_cookiePermission_containers.js | 1 + .../browser_cookiePermission_subDomains.js | 290 + .../browser_cookiePermission_subDomains_v2.js | 288 + .../sanitize/browser_purgehistory_clears_sh.js | 86 + .../sanitize/browser_sanitize-cookie-exceptions.js | 274 + .../test/sanitize/browser_sanitize-formhistory.js | 32 + .../test/sanitize/browser_sanitize-history.js | 136 + .../test/sanitize/browser_sanitize-offlineData.js | 249 + .../browser_sanitize-passwordDisabledHosts.js | 28 + .../sanitize/browser_sanitize-sitepermissions.js | 37 + .../test/sanitize/browser_sanitize-timespans.js | 1194 +++ .../test/sanitize/browser_sanitize-timespans_v2.js | 1190 +++ .../test/sanitize/browser_sanitizeDialog.js | 837 ++ .../test/sanitize/browser_sanitizeDialog_v2.js | 1429 +++ .../browser_sanitizeOnShutdown_migration.js | 312 + browser/base/content/test/sanitize/dummy.js | 0 browser/base/content/test/sanitize/dummy_page.html | 9 + browser/base/content/test/sanitize/head.js | 371 + .../base/content/test/sanitize/site_data_test.html | 29 + browser/base/content/test/sidebar/browser.toml | 13 + .../content/test/sidebar/browser_sidebar_adopt.js | 74 + .../sidebar/browser_sidebar_app_locale_changed.js | 111 + .../content/test/sidebar/browser_sidebar_keys.js | 108 + .../content/test/sidebar/browser_sidebar_move.js | 72 + .../test/sidebar/browser_sidebar_persist.js | 37 + .../test/sidebar/browser_sidebar_switcher.js | 289 + .../base/content/test/siteIdentity/browser.toml | 194 + .../browser_about_blank_same_document_tabswitch.js | 86 + .../test/siteIdentity/browser_bug1045809.js | 105 + .../content/test/siteIdentity/browser_bug822367.js | 254 + .../content/test/siteIdentity/browser_bug902156.js | 171 + .../content/test/siteIdentity/browser_bug906190.js | 339 + .../siteIdentity/browser_check_identity_state.js | 720 ++ .../browser_check_identity_state_pdf.js | 82 + .../browser_csp_block_all_mixedcontent.js | 60 + .../siteIdentity/browser_deprecatedTLSVersions.js | 94 + .../siteIdentity/browser_geolocation_indicator.js | 381 + .../test/siteIdentity/browser_getSecurityInfo.js | 38 + .../siteIdentity/browser_identityBlock_flicker.js | 55 + .../siteIdentity/browser_identityBlock_focus.js | 126 + .../siteIdentity/browser_identityIcon_img_url.js | 148 + .../browser_identityPopup_HttpsOnlyMode.js | 246 + .../browser_identityPopup_clearSiteData.js | 237 + ...owser_identityPopup_clearSiteData_extensions.js | 80 + .../browser_identityPopup_custom_roots.js | 82 + .../siteIdentity/browser_identityPopup_focus.js | 120 + .../test/siteIdentity/browser_identity_UI.js | 192 + .../test/siteIdentity/browser_iframe_navigation.js | 130 + .../browser_ignore_same_page_navigation.js | 50 + .../test/siteIdentity/browser_mcb_redirect.js | 345 + .../browser_mixedContentFramesOnHttp.js | 37 + .../browser_mixedContentFromOnunload.js | 68 + .../browser_mixed_content_cert_override.js | 69 + .../browser_mixed_content_with_navigation.js | 131 + .../browser_mixed_passive_content_indicator.js | 18 + .../browser_mixedcontent_securityflags.js | 71 + .../siteIdentity/browser_navigation_failures.js | 166 + .../siteIdentity/browser_no_mcb_for_loopback.js | 88 + .../test/siteIdentity/browser_no_mcb_for_onions.js | 41 + .../siteIdentity/browser_no_mcb_on_http_site.js | 133 + .../browser_secure_transport_insecure_scheme.js | 195 + .../browser_session_store_pageproxystate.js | 92 + .../test/siteIdentity/browser_tab_sharing_state.js | 96 + .../test/siteIdentity/dummy_iframe_page.html | 10 + .../base/content/test/siteIdentity/dummy_page.html | 10 + .../test/siteIdentity/file_bug1045809_1.html | 7 + .../test/siteIdentity/file_bug1045809_2.html | 7 + .../test/siteIdentity/file_bug822367_1.html | 18 + .../content/test/siteIdentity/file_bug822367_1.js | 1 + .../test/siteIdentity/file_bug822367_2.html | 16 + .../test/siteIdentity/file_bug822367_3.html | 27 + .../test/siteIdentity/file_bug822367_4.html | 18 + .../content/test/siteIdentity/file_bug822367_4.js | 2 + .../test/siteIdentity/file_bug822367_4B.html | 18 + .../test/siteIdentity/file_bug822367_5.html | 23 + .../test/siteIdentity/file_bug822367_6.html | 16 + .../content/test/siteIdentity/file_bug902156.js | 6 + .../test/siteIdentity/file_bug902156_1.html | 15 + .../test/siteIdentity/file_bug902156_2.html | 17 + .../test/siteIdentity/file_bug902156_3.html | 15 + .../content/test/siteIdentity/file_bug906190.js | 6 + .../content/test/siteIdentity/file_bug906190.sjs | 18 + .../test/siteIdentity/file_bug906190_1.html | 15 + .../test/siteIdentity/file_bug906190_2.html | 15 + .../test/siteIdentity/file_bug906190_3_4.html | 14 + .../siteIdentity/file_bug906190_redirected.html | 15 + .../file_csp_block_all_mixedcontent.html | 11 + .../file_csp_block_all_mixedcontent.js | 3 + .../file_mixedContentFramesOnHttp.html | 14 + .../file_mixedContentFromOnunload.html | 18 + .../file_mixedContentFromOnunload_test1.html | 14 + .../file_mixedContentFromOnunload_test2.html | 15 + .../siteIdentity/file_mixedPassiveContent.html | 13 + .../base/content/test/siteIdentity/file_pdf.pdf | 12 + .../content/test/siteIdentity/file_pdf_blob.html | 18 + browser/base/content/test/siteIdentity/head.js | 422 + .../test/siteIdentity/iframe_navigation.html | 44 + .../content/test/siteIdentity/insecure_opener.html | 9 + .../test/siteIdentity/open-self-from-frame.html | 6 + .../test/siteIdentity/simple_mixed_passive.html | 1 + .../test-mixedcontent-securityerrors.html | 21 + .../test_mcb_double_redirect_image.html | 23 + .../test/siteIdentity/test_mcb_redirect.html | 15 + .../content/test/siteIdentity/test_mcb_redirect.js | 5 + .../test/siteIdentity/test_mcb_redirect.sjs | 29 + .../test/siteIdentity/test_mcb_redirect_image.html | 23 + .../siteIdentity/test_no_mcb_for_loopback.html | 56 + .../test/siteIdentity/test_no_mcb_for_onions.html | 29 + .../siteIdentity/test_no_mcb_on_http_site_font.css | 11 + .../test_no_mcb_on_http_site_font.html | 43 + .../test_no_mcb_on_http_site_font2.css | 1 + .../test_no_mcb_on_http_site_font2.html | 44 + .../siteIdentity/test_no_mcb_on_http_site_img.css | 3 + .../siteIdentity/test_no_mcb_on_http_site_img.html | 43 + browser/base/content/test/startup/browser.toml | 4 + .../startup/browser_preXULSkeletonUIRegistry.js | 136 + browser/base/content/test/static/browser.toml | 29 + .../test/static/browser_all_files_referenced.js | 1088 ++ .../browser_misused_characters_in_strings.js | 247 + .../content/test/static/browser_parsable_css.js | 577 ++ .../content/test/static/browser_parsable_script.js | 167 + .../test/static/browser_sentence_case_strings.js | 279 + .../test/static/browser_title_case_menus.js | 158 + .../static/bug1262648_string_with_newlines.dtd | 3 + browser/base/content/test/static/dummy_page.html | 9 + browser/base/content/test/static/head.js | 177 + browser/base/content/test/statuspanel/browser.toml | 7 + .../statuspanel/browser_show_statuspanel_idn.js | 33 + .../statuspanel/browser_show_statuspanel_twice.js | 29 + browser/base/content/test/statuspanel/head.js | 58 + browser/base/content/test/sync/browser.toml | 16 + .../test/sync/browser_contextmenu_sendpage.js | 474 + .../test/sync/browser_contextmenu_sendtab.js | 362 + .../base/content/test/sync/browser_fxa_badge.js | 70 + .../content/test/sync/browser_fxa_web_channel.html | 158 + .../content/test/sync/browser_fxa_web_channel.js | 280 + browser/base/content/test/sync/browser_sync.js | 935 ++ .../content/test/sync/browser_synced_tabs_view.js | 76 + browser/base/content/test/sync/head.js | 34 + .../tabMediaIndicator/almostSilentAudioTrack.webm | Bin 0 -> 1699661 bytes .../base/content/test/tabMediaIndicator/audio.ogg | Bin 0 -> 14293 bytes .../tabMediaIndicator/audioEndedDuringPlaying.webm | Bin 0 -> 109366 bytes .../content/test/tabMediaIndicator/browser.toml | 44 + .../tabMediaIndicator/browser_destroy_iframe.js | 50 + .../tabMediaIndicator/browser_mediaPlayback.js | 42 + .../browser_mediaPlayback_mute.js | 118 + .../browser_mediaplayback_audibility_change.js | 258 + .../content/test/tabMediaIndicator/browser_mute.js | 19 + .../test/tabMediaIndicator/browser_mute2.js | 32 + .../tabMediaIndicator/browser_mute_webAudio.js | 75 + .../browser_sound_indicator_silent_video.js | 95 + .../browser_webAudio_hideSoundPlayingIcon.js | 60 + .../browser_webAudio_silentData.js | 57 + .../browser_webaudio_audibility_change.js | 172 + .../file_almostSilentAudioTrack.html | 18 + .../tabMediaIndicator/file_autoplay_media.html | 9 + .../content/test/tabMediaIndicator/file_empty.html | 8 + .../test/tabMediaIndicator/file_mediaPlayback.html | 9 + .../tabMediaIndicator/file_mediaPlayback2.html | 14 + .../tabMediaIndicator/file_mediaPlaybackFrame.html | 2 + .../file_mediaPlaybackFrame2.html | 2 + .../tabMediaIndicator/file_silentAudioTrack.html | 18 + .../test/tabMediaIndicator/file_webAudio.html | 29 + .../base/content/test/tabMediaIndicator/gizmo.mp4 | Bin 0 -> 455255 bytes .../base/content/test/tabMediaIndicator/head.js | 158 + .../content/test/tabMediaIndicator/noaudio.webm | Bin 0 -> 105755 bytes .../test/tabMediaIndicator/silentAudioTrack.webm | Bin 0 -> 224800 bytes .../base/content/test/tabPrompts/auth-route.sjs | 28 + browser/base/content/test/tabPrompts/browser.toml | 50 + .../browser_abort_when_in_modal_state.js | 60 + .../tabPrompts/browser_auth_spoofing_protection.js | 236 + .../tabPrompts/browser_auth_spoofing_url_copy.js | 137 + .../browser_auth_spoofing_url_drag_and_drop.js | 100 + .../test/tabPrompts/browser_beforeunload_urlbar.js | 75 + .../tabPrompts/browser_closeTabSpecificPanels.js | 53 + .../test/tabPrompts/browser_confirmFolderUpload.js | 141 + .../test/tabPrompts/browser_contentOrigins.js | 219 + .../test/tabPrompts/browser_multiplePrompts.js | 171 + .../browser_openPromptInBackgroundTab.js | 262 + .../content/test/tabPrompts/browser_promptFocus.js | 170 + .../test/tabPrompts/browser_prompt_close_event.js | 164 + .../tabPrompts/browser_prompt_closed_window.js | 40 + .../browser_switchTabPermissionPrompt.js | 41 + .../test/tabPrompts/browser_windowPrompt.js | 259 + .../test/tabPrompts/file_beforeunload_stop.html | 8 + .../test/tabPrompts/openPromptOffTimeout.html | 10 + .../redirect-crossDomain-tabTitle-update.html | 15 + .../test/tabPrompts/redirect-crossDomain.html | 13 + .../test/tabPrompts/redirect-sameDomain.html | 13 + browser/base/content/test/tabcrashed/browser.toml | 29 + .../tabcrashed/browser_aboutRestartRequired.toml | 21 + .../browser_aboutRestartRequired_basic.js | 31 + ..._aboutRestartRequired_buildid_false-positive.js | 35 + ...rowser_aboutRestartRequired_buildid_mismatch.js | 56 + ...aboutRestartRequired_buildid_no-platform-ini.js | 50 + .../browser_aboutRestartRequired_noForkServer.toml | 14 + .../test/tabcrashed/browser_autoSubmitRequest.js | 183 + .../content/test/tabcrashed/browser_launchFail.js | 59 + .../test/tabcrashed/browser_multipleCrashedTabs.js | 136 + .../test/tabcrashed/browser_noPermanentKey.js | 41 + .../test/tabcrashed/browser_printpreview_crash.js | 83 + .../content/test/tabcrashed/browser_showForm.js | 44 + .../base/content/test/tabcrashed/browser_shown.js | 150 + .../tabcrashed/browser_shownRestartRequired.js | 121 + .../content/test/tabcrashed/browser_withoutDump.js | 42 + .../test/tabcrashed/file_contains_emptyiframe.html | 9 + .../base/content/test/tabcrashed/file_iframe.html | 9 + browser/base/content/test/tabcrashed/head.js | 242 + browser/base/content/test/tabdialogs/browser.toml | 20 + .../browser_multiple_dialog_navigation.js | 64 + .../test/tabdialogs/browser_subdialog_esc.js | 122 + .../browser_tabdialogbox_content_prompts.js | 179 + .../test/tabdialogs/browser_tabdialogbox_focus.js | 212 + .../tabdialogs/browser_tabdialogbox_navigation.js | 174 + .../content/test/tabdialogs/loadDelayedReply.sjs | 22 + .../base/content/test/tabdialogs/subdialog.xhtml | 46 + .../base/content/test/tabdialogs/test_page.html | 10 + browser/base/content/test/tabs/204.sjs | 3 + browser/base/content/test/tabs/blank.html | 2 + browser/base/content/test/tabs/browser.toml | 345 + .../content/test/tabs/browser_addAdjacentNewTab.js | 55 + .../base/content/test/tabs/browser_addTab_index.js | 8 + .../content/test/tabs/browser_adoptTab_failure.js | 107 + ...low_process_switches_despite_related_browser.js | 40 + .../base/content/test/tabs/browser_audioTabIcon.js | 684 ++ .../tabs/browser_bfcache_exemption_about_pages.js | 176 + .../base/content/test/tabs/browser_bug580956.js | 25 + ...1387976_restore_lazy_tab_browser_muted_state.js | 56 + .../test/tabs/browser_close_during_beforeunload.js | 46 + .../test/tabs/browser_close_tab_by_dblclick.js | 35 + ...wser_contextmenu_openlink_after_tabnavigated.js | 63 + .../test/tabs/browser_dont_process_switch_204.js | 56 + .../browser_e10s_about_page_triggeringprincipal.js | 210 + .../test/tabs/browser_e10s_about_process.js | 174 + .../test/tabs/browser_e10s_chrome_process.js | 136 + .../content/test/tabs/browser_e10s_javascript.js | 19 + .../test/tabs/browser_e10s_mozillaweb_process.js | 52 + .../test/tabs/browser_e10s_switchbrowser.js | 493 + .../test/tabs/browser_file_to_http_named_popup.js | 60 + .../tabs/browser_file_to_http_script_closable.js | 43 + .../test/tabs/browser_hiddentab_contextmenu.js | 34 + .../test/tabs/browser_lazy_tab_browser_events.js | 157 + ...nk_in_tab_title_and_url_prefilled_blank_page.js | 143 + ...nk_in_tab_title_and_url_prefilled_new_window.js | 54 + ...e_and_url_prefilled_normal_page_blank_target.js | 203 + ...itle_and_url_prefilled_normal_page_by_script.js | 87 + ...itle_and_url_prefilled_normal_page_no_target.js | 90 + ...e_and_url_prefilled_normal_page_other_target.js | 160 + .../tabs/browser_long_data_url_label_truncation.js | 78 + ..._middle_click_new_tab_button_loads_clipboard.js | 255 + ...tiselect_tabs_active_tab_selected_by_default.js | 52 + .../test/tabs/browser_multiselect_tabs_bookmark.js | 81 + ...iselect_tabs_clear_selection_when_tab_switch.js | 33 + .../test/tabs/browser_multiselect_tabs_close.js | 192 + .../browser_multiselect_tabs_close_other_tabs.js | 122 + ...wser_multiselect_tabs_close_tabs_to_the_left.js | 131 + ...ser_multiselect_tabs_close_tabs_to_the_right.js | 113 + ...owser_multiselect_tabs_close_using_shortcuts.js | 64 + ..._multiselect_tabs_copy_through_drag_and_drop.js | 51 + ...r_multiselect_tabs_drag_to_bookmarks_toolbar.js | 74 + .../tabs/browser_multiselect_tabs_duplicate.js | 136 + .../test/tabs/browser_multiselect_tabs_event.js | 220 + .../test/tabs/browser_multiselect_tabs_move.js | 192 + ...multiselect_tabs_move_to_another_window_drag.js | 118 + ...tiselect_tabs_move_to_new_window_contextmenu.js | 129 + .../tabs/browser_multiselect_tabs_mute_unmute.js | 336 + .../tabs/browser_multiselect_tabs_open_related.js | 143 + .../tabs/browser_multiselect_tabs_pin_unpin.js | 75 + .../test/tabs/browser_multiselect_tabs_play.js | 254 + .../test/tabs/browser_multiselect_tabs_reload.js | 82 + ...browser_multiselect_tabs_reopen_in_container.js | 133 + .../test/tabs/browser_multiselect_tabs_reorder.js | 65 + .../tabs/browser_multiselect_tabs_using_Ctrl.js | 60 + .../tabs/browser_multiselect_tabs_using_Shift.js | 159 + ...rowser_multiselect_tabs_using_Shift_and_Ctrl.js | 75 + .../browser_multiselect_tabs_using_keyboard.js | 147 + .../browser_multiselect_tabs_using_selectedTabs.js | 72 + .../content/test/tabs/browser_navigatePinnedTab.js | 74 + .../browser_navigate_home_focuses_addressbar.js | 21 + ...wser_navigate_through_urls_origin_attributes.js | 177 + .../tabs/browser_new_file_whitelisted_http_tab.js | 37 + .../browser_new_tab_bookmarks_toolbar_height.js | 129 + ...wser_new_tab_in_privilegedabout_process_pref.js | 230 + .../test/tabs/browser_new_tab_insert_position.js | 288 + .../base/content/test/tabs/browser_new_tab_url.js | 29 + .../tabs/browser_newwindow_tabstrip_overflow.js | 41 + .../test/tabs/browser_openURI_background.js | 41 + ...wser_open_newtab_start_observer_notification.js | 28 + .../browser_opened_file_tab_navigated_to_web.js | 56 + .../tabs/browser_origin_attrs_in_remote_type.js | 106 + .../content/test/tabs/browser_origin_attrs_rel.js | 281 + .../base/content/test/tabs/browser_originalURI.js | 181 + .../content/test/tabs/browser_overflowScroll.js | 114 + .../browser_paste_event_at_middle_click_on_link.js | 156 + .../base/content/test/tabs/browser_pinnedTabs.js | 97 + .../test/tabs/browser_pinnedTabs_clickOpen.js | 58 + .../tabs/browser_pinnedTabs_closeByKeyboard.js | 72 + .../test/tabs/browser_positional_attributes.js | 60 + .../test/tabs/browser_preloadedBrowser_zoom.js | 89 + .../tabs/browser_privilegedmozilla_process_pref.js | 212 + .../browser_progress_keyword_search_handling.js | 95 + .../content/test/tabs/browser_relatedTabs_reset.js | 81 + .../test/tabs/browser_reload_deleted_file.js | 36 + .../test/tabs/browser_removeTabsToTheEnd.js | 30 + .../test/tabs/browser_removeTabsToTheStart.js | 35 + .../content/test/tabs/browser_removeTabs_order.js | 40 + .../tabs/browser_removeTabs_skipPermitUnload.js | 118 + .../tabs/browser_replacewithwindow_commands.js | 42 + .../test/tabs/browser_switch_by_scrolling.js | 51 + .../content/test/tabs/browser_tabCloseProbes.js | 112 + .../content/test/tabs/browser_tabCloseSpacer.js | 91 + .../test/tabs/browser_tabContextMenu_keyboard.js | 64 + .../base/content/test/tabs/browser_tabReorder.js | 64 + .../test/tabs/browser_tabReorder_overflow.js | 62 + .../content/test/tabs/browser_tabSpinnerProbe.js | 102 + .../content/test/tabs/browser_tabSuccessors.js | 131 + .../test/tabs/browser_tab_a11y_description.js | 74 + .../test/tabs/browser_tab_label_during_reload.js | 41 + .../tabs/browser_tab_label_picture_in_picture.js | 30 + .../content/test/tabs/browser_tab_manager_close.js | 82 + .../content/test/tabs/browser_tab_manager_drag.js | 257 + .../tabs/browser_tab_manager_keyboard_access.js | 37 + .../test/tabs/browser_tab_manager_visibility.js | 53 + .../tabs/browser_tab_move_to_new_window_reload.js | 51 + browser/base/content/test/tabs/browser_tab_play.js | 216 + .../base/content/test/tabs/browser_tab_preview.js | 154 + .../base/content/test/tabs/browser_tab_tooltips.js | 149 + .../test/tabs/browser_tabswitch_contextmenu.js | 45 + .../content/test/tabs/browser_tabswitch_select.js | 63 + .../test/tabs/browser_tabswitch_updatecommands.js | 28 + .../test/tabs/browser_tabswitch_window_focus.js | 78 + .../content/test/tabs/browser_undo_close_tabs.js | 171 + .../test/tabs/browser_undo_close_tabs_at_start.js | 74 + ...owser_viewsource_of_data_URI_in_file_process.js | 53 + .../tabs/browser_visibleTabs_bookmarkAllTabs.js | 64 + .../test/tabs/browser_visibleTabs_contextMenu.js | 115 + .../test/tabs/browser_window_open_modifiers.js | 175 + .../common_link_in_tab_title_and_url_prefilled.js | 255 + browser/base/content/test/tabs/dummy_page.html | 9 + .../base/content/test/tabs/file_about_child.html | 10 + .../base/content/test/tabs/file_about_parent.html | 10 + .../base/content/test/tabs/file_about_srcdoc.html | 9 + .../content/test/tabs/file_anchor_elements.html | 12 + .../base/content/test/tabs/file_mediaPlayback.html | 2 + .../base/content/test/tabs/file_new_tab_page.html | 9 + .../test/tabs/file_observe_height_changes.html | 21 + .../test/tabs/file_rel_opener_noopener.html | 12 + .../base/content/test/tabs/file_window_open.html | 70 + browser/base/content/test/tabs/head.js | 564 + .../test/tabs/helper_origin_attrs_testing.js | 158 + .../tabs/link_in_tab_title_and_url_prefilled.html | 30 + .../content/test/tabs/open_window_in_new_tab.html | 15 + .../base/content/test/tabs/page_with_iframe.html | 12 + .../content/test/tabs/redirect_via_header.html | 9 + .../test/tabs/redirect_via_header.html^headers^ | 2 + .../content/test/tabs/redirect_via_meta_tag.html | 13 + browser/base/content/test/tabs/request-timeout.sjs | 8 + .../base/content/test/tabs/tab_that_closes.html | 15 + .../base/content/test/tabs/test_bug1358314.html | 10 + .../test/tabs/test_process_flags_chrome.html | 10 + browser/base/content/test/tabs/wait-a-bit.sjs | 23 + browser/base/content/test/touch/browser.toml | 4 + .../base/content/test/touch/browser_menu_touch.js | 198 + .../base/content/test/utilityOverlay/browser.toml | 3 + .../test/utilityOverlay/browser_openWebLinkIn.js | 185 + .../base/content/test/webextensions/.eslintrc.js | 7 + .../base/content/test/webextensions/browser.toml | 49 + .../webextensions/browser_aboutaddons_blanktab.js | 26 + .../webextensions/browser_extension_sideloading.js | 468 + .../browser_extension_update_background.js | 313 + ...browser_extension_update_background_noprompt.js | 142 + .../test/webextensions/browser_legacy_webext.xpi | Bin 0 -> 4243 bytes .../webextensions/browser_permissions_dismiss.js | 112 + .../browser_permissions_installTrigger.js | 29 + .../browser_permissions_local_file.js | 43 + .../browser_permissions_mozAddonManager.js | 21 + .../webextensions/browser_permissions_optional.js | 52 + .../browser_permissions_pointerevent.js | 53 + .../webextensions/browser_permissions_unsigned.js | 64 + .../browser_update_checkForUpdates.js | 17 + .../browser_update_interactive_noprompt.js | 80 + .../webextensions/browser_webext_nopermissions.xpi | Bin 0 -> 4273 bytes .../webextensions/browser_webext_permissions.xpi | Bin 0 -> 16602 bytes .../test/webextensions/browser_webext_unsigned.xpi | Bin 0 -> 12620 bytes .../test/webextensions/browser_webext_update.json | 70 + .../test/webextensions/browser_webext_update1.xpi | Bin 0 -> 4271 bytes .../test/webextensions/browser_webext_update2.xpi | Bin 0 -> 4291 bytes .../webextensions/browser_webext_update_icon1.xpi | Bin 0 -> 16545 bytes .../webextensions/browser_webext_update_icon2.xpi | Bin 0 -> 16564 bytes .../browser_webext_update_origins1.xpi | Bin 0 -> 268 bytes .../browser_webext_update_origins2.xpi | Bin 0 -> 275 bytes .../webextensions/browser_webext_update_perms1.xpi | Bin 0 -> 4273 bytes .../webextensions/browser_webext_update_perms2.xpi | Bin 0 -> 4282 bytes .../webextensions/file_install_extensions.html | 19 + browser/base/content/test/webextensions/head.js | 679 ++ browser/base/content/test/webrtc/browser.toml | 159 + .../test/webrtc/browser_WebrtcGlobalInformation.js | 486 + .../test/webrtc/browser_device_controls_menus.js | 55 + .../test/webrtc/browser_devices_get_user_media.js | 889 ++ .../webrtc/browser_devices_get_user_media_anim.js | 106 + .../browser_devices_get_user_media_by_device_id.js | 82 + ...r_devices_get_user_media_default_permissions.js | 209 + .../webrtc/browser_devices_get_user_media_grace.js | 388 + .../browser_devices_get_user_media_in_frame.js | 771 ++ ...wser_devices_get_user_media_in_xorigin_frame.js | 798 ++ ...evices_get_user_media_in_xorigin_frame_chain.js | 250 + ...browser_devices_get_user_media_multi_process.js | 517 + .../browser_devices_get_user_media_paused.js | 999 ++ ...browser_devices_get_user_media_queue_request.js | 383 + .../browser_devices_get_user_media_screen.js | 893 ++ ...wser_devices_get_user_media_screen_tab_close.js | 72 + .../browser_devices_get_user_media_tear_off_tab.js | 100 + ...ser_devices_get_user_media_unprompted_access.js | 666 ++ ...es_get_user_media_unprompted_access_in_frame.js | 309 + ...t_user_media_unprompted_access_queue_request.js | 47 + ...et_user_media_unprompted_access_tear_off_tab.js | 108 + .../webrtc/browser_devices_select_audio_output.js | 257 + .../test/webrtc/browser_global_mute_toggles.js | 293 + .../test/webrtc/browser_indicator_popuphiding.js | 50 + .../test/webrtc/browser_macos_indicator_hiding.js | 145 + .../test/webrtc/browser_notification_silencing.js | 231 + .../test/webrtc/browser_stop_sharing_button.js | 175 + .../browser_stop_streams_on_indicator_close.js | 215 + .../test/webrtc/browser_tab_switch_warning.js | 538 + .../content/test/webrtc/browser_webrtc_hooks.js | 371 + .../base/content/test/webrtc/get_user_media.html | 123 + .../base/content/test/webrtc/get_user_media2.html | 106 + .../test/webrtc/get_user_media_in_frame.html | 97 + .../webrtc/get_user_media_in_xorigin_frame.html | 70 + .../get_user_media_in_xorigin_frame_ancestor.html | 12 + .../content/test/webrtc/gracePeriod/browser.toml | 15 + browser/base/content/test/webrtc/head.js | 1330 +++ .../test/webrtc/peerconnection_connect.html | 39 + .../content/test/webrtc/single_peerconnection.html | 23 + browser/base/content/test/zoom/browser.toml | 54 + .../zoom/browser_background_link_zoom_reset.js | 45 + .../content/test/zoom/browser_background_zoom.js | 115 + .../base/content/test/zoom/browser_default_zoom.js | 149 + .../test/zoom/browser_default_zoom_fission.js | 114 + .../test/zoom/browser_default_zoom_multitab.js | 190 + .../test/zoom/browser_default_zoom_multitab_002.js | 93 + .../test/zoom/browser_default_zoom_sitespecific.js | 108 + .../test/zoom/browser_image_zoom_tabswitch.js | 39 + .../content/test/zoom/browser_mousewheel_zoom.js | 72 + .../zoom/browser_sitespecific_background_pref.js | 35 + .../test/zoom/browser_sitespecific_image_zoom.js | 52 + .../test/zoom/browser_sitespecific_video_zoom.js | 128 + .../content/test/zoom/browser_subframe_textzoom.js | 52 + .../test/zoom/browser_tabswitch_zoom_flicker.js | 45 + .../base/content/test/zoom/browser_tooltip_zoom.js | 41 + .../content/test/zoom/browser_zoom_commands.js | 203 + browser/base/content/test/zoom/head.js | 223 + browser/base/content/test/zoom/zoom_test.html | 14 + browser/base/content/titlebar-items.inc.xhtml | 24 + .../content/unified-extensions-viewcache.inc.xhtml | 39 + browser/base/content/utilityOverlay.js | 578 ++ browser/base/content/webext-panels.js | 184 + browser/base/content/webext-panels.xhtml | 67 + browser/base/content/webrtcIndicator.js | 590 ++ browser/base/content/webrtcIndicator.xhtml | 86 + browser/base/jar.mn | 107 + browser/base/moz.build | 92 + browser/base/triage.json | 29 + 1206 files changed, 180904 insertions(+) create mode 100644 browser/base/content/aboutDialog-appUpdater.js create mode 100644 browser/base/content/aboutDialog.css create mode 100644 browser/base/content/aboutDialog.js create mode 100644 browser/base/content/aboutDialog.xhtml create mode 100644 browser/base/content/aboutFrameCrashed.html create mode 100644 browser/base/content/aboutRestartRequired.js create mode 100644 browser/base/content/aboutRestartRequired.xhtml create mode 100644 browser/base/content/aboutRobots-icon.png create mode 100644 browser/base/content/aboutRobots.css create mode 100644 browser/base/content/aboutRobots.js create mode 100644 browser/base/content/aboutRobots.xhtml create mode 100644 browser/base/content/aboutTabCrashed.css create mode 100644 browser/base/content/aboutTabCrashed.js create mode 100644 browser/base/content/aboutTabCrashed.xhtml create mode 100644 browser/base/content/appmenu-viewcache.inc.xhtml create mode 100644 browser/base/content/blanktab.html create mode 100644 browser/base/content/blockedSite.js create mode 100644 browser/base/content/blockedSite.xhtml create mode 100644 browser/base/content/browser-a11yUtils.js create mode 100644 browser/base/content/browser-addons.js create mode 100644 browser/base/content/browser-allTabsMenu.inc.xhtml create mode 100644 browser/base/content/browser-allTabsMenu.js create mode 100644 browser/base/content/browser-box.inc.xhtml create mode 100644 browser/base/content/browser-captivePortal.js create mode 100644 browser/base/content/browser-context.inc create mode 100644 browser/base/content/browser-ctrlTab.js create mode 100644 browser/base/content/browser-customization.js create mode 100644 browser/base/content/browser-data-submission-info-bar.js create mode 100644 browser/base/content/browser-development-helpers.js create mode 100644 browser/base/content/browser-fullScreenAndPointerLock.js create mode 100644 browser/base/content/browser-fullZoom.js create mode 100644 browser/base/content/browser-gestureSupport.js create mode 100644 browser/base/content/browser-graphics-utils.js create mode 100644 browser/base/content/browser-menubar.inc create mode 100644 browser/base/content/browser-pageActions.js create mode 100644 browser/base/content/browser-pagestyle.js create mode 100644 browser/base/content/browser-places.js create mode 100644 browser/base/content/browser-safebrowsing.js create mode 100644 browser/base/content/browser-sets.inc create mode 100644 browser/base/content/browser-sidebar.js create mode 100644 browser/base/content/browser-siteIdentity.js create mode 100644 browser/base/content/browser-sitePermissionPanel.js create mode 100644 browser/base/content/browser-siteProtections.js create mode 100644 browser/base/content/browser-sync.js create mode 100644 browser/base/content/browser-tabsintitlebar.js create mode 100644 browser/base/content/browser-thumbnails.js create mode 100644 browser/base/content/browser-toolbarKeyNav.js create mode 100644 browser/base/content/browser-unified-extensions.js create mode 100644 browser/base/content/browser-webrtc.js create mode 100644 browser/base/content/browser.css create mode 100644 browser/base/content/browser.js create mode 100644 browser/base/content/browser.xhtml create mode 100644 browser/base/content/contentTheme.js create mode 100644 browser/base/content/default-bookmarks.html create mode 100644 browser/base/content/docs/tabbrowser/async-tab-switcher.rst create mode 100644 browser/base/content/docs/tabbrowser/index.rst create mode 100644 browser/base/content/fullscreen-and-pointerlock.inc.xhtml create mode 100644 browser/base/content/global-scripts.inc create mode 100644 browser/base/content/hiddenWindowMac.xhtml create mode 100644 browser/base/content/logos/etp-mobile.svg create mode 100644 browser/base/content/logos/fxa-logo.svg create mode 100644 browser/base/content/logos/lockwise.svg create mode 100644 browser/base/content/logos/monitor.svg create mode 100644 browser/base/content/logos/passkey.svg create mode 100644 browser/base/content/logos/proxy-dark.svg create mode 100644 browser/base/content/logos/proxy-light.svg create mode 100644 browser/base/content/logos/relay.svg create mode 100644 browser/base/content/logos/send.svg create mode 100644 browser/base/content/logos/tracking-protection-dark-theme.svg create mode 100644 browser/base/content/logos/tracking-protection.svg create mode 100644 browser/base/content/logos/vpn-dark.svg create mode 100644 browser/base/content/logos/vpn-light.svg create mode 100644 browser/base/content/logos/vpn-promo-logo.svg create mode 100644 browser/base/content/macWindow.inc.xhtml create mode 100644 browser/base/content/main-popupset.inc.xhtml create mode 100644 browser/base/content/metrics.yaml create mode 100644 browser/base/content/moz.build create mode 100644 browser/base/content/navigator-toolbox.inc.xhtml create mode 100644 browser/base/content/nonbrowser-mac.js create mode 100644 browser/base/content/nsContextMenu.js create mode 100644 browser/base/content/overrides/app-license.html create mode 100644 browser/base/content/pageinfo/pageInfo.css create mode 100644 browser/base/content/pageinfo/pageInfo.js create mode 100644 browser/base/content/pageinfo/pageInfo.xhtml create mode 100644 browser/base/content/pageinfo/permissions.js create mode 100644 browser/base/content/pageinfo/security.js create mode 100644 browser/base/content/popup-notifications.inc create mode 100644 browser/base/content/robot.ico create mode 100644 browser/base/content/safeMode.css create mode 100644 browser/base/content/safeMode.js create mode 100644 browser/base/content/safeMode.xhtml create mode 100644 browser/base/content/sanitize.xhtml create mode 100644 browser/base/content/sanitizeDialog.css create mode 100644 browser/base/content/sanitizeDialog.js create mode 100644 browser/base/content/sanitize_v2.xhtml create mode 100644 browser/base/content/spotlight.html create mode 100644 browser/base/content/spotlight.js create mode 100644 browser/base/content/static-robot.png create mode 100644 browser/base/content/swipe-navigation.inc.xhtml create mode 100644 browser/base/content/tabbrowser-tab.js create mode 100644 browser/base/content/tabbrowser-tabs.js create mode 100644 browser/base/content/tabbrowser.css create mode 100644 browser/base/content/tabbrowser.js create mode 100644 browser/base/content/test/about/POSTSearchEngine.xml create mode 100644 browser/base/content/test/about/browser.toml create mode 100644 browser/base/content/test/about/browser_aboutCertError.js create mode 100644 browser/base/content/test/about/browser_aboutCertError_clockSkew.js create mode 100644 browser/base/content/test/about/browser_aboutCertError_exception.js create mode 100644 browser/base/content/test/about/browser_aboutCertError_mitm.js create mode 100644 browser/base/content/test/about/browser_aboutCertError_noSubjectAltName.js create mode 100644 browser/base/content/test/about/browser_aboutCertError_offlineSupport.js create mode 100644 browser/base/content/test/about/browser_aboutCertError_telemetry.js create mode 100644 browser/base/content/test/about/browser_aboutDialog_distribution.js create mode 100644 browser/base/content/test/about/browser_aboutHome_search_POST.js create mode 100644 browser/base/content/test/about/browser_aboutHome_search_composing.js create mode 100644 browser/base/content/test/about/browser_aboutHome_search_searchbar.js create mode 100644 browser/base/content/test/about/browser_aboutHome_search_suggestion.js create mode 100644 browser/base/content/test/about/browser_aboutHome_search_telemetry.js create mode 100644 browser/base/content/test/about/browser_aboutNetError.js create mode 100644 browser/base/content/test/about/browser_aboutNetError_csp_iframe.js create mode 100644 browser/base/content/test/about/browser_aboutNetError_native_fallback.js create mode 100644 browser/base/content/test/about/browser_aboutNetError_trr.js create mode 100644 browser/base/content/test/about/browser_aboutNetError_xfo_iframe.js create mode 100644 browser/base/content/test/about/browser_aboutNewTab_bookmarksToolbar.js create mode 100644 browser/base/content/test/about/browser_aboutNewTab_bookmarksToolbarEmpty.js create mode 100644 browser/base/content/test/about/browser_aboutNewTab_bookmarksToolbarNewWindow.js create mode 100644 browser/base/content/test/about/browser_aboutNewTab_bookmarksToolbarPrefs.js create mode 100644 browser/base/content/test/about/browser_aboutStopReload.js create mode 100644 browser/base/content/test/about/browser_aboutSupport.js create mode 100644 browser/base/content/test/about/browser_aboutSupport_newtab_security_state.js create mode 100644 browser/base/content/test/about/browser_aboutSupport_places.js create mode 100644 browser/base/content/test/about/browser_bug435325.js create mode 100644 browser/base/content/test/about/browser_bug633691.js create mode 100644 browser/base/content/test/about/csp_iframe.sjs create mode 100644 browser/base/content/test/about/dummy_page.html create mode 100644 browser/base/content/test/about/head.js create mode 100644 browser/base/content/test/about/iframe_page_csp.html create mode 100644 browser/base/content/test/about/iframe_page_xfo.html create mode 100644 browser/base/content/test/about/print_postdata.sjs create mode 100644 browser/base/content/test/about/searchSuggestionEngine.sjs create mode 100644 browser/base/content/test/about/searchSuggestionEngine.xml create mode 100644 browser/base/content/test/about/slow_loading_page.sjs create mode 100644 browser/base/content/test/about/xfo_iframe.sjs create mode 100644 browser/base/content/test/alerts/browser.toml create mode 100644 browser/base/content/test/alerts/browser_notification_close.js create mode 100644 browser/base/content/test/alerts/browser_notification_do_not_disturb.js create mode 100644 browser/base/content/test/alerts/browser_notification_open_settings.js create mode 100644 browser/base/content/test/alerts/browser_notification_remove_permission.js create mode 100644 browser/base/content/test/alerts/browser_notification_replace.js create mode 100644 browser/base/content/test/alerts/browser_notification_tab_switching.js create mode 100644 browser/base/content/test/alerts/file_dom_notifications.html create mode 100644 browser/base/content/test/alerts/head.js create mode 100644 browser/base/content/test/backforward/browser.toml create mode 100644 browser/base/content/test/backforward/browser_history_menu.js create mode 100644 browser/base/content/test/caps/browser.toml create mode 100644 browser/base/content/test/caps/browser_principalSerialization_csp.js create mode 100644 browser/base/content/test/caps/browser_principalSerialization_json.js create mode 100644 browser/base/content/test/caps/browser_principalSerialization_version1.js create mode 100644 browser/base/content/test/captivePortal/browser.toml create mode 100644 browser/base/content/test/captivePortal/browser_CaptivePortalWatcher.js create mode 100644 browser/base/content/test/captivePortal/browser_CaptivePortalWatcher_1.js create mode 100644 browser/base/content/test/captivePortal/browser_captivePortalTabReference.js create mode 100644 browser/base/content/test/captivePortal/browser_captivePortal_certErrorUI.js create mode 100644 browser/base/content/test/captivePortal/browser_captivePortal_https_only.js create mode 100644 browser/base/content/test/captivePortal/browser_closeCapPortalTabCanonicalURL.js create mode 100644 browser/base/content/test/captivePortal/head.js create mode 100644 browser/base/content/test/chrome/chrome.toml create mode 100644 browser/base/content/test/chrome/test_aboutCrashed.xhtml create mode 100644 browser/base/content/test/chrome/test_aboutRestartRequired.xhtml create mode 100644 browser/base/content/test/contentTheme/browser.toml create mode 100644 browser/base/content/test/contentTheme/browser_contentTheme_in_process_tab.js create mode 100644 browser/base/content/test/contextMenu/browser.toml create mode 100644 browser/base/content/test/contextMenu/browser_bug1798178.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_badiframe.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_contenteditable.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_iframe.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_input.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_inspect.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_keyword.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_linkopen.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_loadblobinnewtab.html create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_loadblobinnewtab.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_save_blocked.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_share_macosx.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_share_win.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_shareurl.html create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_spellcheck.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_touch.js create mode 100644 browser/base/content/test/contextMenu/browser_copy_image_link.js create mode 100644 browser/base/content/test/contextMenu/browser_strip_on_share_link.js create mode 100644 browser/base/content/test/contextMenu/browser_utilityOverlay.js create mode 100644 browser/base/content/test/contextMenu/browser_utilityOverlayPrincipal.js create mode 100644 browser/base/content/test/contextMenu/browser_view_image.js create mode 100644 browser/base/content/test/contextMenu/bug1798178.sjs create mode 100644 browser/base/content/test/contextMenu/contextmenu_common.js create mode 100644 browser/base/content/test/contextMenu/ctxmenu-image.png create mode 100644 browser/base/content/test/contextMenu/doggy.png create mode 100644 browser/base/content/test/contextMenu/file_bug1798178.html create mode 100644 browser/base/content/test/contextMenu/firebird.png create mode 100644 browser/base/content/test/contextMenu/firebird.png^headers^ create mode 100644 browser/base/content/test/contextMenu/subtst_contextmenu.html create mode 100644 browser/base/content/test/contextMenu/subtst_contextmenu_input.html create mode 100644 browser/base/content/test/contextMenu/subtst_contextmenu_keyword.html create mode 100644 browser/base/content/test/contextMenu/subtst_contextmenu_webext.html create mode 100644 browser/base/content/test/contextMenu/subtst_contextmenu_xul.xhtml create mode 100644 browser/base/content/test/contextMenu/test_contextmenu_iframe.html create mode 100644 browser/base/content/test/contextMenu/test_contextmenu_links.html create mode 100644 browser/base/content/test/contextMenu/test_view_image_inline_svg.html create mode 100644 browser/base/content/test/contextMenu/test_view_image_revoked_cached_blob.html create mode 100644 browser/base/content/test/favicons/accept.html create mode 100644 browser/base/content/test/favicons/accept.sjs create mode 100644 browser/base/content/test/favicons/auth_test.html create mode 100644 browser/base/content/test/favicons/auth_test.png create mode 100644 browser/base/content/test/favicons/auth_test.png^headers^ create mode 100644 browser/base/content/test/favicons/blank.html create mode 100644 browser/base/content/test/favicons/browser.toml create mode 100644 browser/base/content/test/favicons/browser_bug408415.js create mode 100644 browser/base/content/test/favicons/browser_bug550565.js create mode 100644 browser/base/content/test/favicons/browser_favicon_accept.js create mode 100644 browser/base/content/test/favicons/browser_favicon_auth.js create mode 100644 browser/base/content/test/favicons/browser_favicon_cache.js create mode 100644 browser/base/content/test/favicons/browser_favicon_change.js create mode 100644 browser/base/content/test/favicons/browser_favicon_change_not_in_document.js create mode 100644 browser/base/content/test/favicons/browser_favicon_credentials.js create mode 100644 browser/base/content/test/favicons/browser_favicon_crossorigin.js create mode 100644 browser/base/content/test/favicons/browser_favicon_empty_data.js create mode 100644 browser/base/content/test/favicons/browser_favicon_load.js create mode 100644 browser/base/content/test/favicons/browser_favicon_nostore.js create mode 100644 browser/base/content/test/favicons/browser_favicon_referer.js create mode 100644 browser/base/content/test/favicons/browser_favicon_store.js create mode 100644 browser/base/content/test/favicons/browser_icon_discovery.js create mode 100644 browser/base/content/test/favicons/browser_invalid_href_fallback.js create mode 100644 browser/base/content/test/favicons/browser_missing_favicon.js create mode 100644 browser/base/content/test/favicons/browser_mixed_content.js create mode 100644 browser/base/content/test/favicons/browser_multiple_icons_in_short_timeframe.js create mode 100644 browser/base/content/test/favicons/browser_oversized.js create mode 100644 browser/base/content/test/favicons/browser_preferred_icons.js create mode 100644 browser/base/content/test/favicons/browser_redirect.js create mode 100644 browser/base/content/test/favicons/browser_rich_icons.js create mode 100644 browser/base/content/test/favicons/browser_rooticon.js create mode 100644 browser/base/content/test/favicons/browser_subframe_favicons_not_used.js create mode 100644 browser/base/content/test/favicons/browser_title_flicker.js create mode 100644 browser/base/content/test/favicons/cookie_favicon.html create mode 100644 browser/base/content/test/favicons/cookie_favicon.sjs create mode 100644 browser/base/content/test/favicons/credentials.png create mode 100644 browser/base/content/test/favicons/credentials.png^headers^ create mode 100644 browser/base/content/test/favicons/credentials1.html create mode 100644 browser/base/content/test/favicons/credentials2.html create mode 100644 browser/base/content/test/favicons/crossorigin.html create mode 100644 browser/base/content/test/favicons/crossorigin.png create mode 100644 browser/base/content/test/favicons/crossorigin.png^headers^ create mode 100644 browser/base/content/test/favicons/datauri-favicon.html create mode 100644 browser/base/content/test/favicons/discovery.html create mode 100644 browser/base/content/test/favicons/file_bug970276_favicon1.ico create mode 100644 browser/base/content/test/favicons/file_bug970276_favicon2.ico create mode 100644 browser/base/content/test/favicons/file_bug970276_popup1.html create mode 100644 browser/base/content/test/favicons/file_bug970276_popup2.html create mode 100644 browser/base/content/test/favicons/file_favicon.html create mode 100644 browser/base/content/test/favicons/file_favicon.png create mode 100644 browser/base/content/test/favicons/file_favicon.png^headers^ create mode 100644 browser/base/content/test/favicons/file_favicon_change.html create mode 100644 browser/base/content/test/favicons/file_favicon_change_not_in_document.html create mode 100644 browser/base/content/test/favicons/file_favicon_empty.html create mode 100644 browser/base/content/test/favicons/file_favicon_no_referrer.html create mode 100644 browser/base/content/test/favicons/file_favicon_redirect.html create mode 100644 browser/base/content/test/favicons/file_favicon_redirect.ico create mode 100644 browser/base/content/test/favicons/file_favicon_redirect.ico^headers^ create mode 100644 browser/base/content/test/favicons/file_favicon_thirdParty.html create mode 100644 browser/base/content/test/favicons/file_generic_favicon.ico create mode 100644 browser/base/content/test/favicons/file_insecure_favicon.html create mode 100644 browser/base/content/test/favicons/file_invalid_href.html create mode 100644 browser/base/content/test/favicons/file_mask_icon.html create mode 100644 browser/base/content/test/favicons/file_rich_icon.html create mode 100644 browser/base/content/test/favicons/file_with_favicon.html create mode 100644 browser/base/content/test/favicons/file_with_slow_favicon.html create mode 100644 browser/base/content/test/favicons/head.js create mode 100644 browser/base/content/test/favicons/icon.svg create mode 100644 browser/base/content/test/favicons/large.png create mode 100644 browser/base/content/test/favicons/large_favicon.html create mode 100644 browser/base/content/test/favicons/moz.png create mode 100644 browser/base/content/test/favicons/no-store.html create mode 100644 browser/base/content/test/favicons/no-store.png create mode 100644 browser/base/content/test/favicons/no-store.png^headers^ create mode 100644 browser/base/content/test/favicons/rich_moz_1.png create mode 100644 browser/base/content/test/favicons/rich_moz_2.png create mode 100644 browser/base/content/test/forms/browser.toml create mode 100644 browser/base/content/test/forms/browser_selectpopup.js create mode 100644 browser/base/content/test/forms/browser_selectpopup_colors.js create mode 100644 browser/base/content/test/forms/browser_selectpopup_dir.js create mode 100644 browser/base/content/test/forms/browser_selectpopup_hr.js create mode 100644 browser/base/content/test/forms/browser_selectpopup_large.js create mode 100644 browser/base/content/test/forms/browser_selectpopup_searchfocus.js create mode 100644 browser/base/content/test/forms/browser_selectpopup_showPicker.js create mode 100644 browser/base/content/test/forms/browser_selectpopup_text_transform.js create mode 100644 browser/base/content/test/forms/browser_selectpopup_toplevel.js create mode 100644 browser/base/content/test/forms/browser_selectpopup_user_input.js create mode 100644 browser/base/content/test/forms/browser_selectpopup_width.js create mode 100644 browser/base/content/test/forms/browser_selectpopup_xhtml.js create mode 100644 browser/base/content/test/forms/head.js create mode 100644 browser/base/content/test/fullscreen/FullscreenFrame.sys.mjs create mode 100644 browser/base/content/test/fullscreen/browser.toml create mode 100644 browser/base/content/test/fullscreen/browser_bug1557041.js create mode 100644 browser/base/content/test/fullscreen/browser_bug1620341.js create mode 100644 browser/base/content/test/fullscreen/browser_domFS_statuspanel.js create mode 100644 browser/base/content/test/fullscreen/browser_fullscreen_api_fission.js create mode 100644 browser/base/content/test/fullscreen/browser_fullscreen_context_menu.js create mode 100644 browser/base/content/test/fullscreen/browser_fullscreen_cross_origin.js create mode 100644 browser/base/content/test/fullscreen/browser_fullscreen_enterInUrlbar.js create mode 100644 browser/base/content/test/fullscreen/browser_fullscreen_from_minimize.js create mode 100644 browser/base/content/test/fullscreen/browser_fullscreen_keydown_reservation.js create mode 100644 browser/base/content/test/fullscreen/browser_fullscreen_menus.js create mode 100644 browser/base/content/test/fullscreen/browser_fullscreen_newtab.js create mode 100644 browser/base/content/test/fullscreen/browser_fullscreen_newwindow.js create mode 100644 browser/base/content/test/fullscreen/browser_fullscreen_permissions_prompt.js create mode 100644 browser/base/content/test/fullscreen/browser_fullscreen_warning.js create mode 100644 browser/base/content/test/fullscreen/browser_fullscreen_window_focus.js create mode 100644 browser/base/content/test/fullscreen/browser_fullscreen_window_open.js create mode 100644 browser/base/content/test/fullscreen/fullscreen.html create mode 100644 browser/base/content/test/fullscreen/fullscreen_frame.html create mode 100644 browser/base/content/test/fullscreen/head.js create mode 100644 browser/base/content/test/fullscreen/open_and_focus_helper.html create mode 100644 browser/base/content/test/general/alltabslistener.html create mode 100644 browser/base/content/test/general/app_bug575561.html create mode 100644 browser/base/content/test/general/app_subframe_bug575561.html create mode 100644 browser/base/content/test/general/audio.ogg create mode 100644 browser/base/content/test/general/browser.toml create mode 100644 browser/base/content/test/general/browser_accesskeys.js create mode 100644 browser/base/content/test/general/browser_addCertException.js create mode 100644 browser/base/content/test/general/browser_alltabslistener.js create mode 100644 browser/base/content/test/general/browser_backButtonFitts.js create mode 100644 browser/base/content/test/general/browser_beforeunload_duplicate_dialogs.js create mode 100644 browser/base/content/test/general/browser_bug1261299.js create mode 100644 browser/base/content/test/general/browser_bug1297539.js create mode 100644 browser/base/content/test/general/browser_bug1299667.js create mode 100644 browser/base/content/test/general/browser_bug321000.js create mode 100644 browser/base/content/test/general/browser_bug356571.js create mode 100644 browser/base/content/test/general/browser_bug380960.js create mode 100644 browser/base/content/test/general/browser_bug406216.js create mode 100644 browser/base/content/test/general/browser_bug417483.js create mode 100644 browser/base/content/test/general/browser_bug424101.js create mode 100644 browser/base/content/test/general/browser_bug427559.js create mode 100644 browser/base/content/test/general/browser_bug431826.js create mode 100644 browser/base/content/test/general/browser_bug432599.js create mode 100644 browser/base/content/test/general/browser_bug455852.js create mode 100644 browser/base/content/test/general/browser_bug462289.js create mode 100644 browser/base/content/test/general/browser_bug462673.js create mode 100644 browser/base/content/test/general/browser_bug477014.js create mode 100644 browser/base/content/test/general/browser_bug479408.js create mode 100644 browser/base/content/test/general/browser_bug479408_sample.html create mode 100644 browser/base/content/test/general/browser_bug481560.js create mode 100644 browser/base/content/test/general/browser_bug484315.js create mode 100644 browser/base/content/test/general/browser_bug491431.js create mode 100644 browser/base/content/test/general/browser_bug495058.js create mode 100644 browser/base/content/test/general/browser_bug519216.js create mode 100644 browser/base/content/test/general/browser_bug520538.js create mode 100644 browser/base/content/test/general/browser_bug521216.js create mode 100644 browser/base/content/test/general/browser_bug533232.js create mode 100644 browser/base/content/test/general/browser_bug537013.js create mode 100644 browser/base/content/test/general/browser_bug537474.js create mode 100644 browser/base/content/test/general/browser_bug563588.js create mode 100644 browser/base/content/test/general/browser_bug565575.js create mode 100644 browser/base/content/test/general/browser_bug567306.js create mode 100644 browser/base/content/test/general/browser_bug575561.js create mode 100644 browser/base/content/test/general/browser_bug577121.js create mode 100644 browser/base/content/test/general/browser_bug578534.js create mode 100644 browser/base/content/test/general/browser_bug579872.js create mode 100644 browser/base/content/test/general/browser_bug581253.js create mode 100644 browser/base/content/test/general/browser_bug585785.js create mode 100644 browser/base/content/test/general/browser_bug585830.js create mode 100644 browser/base/content/test/general/browser_bug594131.js create mode 100644 browser/base/content/test/general/browser_bug596687.js create mode 100644 browser/base/content/test/general/browser_bug597218.js create mode 100644 browser/base/content/test/general/browser_bug609700.js create mode 100644 browser/base/content/test/general/browser_bug623893.js create mode 100644 browser/base/content/test/general/browser_bug624734.js create mode 100644 browser/base/content/test/general/browser_bug664672.js create mode 100644 browser/base/content/test/general/browser_bug676619.js create mode 100644 browser/base/content/test/general/browser_bug710878.js create mode 100644 browser/base/content/test/general/browser_bug724239.js create mode 100644 browser/base/content/test/general/browser_bug734076.js create mode 100644 browser/base/content/test/general/browser_bug749738.js create mode 100644 browser/base/content/test/general/browser_bug763468_perwindowpb.js create mode 100644 browser/base/content/test/general/browser_bug767836_perwindowpb.js create mode 100644 browser/base/content/test/general/browser_bug817947.js create mode 100644 browser/base/content/test/general/browser_bug832435.js create mode 100644 browser/base/content/test/general/browser_bug882977.js create mode 100644 browser/base/content/test/general/browser_bug963945.js create mode 100644 browser/base/content/test/general/browser_clipboard.js create mode 100644 browser/base/content/test/general/browser_clipboard_pastefile.js create mode 100644 browser/base/content/test/general/browser_contentAltClick.js create mode 100644 browser/base/content/test/general/browser_contentAreaClick.js create mode 100644 browser/base/content/test/general/browser_ctrlTab.js create mode 100644 browser/base/content/test/general/browser_datachoices_notification.js create mode 100644 browser/base/content/test/general/browser_documentnavigation.js create mode 100644 browser/base/content/test/general/browser_domFullscreen_fullscreenMode.js create mode 100644 browser/base/content/test/general/browser_double_close_tab.js create mode 100644 browser/base/content/test/general/browser_drag.js create mode 100644 browser/base/content/test/general/browser_duplicateIDs.js create mode 100644 browser/base/content/test/general/browser_findbarClose.js create mode 100644 browser/base/content/test/general/browser_focusonkeydown.js create mode 100644 browser/base/content/test/general/browser_fullscreen-window-open.js create mode 100644 browser/base/content/test/general/browser_gestureSupport.js create mode 100644 browser/base/content/test/general/browser_hide_removing.js create mode 100644 browser/base/content/test/general/browser_homeDrop.js create mode 100644 browser/base/content/test/general/browser_invalid_uri_back_forward_manipulation.js create mode 100644 browser/base/content/test/general/browser_lastAccessedTab.js create mode 100644 browser/base/content/test/general/browser_menuButtonFitts.js create mode 100644 browser/base/content/test/general/browser_middleMouse_noJSPaste.js create mode 100644 browser/base/content/test/general/browser_minimize.js create mode 100644 browser/base/content/test/general/browser_modifiedclick_inherit_principal.js create mode 100644 browser/base/content/test/general/browser_newTabDrop.js create mode 100644 browser/base/content/test/general/browser_newWindowDrop.js create mode 100644 browser/base/content/test/general/browser_new_http_window_opened_from_file_tab.js create mode 100644 browser/base/content/test/general/browser_newwindow_focus.js create mode 100644 browser/base/content/test/general/browser_plainTextLinks.js create mode 100644 browser/base/content/test/general/browser_printpreview.js create mode 100644 browser/base/content/test/general/browser_private_browsing_window.js create mode 100644 browser/base/content/test/general/browser_private_no_prompt.js create mode 100644 browser/base/content/test/general/browser_refreshBlocker.js create mode 100644 browser/base/content/test/general/browser_relatedTabs.js create mode 100644 browser/base/content/test/general/browser_remoteTroubleshoot.js create mode 100644 browser/base/content/test/general/browser_remoteWebNavigation_postdata.js create mode 100644 browser/base/content/test/general/browser_restore_isAppTab.js create mode 100644 browser/base/content/test/general/browser_save_link-perwindowpb.js create mode 100644 browser/base/content/test/general/browser_save_link_when_window_navigates.js create mode 100644 browser/base/content/test/general/browser_save_private_link_perwindowpb.js create mode 100644 browser/base/content/test/general/browser_save_video.js create mode 100644 browser/base/content/test/general/browser_save_video_frame.js create mode 100644 browser/base/content/test/general/browser_selectTabAtIndex.js create mode 100644 browser/base/content/test/general/browser_star_hsts.js create mode 100644 browser/base/content/test/general/browser_star_hsts.sjs create mode 100644 browser/base/content/test/general/browser_storagePressure_notification.js create mode 100644 browser/base/content/test/general/browser_tabDrop.js create mode 100644 browser/base/content/test/general/browser_tab_close_dependent_window.js create mode 100644 browser/base/content/test/general/browser_tab_detach_restore.js create mode 100644 browser/base/content/test/general/browser_tab_drag_drop_perwindow.js create mode 100644 browser/base/content/test/general/browser_tab_dragdrop.js create mode 100644 browser/base/content/test/general/browser_tab_dragdrop2.js create mode 100644 browser/base/content/test/general/browser_tab_dragdrop2_frame1.xhtml create mode 100644 browser/base/content/test/general/browser_tab_dragdrop_embed.html create mode 100644 browser/base/content/test/general/browser_tabfocus.js create mode 100644 browser/base/content/test/general/browser_tabkeynavigation.js create mode 100644 browser/base/content/test/general/browser_tabs_close_beforeunload.js create mode 100644 browser/base/content/test/general/browser_tabs_isActive.js create mode 100644 browser/base/content/test/general/browser_tabs_owner.js create mode 100644 browser/base/content/test/general/browser_testOpenNewRemoteTabsFromNonRemoteBrowsers.js create mode 100644 browser/base/content/test/general/browser_typeAheadFind.js create mode 100644 browser/base/content/test/general/browser_unknownContentType_title.js create mode 100644 browser/base/content/test/general/browser_unloaddialogs.js create mode 100644 browser/base/content/test/general/browser_viewSourceInTabOnViewSource.js create mode 100644 browser/base/content/test/general/browser_visibleFindSelection.js create mode 100644 browser/base/content/test/general/browser_visibleTabs.js create mode 100644 browser/base/content/test/general/browser_visibleTabs_bookmarkAllPages.js create mode 100644 browser/base/content/test/general/browser_visibleTabs_tabPreview.js create mode 100644 browser/base/content/test/general/browser_windowactivation.js create mode 100644 browser/base/content/test/general/browser_zbug569342.js create mode 100644 browser/base/content/test/general/bug792517-2.html create mode 100644 browser/base/content/test/general/bug792517.html create mode 100644 browser/base/content/test/general/bug792517.sjs create mode 100644 browser/base/content/test/general/clipboard_pastefile.html create mode 100644 browser/base/content/test/general/close_beforeunload.html create mode 100644 browser/base/content/test/general/close_beforeunload_opens_second_tab.html create mode 100644 browser/base/content/test/general/download_page.html create mode 100644 browser/base/content/test/general/download_page_1.txt create mode 100644 browser/base/content/test/general/download_page_2.txt create mode 100644 browser/base/content/test/general/download_with_content_disposition_header.sjs create mode 100644 browser/base/content/test/general/dummy.ics create mode 100644 browser/base/content/test/general/dummy.ics^headers^ create mode 100644 browser/base/content/test/general/dummy_page.html create mode 100644 browser/base/content/test/general/file_documentnavigation_frameset.html create mode 100644 browser/base/content/test/general/file_double_close_tab.html create mode 100644 browser/base/content/test/general/file_fullscreen-window-open.html create mode 100644 browser/base/content/test/general/file_window_activation.html create mode 100644 browser/base/content/test/general/file_window_activation2.html create mode 100644 browser/base/content/test/general/file_with_link_to_http.html create mode 100644 browser/base/content/test/general/head.js create mode 100644 browser/base/content/test/general/moz.png create mode 100644 browser/base/content/test/general/navigating_window_with_download.html create mode 100644 browser/base/content/test/general/print_postdata.sjs create mode 100644 browser/base/content/test/general/redirect_download.sjs create mode 100644 browser/base/content/test/general/refresh_header.sjs create mode 100644 browser/base/content/test/general/refresh_meta.sjs create mode 100644 browser/base/content/test/general/test_bug462673.html create mode 100644 browser/base/content/test/general/test_bug628179.html create mode 100644 browser/base/content/test/general/test_remoteTroubleshoot.html create mode 100644 browser/base/content/test/general/title_test.svg create mode 100644 browser/base/content/test/general/unknownContentType_file.pif create mode 100644 browser/base/content/test/general/unknownContentType_file.pif^headers^ create mode 100644 browser/base/content/test/general/video.ogg create mode 100644 browser/base/content/test/general/web_video.html create mode 100644 browser/base/content/test/general/web_video1.ogv create mode 100644 browser/base/content/test/general/web_video1.ogv^headers^ create mode 100644 browser/base/content/test/gesture/browser.toml create mode 100644 browser/base/content/test/gesture/browser_gesture_navigation.js create mode 100644 browser/base/content/test/historySwipeAnimation/browser.toml create mode 100644 browser/base/content/test/historySwipeAnimation/browser_historySwipeAnimation.js create mode 100644 browser/base/content/test/keyboard/browser.toml create mode 100644 browser/base/content/test/keyboard/browser_bookmarks_shortcut.js create mode 100644 browser/base/content/test/keyboard/browser_cancel_caret_browsing_in_content.js create mode 100644 browser/base/content/test/keyboard/browser_popup_keyNav.js create mode 100644 browser/base/content/test/keyboard/browser_toolbarButtonKeyPress.js create mode 100644 browser/base/content/test/keyboard/browser_toolbarKeyNav.js create mode 100644 browser/base/content/test/keyboard/file_empty.html create mode 100644 browser/base/content/test/keyboard/focusableContent.html create mode 100644 browser/base/content/test/keyboard/head.js create mode 100644 browser/base/content/test/menubar/browser.toml create mode 100644 browser/base/content/test/menubar/browser_file_close_tabs.js create mode 100644 browser/base/content/test/menubar/browser_file_menu_import_wizard.js create mode 100644 browser/base/content/test/menubar/browser_file_share.js create mode 100644 browser/base/content/test/menubar/browser_history_recently_closed_tabs.js create mode 100644 browser/base/content/test/menubar/browser_search_bookmarks.js create mode 100644 browser/base/content/test/menubar/browser_search_history.js create mode 100644 browser/base/content/test/menubar/file_shareurl.html create mode 100644 browser/base/content/test/metaTags/bad_meta_tags.html create mode 100644 browser/base/content/test/metaTags/browser.toml create mode 100644 browser/base/content/test/metaTags/browser_bad_meta_tags.js create mode 100644 browser/base/content/test/metaTags/browser_meta_tags.js create mode 100644 browser/base/content/test/metaTags/head.js create mode 100644 browser/base/content/test/metaTags/meta_tags.html create mode 100644 browser/base/content/test/notificationbox/browser.toml create mode 100644 browser/base/content/test/notificationbox/browser_notification_stacking.js create mode 100644 browser/base/content/test/notificationbox/browser_notificationbar_telemetry.js create mode 100644 browser/base/content/test/notificationbox/browser_tabnotificationbox_switch_tabs.js create mode 100644 browser/base/content/test/outOfProcess/browser.toml create mode 100644 browser/base/content/test/outOfProcess/browser_basic_outofprocess.js create mode 100644 browser/base/content/test/outOfProcess/browser_controller.js create mode 100644 browser/base/content/test/outOfProcess/browser_promisefocus.js create mode 100644 browser/base/content/test/outOfProcess/file_base.html create mode 100644 browser/base/content/test/outOfProcess/file_frame1.html create mode 100644 browser/base/content/test/outOfProcess/file_frame2.html create mode 100644 browser/base/content/test/outOfProcess/file_innerframe.html create mode 100644 browser/base/content/test/outOfProcess/head.js create mode 100644 browser/base/content/test/pageActions/browser.toml create mode 100644 browser/base/content/test/pageActions/browser_PageActions_bookmark.js create mode 100644 browser/base/content/test/pageActions/browser_PageActions_overflow.js create mode 100644 browser/base/content/test/pageActions/browser_PageActions_removeExtension.js create mode 100644 browser/base/content/test/pageActions/head.js create mode 100644 browser/base/content/test/pageStyle/browser.toml create mode 100644 browser/base/content/test/pageStyle/browser_disable_author_style_oop.js create mode 100644 browser/base/content/test/pageStyle/browser_page_style_menu.js create mode 100644 browser/base/content/test/pageStyle/browser_page_style_menu_update.js create mode 100644 browser/base/content/test/pageStyle/head.js create mode 100644 browser/base/content/test/pageStyle/page_style.html create mode 100644 browser/base/content/test/pageStyle/page_style_only_alternates.html create mode 100644 browser/base/content/test/pageStyle/page_style_sample.html create mode 100644 browser/base/content/test/pageStyle/style.css create mode 100644 browser/base/content/test/pageinfo/all_images.html create mode 100644 browser/base/content/test/pageinfo/browser.toml create mode 100644 browser/base/content/test/pageinfo/browser_pageinfo_firstPartyIsolation.js create mode 100644 browser/base/content/test/pageinfo/browser_pageinfo_iframe_media.js create mode 100644 browser/base/content/test/pageinfo/browser_pageinfo_image_info.js create mode 100644 browser/base/content/test/pageinfo/browser_pageinfo_images.js create mode 100644 browser/base/content/test/pageinfo/browser_pageinfo_permissions.js create mode 100644 browser/base/content/test/pageinfo/browser_pageinfo_rtl.js create mode 100644 browser/base/content/test/pageinfo/browser_pageinfo_security.js create mode 100644 browser/base/content/test/pageinfo/browser_pageinfo_separate_private.js create mode 100644 browser/base/content/test/pageinfo/browser_pageinfo_svg_image.js create mode 100644 browser/base/content/test/pageinfo/iframes.html create mode 100644 browser/base/content/test/pageinfo/image.html create mode 100644 browser/base/content/test/pageinfo/svg_image.html create mode 100644 browser/base/content/test/performance/PerfTestHelpers.sys.mjs create mode 100644 browser/base/content/test/performance/StartupContentSubframe.sys.mjs create mode 100644 browser/base/content/test/performance/browser.toml create mode 100644 browser/base/content/test/performance/browser_appmenu.js create mode 100644 browser/base/content/test/performance/browser_hidden_browser_vsync.js create mode 100644 browser/base/content/test/performance/browser_panel_vsync.js create mode 100644 browser/base/content/test/performance/browser_preferences_usage.js create mode 100644 browser/base/content/test/performance/browser_startup.js create mode 100644 browser/base/content/test/performance/browser_startup_content.js create mode 100644 browser/base/content/test/performance/browser_startup_content_mainthreadio.js create mode 100644 browser/base/content/test/performance/browser_startup_content_subframe.js create mode 100644 browser/base/content/test/performance/browser_startup_flicker.js create mode 100644 browser/base/content/test/performance/browser_startup_hiddenwindow.js create mode 100644 browser/base/content/test/performance/browser_startup_images.js create mode 100644 browser/base/content/test/performance/browser_startup_mainthreadio.js create mode 100644 browser/base/content/test/performance/browser_startup_syncIPC.js create mode 100644 browser/base/content/test/performance/browser_tabclose.js create mode 100644 browser/base/content/test/performance/browser_tabclose_grow.js create mode 100644 browser/base/content/test/performance/browser_tabdetach.js create mode 100644 browser/base/content/test/performance/browser_tabopen.js create mode 100644 browser/base/content/test/performance/browser_tabopen_squeeze.js create mode 100644 browser/base/content/test/performance/browser_tabstrip_overflow_underflow.js create mode 100644 browser/base/content/test/performance/browser_tabswitch.js create mode 100644 browser/base/content/test/performance/browser_toolbariconcolor_restyles.js create mode 100644 browser/base/content/test/performance/browser_urlbar_keyed_search.js create mode 100644 browser/base/content/test/performance/browser_urlbar_search.js create mode 100644 browser/base/content/test/performance/browser_vsync_accessibility.js create mode 100644 browser/base/content/test/performance/browser_window_resize.js create mode 100644 browser/base/content/test/performance/browser_windowclose.js create mode 100644 browser/base/content/test/performance/browser_windowopen.js create mode 100644 browser/base/content/test/performance/file_empty.html create mode 100644 browser/base/content/test/performance/head.js create mode 100644 browser/base/content/test/performance/hidpi/browser.toml create mode 100644 browser/base/content/test/performance/io/browser.toml create mode 100644 browser/base/content/test/performance/lowdpi/browser.toml create mode 100644 browser/base/content/test/performance/moz.build create mode 100644 browser/base/content/test/performance/triage.json create mode 100644 browser/base/content/test/perftest.toml create mode 100644 browser/base/content/test/perftest_browser_xhtml_dom.js create mode 100644 browser/base/content/test/permissions/browser.toml create mode 100644 browser/base/content/test/permissions/browser_autoplay_blocked.html create mode 100644 browser/base/content/test/permissions/browser_autoplay_blocked.js create mode 100644 browser/base/content/test/permissions/browser_autoplay_blocked_slow.sjs create mode 100644 browser/base/content/test/permissions/browser_autoplay_js.html create mode 100644 browser/base/content/test/permissions/browser_autoplay_muted.html create mode 100644 browser/base/content/test/permissions/browser_canvas_fingerprinting_resistance.js create mode 100644 browser/base/content/test/permissions/browser_canvas_rfp_exclusion.js create mode 100644 browser/base/content/test/permissions/browser_permission_delegate_geo.js create mode 100644 browser/base/content/test/permissions/browser_permissions.js create mode 100644 browser/base/content/test/permissions/browser_permissions_delegate_vibrate.js create mode 100644 browser/base/content/test/permissions/browser_permissions_handling_user_input.js create mode 100644 browser/base/content/test/permissions/browser_permissions_postPrompt.js create mode 100644 browser/base/content/test/permissions/browser_reservedkey.js create mode 100644 browser/base/content/test/permissions/browser_site_scoped_permissions.js create mode 100644 browser/base/content/test/permissions/browser_temporary_permissions.js create mode 100644 browser/base/content/test/permissions/browser_temporary_permissions_expiry.js create mode 100644 browser/base/content/test/permissions/browser_temporary_permissions_navigation.js create mode 100644 browser/base/content/test/permissions/browser_temporary_permissions_tabs.js create mode 100644 browser/base/content/test/permissions/dummy.js create mode 100644 browser/base/content/test/permissions/empty.html create mode 100644 browser/base/content/test/permissions/head.js create mode 100644 browser/base/content/test/permissions/permissions.html create mode 100644 browser/base/content/test/permissions/temporary_permissions_frame.html create mode 100644 browser/base/content/test/permissions/temporary_permissions_subframe.html create mode 100644 browser/base/content/test/plugins/browser.toml create mode 100644 browser/base/content/test/plugins/browser_bug797677.js create mode 100644 browser/base/content/test/plugins/browser_enable_DRM_prompt.js create mode 100644 browser/base/content/test/plugins/browser_globalplugin_crashinfobar.js create mode 100644 browser/base/content/test/plugins/browser_private_browsing_eme_persistent_state.js create mode 100644 browser/base/content/test/plugins/empty_file.html create mode 100644 browser/base/content/test/plugins/head.js create mode 100644 browser/base/content/test/plugins/plugin_bug797677.html create mode 100644 browser/base/content/test/popupNotifications/browser.toml create mode 100644 browser/base/content/test/popupNotifications/browser_displayURI.js create mode 100644 browser/base/content/test/popupNotifications/browser_popupNotification.js create mode 100644 browser/base/content/test/popupNotifications/browser_popupNotification_2.js create mode 100644 browser/base/content/test/popupNotifications/browser_popupNotification_3.js create mode 100644 browser/base/content/test/popupNotifications/browser_popupNotification_4.js create mode 100644 browser/base/content/test/popupNotifications/browser_popupNotification_5.js create mode 100644 browser/base/content/test/popupNotifications/browser_popupNotification_accesskey.js create mode 100644 browser/base/content/test/popupNotifications/browser_popupNotification_checkbox.js create mode 100644 browser/base/content/test/popupNotifications/browser_popupNotification_hide_after_identity_panel.js create mode 100644 browser/base/content/test/popupNotifications/browser_popupNotification_hide_after_protections_panel.js create mode 100644 browser/base/content/test/popupNotifications/browser_popupNotification_keyboard.js create mode 100644 browser/base/content/test/popupNotifications/browser_popupNotification_learnmore.js create mode 100644 browser/base/content/test/popupNotifications/browser_popupNotification_no_anchors.js create mode 100644 browser/base/content/test/popupNotifications/browser_popupNotification_security_delay.js create mode 100644 browser/base/content/test/popupNotifications/browser_popupNotification_selection_required.js create mode 100644 browser/base/content/test/popupNotifications/browser_reshow_in_background.js create mode 100644 browser/base/content/test/popupNotifications/head.js create mode 100644 browser/base/content/test/popups/browser.toml create mode 100644 browser/base/content/test/popups/browser_popupUI.js create mode 100644 browser/base/content/test/popups/browser_popup_blocker.js create mode 100644 browser/base/content/test/popups/browser_popup_blocker_frames.js create mode 100644 browser/base/content/test/popups/browser_popup_blocker_identity_block.js create mode 100644 browser/base/content/test/popups/browser_popup_blocker_iframes.js create mode 100644 browser/base/content/test/popups/browser_popup_close_main_window.js create mode 100644 browser/base/content/test/popups/browser_popup_frames.js create mode 100644 browser/base/content/test/popups/browser_popup_inner_outer_size.js create mode 100644 browser/base/content/test/popups/browser_popup_linux_move.js create mode 100644 browser/base/content/test/popups/browser_popup_linux_resize.js create mode 100644 browser/base/content/test/popups/browser_popup_move.js create mode 100644 browser/base/content/test/popups/browser_popup_move_instant.js create mode 100644 browser/base/content/test/popups/browser_popup_new_window_resize.js create mode 100644 browser/base/content/test/popups/browser_popup_new_window_size.js create mode 100644 browser/base/content/test/popups/browser_popup_resize.js create mode 100644 browser/base/content/test/popups/browser_popup_resize_instant.js create mode 100644 browser/base/content/test/popups/browser_popup_resize_repeat.js create mode 100644 browser/base/content/test/popups/browser_popup_resize_repeat_instant.js create mode 100644 browser/base/content/test/popups/browser_popup_resize_revert.js create mode 100644 browser/base/content/test/popups/browser_popup_resize_revert_instant.js create mode 100644 browser/base/content/test/popups/head.js create mode 100644 browser/base/content/test/popups/popup_blocker.html create mode 100644 browser/base/content/test/popups/popup_blocker2.html create mode 100644 browser/base/content/test/popups/popup_blocker_10_popups.html create mode 100644 browser/base/content/test/popups/popup_blocker_a.html create mode 100644 browser/base/content/test/popups/popup_blocker_b.html create mode 100644 browser/base/content/test/popups/popup_blocker_frame.html create mode 100644 browser/base/content/test/popups/popup_size.html create mode 100644 browser/base/content/test/privateBrowsing/browser.toml create mode 100644 browser/base/content/test/privateBrowsing/browser_private_browsing_simplified_ui.js create mode 100644 browser/base/content/test/protectionsUI/benignPage.html create mode 100644 browser/base/content/test/protectionsUI/browser.toml create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI.js create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI_3.js create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI_background_tabs.js create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI_categories.js create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI_cookie_banner.js create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI_cookies_subview.js create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI_cryptominers.js create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI_email_trackers_subview.js create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI_fetch.js create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI_fingerprinters.js create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI_icon_state.js create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI_info_message.js create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI_milestones.js create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI_open_preferences.js create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI_pbmode_exceptions.js create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI_report_breakage.js create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI_shield_visibility.js create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI_socialtracking.js create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI_state.js create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI_state_reset.js create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI_subview_shim.js create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI_suspicious_fingerprinters_subview.js create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI_telemetry.js create mode 100644 browser/base/content/test/protectionsUI/browser_protectionsUI_trackers_subview.js create mode 100644 browser/base/content/test/protectionsUI/canvas-fingerprinter.html create mode 100644 browser/base/content/test/protectionsUI/containerPage.html create mode 100644 browser/base/content/test/protectionsUI/cookiePage.html create mode 100644 browser/base/content/test/protectionsUI/cookieServer.sjs create mode 100644 browser/base/content/test/protectionsUI/cookieSetterPage.html create mode 100644 browser/base/content/test/protectionsUI/emailTrackingPage.html create mode 100644 browser/base/content/test/protectionsUI/embeddedPage.html create mode 100644 browser/base/content/test/protectionsUI/file_protectionsUI_fetch.html create mode 100644 browser/base/content/test/protectionsUI/file_protectionsUI_fetch.js create mode 100644 browser/base/content/test/protectionsUI/file_protectionsUI_fetch.js^headers^ create mode 100644 browser/base/content/test/protectionsUI/font-fingerprinter.html create mode 100644 browser/base/content/test/protectionsUI/head.js create mode 100644 browser/base/content/test/protectionsUI/sandboxed.html create mode 100644 browser/base/content/test/protectionsUI/sandboxed.html^headers^ create mode 100644 browser/base/content/test/protectionsUI/trackingAPI.js create mode 100644 browser/base/content/test/protectionsUI/trackingPage.html create mode 100644 browser/base/content/test/referrer/browser.toml create mode 100644 browser/base/content/test/referrer/browser_referrer_click_pinned_tab.js create mode 100644 browser/base/content/test/referrer/browser_referrer_middle_click.js create mode 100644 browser/base/content/test/referrer/browser_referrer_middle_click_in_container.js create mode 100644 browser/base/content/test/referrer/browser_referrer_open_link_in_container_tab.js create mode 100644 browser/base/content/test/referrer/browser_referrer_open_link_in_container_tab2.js create mode 100644 browser/base/content/test/referrer/browser_referrer_open_link_in_container_tab3.js create mode 100644 browser/base/content/test/referrer/browser_referrer_open_link_in_private.js create mode 100644 browser/base/content/test/referrer/browser_referrer_open_link_in_tab.js create mode 100644 browser/base/content/test/referrer/browser_referrer_open_link_in_window.js create mode 100644 browser/base/content/test/referrer/browser_referrer_open_link_in_window_in_container.js create mode 100644 browser/base/content/test/referrer/browser_referrer_simple_click.js create mode 100644 browser/base/content/test/referrer/file_referrer_policyserver.sjs create mode 100644 browser/base/content/test/referrer/file_referrer_policyserver_attr.sjs create mode 100644 browser/base/content/test/referrer/file_referrer_testserver.sjs create mode 100644 browser/base/content/test/referrer/head.js create mode 100644 browser/base/content/test/sanitize/browser.toml create mode 100644 browser/base/content/test/sanitize/browser_cookiePermission.js create mode 100644 browser/base/content/test/sanitize/browser_cookiePermission_aboutURL.js create mode 100644 browser/base/content/test/sanitize/browser_cookiePermission_containers.js create mode 100644 browser/base/content/test/sanitize/browser_cookiePermission_subDomains.js create mode 100644 browser/base/content/test/sanitize/browser_cookiePermission_subDomains_v2.js create mode 100644 browser/base/content/test/sanitize/browser_purgehistory_clears_sh.js create mode 100644 browser/base/content/test/sanitize/browser_sanitize-cookie-exceptions.js create mode 100644 browser/base/content/test/sanitize/browser_sanitize-formhistory.js create mode 100644 browser/base/content/test/sanitize/browser_sanitize-history.js create mode 100644 browser/base/content/test/sanitize/browser_sanitize-offlineData.js create mode 100644 browser/base/content/test/sanitize/browser_sanitize-passwordDisabledHosts.js create mode 100644 browser/base/content/test/sanitize/browser_sanitize-sitepermissions.js create mode 100644 browser/base/content/test/sanitize/browser_sanitize-timespans.js create mode 100644 browser/base/content/test/sanitize/browser_sanitize-timespans_v2.js create mode 100644 browser/base/content/test/sanitize/browser_sanitizeDialog.js create mode 100644 browser/base/content/test/sanitize/browser_sanitizeDialog_v2.js create mode 100644 browser/base/content/test/sanitize/browser_sanitizeOnShutdown_migration.js create mode 100644 browser/base/content/test/sanitize/dummy.js create mode 100644 browser/base/content/test/sanitize/dummy_page.html create mode 100644 browser/base/content/test/sanitize/head.js create mode 100644 browser/base/content/test/sanitize/site_data_test.html create mode 100644 browser/base/content/test/sidebar/browser.toml create mode 100644 browser/base/content/test/sidebar/browser_sidebar_adopt.js create mode 100644 browser/base/content/test/sidebar/browser_sidebar_app_locale_changed.js create mode 100644 browser/base/content/test/sidebar/browser_sidebar_keys.js create mode 100644 browser/base/content/test/sidebar/browser_sidebar_move.js create mode 100644 browser/base/content/test/sidebar/browser_sidebar_persist.js create mode 100644 browser/base/content/test/sidebar/browser_sidebar_switcher.js create mode 100644 browser/base/content/test/siteIdentity/browser.toml create mode 100644 browser/base/content/test/siteIdentity/browser_about_blank_same_document_tabswitch.js create mode 100644 browser/base/content/test/siteIdentity/browser_bug1045809.js create mode 100644 browser/base/content/test/siteIdentity/browser_bug822367.js create mode 100644 browser/base/content/test/siteIdentity/browser_bug902156.js create mode 100644 browser/base/content/test/siteIdentity/browser_bug906190.js create mode 100644 browser/base/content/test/siteIdentity/browser_check_identity_state.js create mode 100644 browser/base/content/test/siteIdentity/browser_check_identity_state_pdf.js create mode 100644 browser/base/content/test/siteIdentity/browser_csp_block_all_mixedcontent.js create mode 100644 browser/base/content/test/siteIdentity/browser_deprecatedTLSVersions.js create mode 100644 browser/base/content/test/siteIdentity/browser_geolocation_indicator.js create mode 100644 browser/base/content/test/siteIdentity/browser_getSecurityInfo.js create mode 100644 browser/base/content/test/siteIdentity/browser_identityBlock_flicker.js create mode 100644 browser/base/content/test/siteIdentity/browser_identityBlock_focus.js create mode 100644 browser/base/content/test/siteIdentity/browser_identityIcon_img_url.js create mode 100644 browser/base/content/test/siteIdentity/browser_identityPopup_HttpsOnlyMode.js create mode 100644 browser/base/content/test/siteIdentity/browser_identityPopup_clearSiteData.js create mode 100644 browser/base/content/test/siteIdentity/browser_identityPopup_clearSiteData_extensions.js create mode 100644 browser/base/content/test/siteIdentity/browser_identityPopup_custom_roots.js create mode 100644 browser/base/content/test/siteIdentity/browser_identityPopup_focus.js create mode 100644 browser/base/content/test/siteIdentity/browser_identity_UI.js create mode 100644 browser/base/content/test/siteIdentity/browser_iframe_navigation.js create mode 100644 browser/base/content/test/siteIdentity/browser_ignore_same_page_navigation.js create mode 100644 browser/base/content/test/siteIdentity/browser_mcb_redirect.js create mode 100644 browser/base/content/test/siteIdentity/browser_mixedContentFramesOnHttp.js create mode 100644 browser/base/content/test/siteIdentity/browser_mixedContentFromOnunload.js create mode 100644 browser/base/content/test/siteIdentity/browser_mixed_content_cert_override.js create mode 100644 browser/base/content/test/siteIdentity/browser_mixed_content_with_navigation.js create mode 100644 browser/base/content/test/siteIdentity/browser_mixed_passive_content_indicator.js create mode 100644 browser/base/content/test/siteIdentity/browser_mixedcontent_securityflags.js create mode 100644 browser/base/content/test/siteIdentity/browser_navigation_failures.js create mode 100644 browser/base/content/test/siteIdentity/browser_no_mcb_for_loopback.js create mode 100644 browser/base/content/test/siteIdentity/browser_no_mcb_for_onions.js create mode 100644 browser/base/content/test/siteIdentity/browser_no_mcb_on_http_site.js create mode 100644 browser/base/content/test/siteIdentity/browser_secure_transport_insecure_scheme.js create mode 100644 browser/base/content/test/siteIdentity/browser_session_store_pageproxystate.js create mode 100644 browser/base/content/test/siteIdentity/browser_tab_sharing_state.js create mode 100644 browser/base/content/test/siteIdentity/dummy_iframe_page.html create mode 100644 browser/base/content/test/siteIdentity/dummy_page.html create mode 100644 browser/base/content/test/siteIdentity/file_bug1045809_1.html create mode 100644 browser/base/content/test/siteIdentity/file_bug1045809_2.html create mode 100644 browser/base/content/test/siteIdentity/file_bug822367_1.html create mode 100644 browser/base/content/test/siteIdentity/file_bug822367_1.js create mode 100644 browser/base/content/test/siteIdentity/file_bug822367_2.html create mode 100644 browser/base/content/test/siteIdentity/file_bug822367_3.html create mode 100644 browser/base/content/test/siteIdentity/file_bug822367_4.html create mode 100644 browser/base/content/test/siteIdentity/file_bug822367_4.js create mode 100644 browser/base/content/test/siteIdentity/file_bug822367_4B.html create mode 100644 browser/base/content/test/siteIdentity/file_bug822367_5.html create mode 100644 browser/base/content/test/siteIdentity/file_bug822367_6.html create mode 100644 browser/base/content/test/siteIdentity/file_bug902156.js create mode 100644 browser/base/content/test/siteIdentity/file_bug902156_1.html create mode 100644 browser/base/content/test/siteIdentity/file_bug902156_2.html create mode 100644 browser/base/content/test/siteIdentity/file_bug902156_3.html create mode 100644 browser/base/content/test/siteIdentity/file_bug906190.js create mode 100644 browser/base/content/test/siteIdentity/file_bug906190.sjs create mode 100644 browser/base/content/test/siteIdentity/file_bug906190_1.html create mode 100644 browser/base/content/test/siteIdentity/file_bug906190_2.html create mode 100644 browser/base/content/test/siteIdentity/file_bug906190_3_4.html create mode 100644 browser/base/content/test/siteIdentity/file_bug906190_redirected.html create mode 100644 browser/base/content/test/siteIdentity/file_csp_block_all_mixedcontent.html create mode 100644 browser/base/content/test/siteIdentity/file_csp_block_all_mixedcontent.js create mode 100644 browser/base/content/test/siteIdentity/file_mixedContentFramesOnHttp.html create mode 100644 browser/base/content/test/siteIdentity/file_mixedContentFromOnunload.html create mode 100644 browser/base/content/test/siteIdentity/file_mixedContentFromOnunload_test1.html create mode 100644 browser/base/content/test/siteIdentity/file_mixedContentFromOnunload_test2.html create mode 100644 browser/base/content/test/siteIdentity/file_mixedPassiveContent.html create mode 100644 browser/base/content/test/siteIdentity/file_pdf.pdf create mode 100644 browser/base/content/test/siteIdentity/file_pdf_blob.html create mode 100644 browser/base/content/test/siteIdentity/head.js create mode 100644 browser/base/content/test/siteIdentity/iframe_navigation.html create mode 100644 browser/base/content/test/siteIdentity/insecure_opener.html create mode 100644 browser/base/content/test/siteIdentity/open-self-from-frame.html create mode 100644 browser/base/content/test/siteIdentity/simple_mixed_passive.html create mode 100644 browser/base/content/test/siteIdentity/test-mixedcontent-securityerrors.html create mode 100644 browser/base/content/test/siteIdentity/test_mcb_double_redirect_image.html create mode 100644 browser/base/content/test/siteIdentity/test_mcb_redirect.html create mode 100644 browser/base/content/test/siteIdentity/test_mcb_redirect.js create mode 100644 browser/base/content/test/siteIdentity/test_mcb_redirect.sjs create mode 100644 browser/base/content/test/siteIdentity/test_mcb_redirect_image.html create mode 100644 browser/base/content/test/siteIdentity/test_no_mcb_for_loopback.html create mode 100644 browser/base/content/test/siteIdentity/test_no_mcb_for_onions.html create mode 100644 browser/base/content/test/siteIdentity/test_no_mcb_on_http_site_font.css create mode 100644 browser/base/content/test/siteIdentity/test_no_mcb_on_http_site_font.html create mode 100644 browser/base/content/test/siteIdentity/test_no_mcb_on_http_site_font2.css create mode 100644 browser/base/content/test/siteIdentity/test_no_mcb_on_http_site_font2.html create mode 100644 browser/base/content/test/siteIdentity/test_no_mcb_on_http_site_img.css create mode 100644 browser/base/content/test/siteIdentity/test_no_mcb_on_http_site_img.html create mode 100644 browser/base/content/test/startup/browser.toml create mode 100644 browser/base/content/test/startup/browser_preXULSkeletonUIRegistry.js create mode 100644 browser/base/content/test/static/browser.toml create mode 100644 browser/base/content/test/static/browser_all_files_referenced.js create mode 100644 browser/base/content/test/static/browser_misused_characters_in_strings.js create mode 100644 browser/base/content/test/static/browser_parsable_css.js create mode 100644 browser/base/content/test/static/browser_parsable_script.js create mode 100644 browser/base/content/test/static/browser_sentence_case_strings.js create mode 100644 browser/base/content/test/static/browser_title_case_menus.js create mode 100644 browser/base/content/test/static/bug1262648_string_with_newlines.dtd create mode 100644 browser/base/content/test/static/dummy_page.html create mode 100644 browser/base/content/test/static/head.js create mode 100644 browser/base/content/test/statuspanel/browser.toml create mode 100644 browser/base/content/test/statuspanel/browser_show_statuspanel_idn.js create mode 100644 browser/base/content/test/statuspanel/browser_show_statuspanel_twice.js create mode 100644 browser/base/content/test/statuspanel/head.js create mode 100644 browser/base/content/test/sync/browser.toml create mode 100644 browser/base/content/test/sync/browser_contextmenu_sendpage.js create mode 100644 browser/base/content/test/sync/browser_contextmenu_sendtab.js create mode 100644 browser/base/content/test/sync/browser_fxa_badge.js create mode 100644 browser/base/content/test/sync/browser_fxa_web_channel.html create mode 100644 browser/base/content/test/sync/browser_fxa_web_channel.js create mode 100644 browser/base/content/test/sync/browser_sync.js create mode 100644 browser/base/content/test/sync/browser_synced_tabs_view.js create mode 100644 browser/base/content/test/sync/head.js create mode 100644 browser/base/content/test/tabMediaIndicator/almostSilentAudioTrack.webm create mode 100644 browser/base/content/test/tabMediaIndicator/audio.ogg create mode 100644 browser/base/content/test/tabMediaIndicator/audioEndedDuringPlaying.webm create mode 100644 browser/base/content/test/tabMediaIndicator/browser.toml create mode 100644 browser/base/content/test/tabMediaIndicator/browser_destroy_iframe.js create mode 100644 browser/base/content/test/tabMediaIndicator/browser_mediaPlayback.js create mode 100644 browser/base/content/test/tabMediaIndicator/browser_mediaPlayback_mute.js create mode 100644 browser/base/content/test/tabMediaIndicator/browser_mediaplayback_audibility_change.js create mode 100644 browser/base/content/test/tabMediaIndicator/browser_mute.js create mode 100644 browser/base/content/test/tabMediaIndicator/browser_mute2.js create mode 100644 browser/base/content/test/tabMediaIndicator/browser_mute_webAudio.js create mode 100644 browser/base/content/test/tabMediaIndicator/browser_sound_indicator_silent_video.js create mode 100644 browser/base/content/test/tabMediaIndicator/browser_webAudio_hideSoundPlayingIcon.js create mode 100644 browser/base/content/test/tabMediaIndicator/browser_webAudio_silentData.js create mode 100644 browser/base/content/test/tabMediaIndicator/browser_webaudio_audibility_change.js create mode 100644 browser/base/content/test/tabMediaIndicator/file_almostSilentAudioTrack.html create mode 100644 browser/base/content/test/tabMediaIndicator/file_autoplay_media.html create mode 100644 browser/base/content/test/tabMediaIndicator/file_empty.html create mode 100644 browser/base/content/test/tabMediaIndicator/file_mediaPlayback.html create mode 100644 browser/base/content/test/tabMediaIndicator/file_mediaPlayback2.html create mode 100644 browser/base/content/test/tabMediaIndicator/file_mediaPlaybackFrame.html create mode 100644 browser/base/content/test/tabMediaIndicator/file_mediaPlaybackFrame2.html create mode 100644 browser/base/content/test/tabMediaIndicator/file_silentAudioTrack.html create mode 100644 browser/base/content/test/tabMediaIndicator/file_webAudio.html create mode 100644 browser/base/content/test/tabMediaIndicator/gizmo.mp4 create mode 100644 browser/base/content/test/tabMediaIndicator/head.js create mode 100644 browser/base/content/test/tabMediaIndicator/noaudio.webm create mode 100644 browser/base/content/test/tabMediaIndicator/silentAudioTrack.webm create mode 100644 browser/base/content/test/tabPrompts/auth-route.sjs create mode 100644 browser/base/content/test/tabPrompts/browser.toml create mode 100644 browser/base/content/test/tabPrompts/browser_abort_when_in_modal_state.js create mode 100644 browser/base/content/test/tabPrompts/browser_auth_spoofing_protection.js create mode 100644 browser/base/content/test/tabPrompts/browser_auth_spoofing_url_copy.js create mode 100644 browser/base/content/test/tabPrompts/browser_auth_spoofing_url_drag_and_drop.js create mode 100644 browser/base/content/test/tabPrompts/browser_beforeunload_urlbar.js create mode 100644 browser/base/content/test/tabPrompts/browser_closeTabSpecificPanels.js create mode 100644 browser/base/content/test/tabPrompts/browser_confirmFolderUpload.js create mode 100644 browser/base/content/test/tabPrompts/browser_contentOrigins.js create mode 100644 browser/base/content/test/tabPrompts/browser_multiplePrompts.js create mode 100644 browser/base/content/test/tabPrompts/browser_openPromptInBackgroundTab.js create mode 100644 browser/base/content/test/tabPrompts/browser_promptFocus.js create mode 100644 browser/base/content/test/tabPrompts/browser_prompt_close_event.js create mode 100644 browser/base/content/test/tabPrompts/browser_prompt_closed_window.js create mode 100644 browser/base/content/test/tabPrompts/browser_switchTabPermissionPrompt.js create mode 100644 browser/base/content/test/tabPrompts/browser_windowPrompt.js create mode 100644 browser/base/content/test/tabPrompts/file_beforeunload_stop.html create mode 100644 browser/base/content/test/tabPrompts/openPromptOffTimeout.html create mode 100644 browser/base/content/test/tabPrompts/redirect-crossDomain-tabTitle-update.html create mode 100644 browser/base/content/test/tabPrompts/redirect-crossDomain.html create mode 100644 browser/base/content/test/tabPrompts/redirect-sameDomain.html create mode 100644 browser/base/content/test/tabcrashed/browser.toml create mode 100644 browser/base/content/test/tabcrashed/browser_aboutRestartRequired.toml create mode 100644 browser/base/content/test/tabcrashed/browser_aboutRestartRequired_basic.js create mode 100644 browser/base/content/test/tabcrashed/browser_aboutRestartRequired_buildid_false-positive.js create mode 100644 browser/base/content/test/tabcrashed/browser_aboutRestartRequired_buildid_mismatch.js create mode 100644 browser/base/content/test/tabcrashed/browser_aboutRestartRequired_buildid_no-platform-ini.js create mode 100644 browser/base/content/test/tabcrashed/browser_aboutRestartRequired_noForkServer.toml create mode 100644 browser/base/content/test/tabcrashed/browser_autoSubmitRequest.js create mode 100644 browser/base/content/test/tabcrashed/browser_launchFail.js create mode 100644 browser/base/content/test/tabcrashed/browser_multipleCrashedTabs.js create mode 100644 browser/base/content/test/tabcrashed/browser_noPermanentKey.js create mode 100644 browser/base/content/test/tabcrashed/browser_printpreview_crash.js create mode 100644 browser/base/content/test/tabcrashed/browser_showForm.js create mode 100644 browser/base/content/test/tabcrashed/browser_shown.js create mode 100644 browser/base/content/test/tabcrashed/browser_shownRestartRequired.js create mode 100644 browser/base/content/test/tabcrashed/browser_withoutDump.js create mode 100644 browser/base/content/test/tabcrashed/file_contains_emptyiframe.html create mode 100644 browser/base/content/test/tabcrashed/file_iframe.html create mode 100644 browser/base/content/test/tabcrashed/head.js create mode 100644 browser/base/content/test/tabdialogs/browser.toml create mode 100644 browser/base/content/test/tabdialogs/browser_multiple_dialog_navigation.js create mode 100644 browser/base/content/test/tabdialogs/browser_subdialog_esc.js create mode 100644 browser/base/content/test/tabdialogs/browser_tabdialogbox_content_prompts.js create mode 100644 browser/base/content/test/tabdialogs/browser_tabdialogbox_focus.js create mode 100644 browser/base/content/test/tabdialogs/browser_tabdialogbox_navigation.js create mode 100644 browser/base/content/test/tabdialogs/loadDelayedReply.sjs create mode 100644 browser/base/content/test/tabdialogs/subdialog.xhtml create mode 100644 browser/base/content/test/tabdialogs/test_page.html create mode 100644 browser/base/content/test/tabs/204.sjs create mode 100644 browser/base/content/test/tabs/blank.html create mode 100644 browser/base/content/test/tabs/browser.toml create mode 100644 browser/base/content/test/tabs/browser_addAdjacentNewTab.js create mode 100644 browser/base/content/test/tabs/browser_addTab_index.js create mode 100644 browser/base/content/test/tabs/browser_adoptTab_failure.js create mode 100644 browser/base/content/test/tabs/browser_allow_process_switches_despite_related_browser.js create mode 100644 browser/base/content/test/tabs/browser_audioTabIcon.js create mode 100644 browser/base/content/test/tabs/browser_bfcache_exemption_about_pages.js create mode 100644 browser/base/content/test/tabs/browser_bug580956.js create mode 100644 browser/base/content/test/tabs/browser_bug_1387976_restore_lazy_tab_browser_muted_state.js create mode 100644 browser/base/content/test/tabs/browser_close_during_beforeunload.js create mode 100644 browser/base/content/test/tabs/browser_close_tab_by_dblclick.js create mode 100644 browser/base/content/test/tabs/browser_contextmenu_openlink_after_tabnavigated.js create mode 100644 browser/base/content/test/tabs/browser_dont_process_switch_204.js create mode 100644 browser/base/content/test/tabs/browser_e10s_about_page_triggeringprincipal.js create mode 100644 browser/base/content/test/tabs/browser_e10s_about_process.js create mode 100644 browser/base/content/test/tabs/browser_e10s_chrome_process.js create mode 100644 browser/base/content/test/tabs/browser_e10s_javascript.js create mode 100644 browser/base/content/test/tabs/browser_e10s_mozillaweb_process.js create mode 100644 browser/base/content/test/tabs/browser_e10s_switchbrowser.js create mode 100644 browser/base/content/test/tabs/browser_file_to_http_named_popup.js create mode 100644 browser/base/content/test/tabs/browser_file_to_http_script_closable.js create mode 100644 browser/base/content/test/tabs/browser_hiddentab_contextmenu.js create mode 100644 browser/base/content/test/tabs/browser_lazy_tab_browser_events.js create mode 100644 browser/base/content/test/tabs/browser_link_in_tab_title_and_url_prefilled_blank_page.js create mode 100644 browser/base/content/test/tabs/browser_link_in_tab_title_and_url_prefilled_new_window.js create mode 100644 browser/base/content/test/tabs/browser_link_in_tab_title_and_url_prefilled_normal_page_blank_target.js create mode 100644 browser/base/content/test/tabs/browser_link_in_tab_title_and_url_prefilled_normal_page_by_script.js create mode 100644 browser/base/content/test/tabs/browser_link_in_tab_title_and_url_prefilled_normal_page_no_target.js create mode 100644 browser/base/content/test/tabs/browser_link_in_tab_title_and_url_prefilled_normal_page_other_target.js create mode 100644 browser/base/content/test/tabs/browser_long_data_url_label_truncation.js create mode 100644 browser/base/content/test/tabs/browser_middle_click_new_tab_button_loads_clipboard.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_active_tab_selected_by_default.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_bookmark.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_clear_selection_when_tab_switch.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_close.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_close_other_tabs.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_close_tabs_to_the_left.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_close_tabs_to_the_right.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_close_using_shortcuts.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_copy_through_drag_and_drop.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_drag_to_bookmarks_toolbar.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_duplicate.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_event.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_move.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_move_to_another_window_drag.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_move_to_new_window_contextmenu.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_mute_unmute.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_open_related.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_pin_unpin.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_play.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_reload.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_reopen_in_container.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_reorder.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_using_Ctrl.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_using_Shift.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_using_Shift_and_Ctrl.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_using_keyboard.js create mode 100644 browser/base/content/test/tabs/browser_multiselect_tabs_using_selectedTabs.js create mode 100644 browser/base/content/test/tabs/browser_navigatePinnedTab.js create mode 100644 browser/base/content/test/tabs/browser_navigate_home_focuses_addressbar.js create mode 100644 browser/base/content/test/tabs/browser_navigate_through_urls_origin_attributes.js create mode 100644 browser/base/content/test/tabs/browser_new_file_whitelisted_http_tab.js create mode 100644 browser/base/content/test/tabs/browser_new_tab_bookmarks_toolbar_height.js create mode 100644 browser/base/content/test/tabs/browser_new_tab_in_privilegedabout_process_pref.js create mode 100644 browser/base/content/test/tabs/browser_new_tab_insert_position.js create mode 100644 browser/base/content/test/tabs/browser_new_tab_url.js create mode 100644 browser/base/content/test/tabs/browser_newwindow_tabstrip_overflow.js create mode 100644 browser/base/content/test/tabs/browser_openURI_background.js create mode 100644 browser/base/content/test/tabs/browser_open_newtab_start_observer_notification.js create mode 100644 browser/base/content/test/tabs/browser_opened_file_tab_navigated_to_web.js create mode 100644 browser/base/content/test/tabs/browser_origin_attrs_in_remote_type.js create mode 100644 browser/base/content/test/tabs/browser_origin_attrs_rel.js create mode 100644 browser/base/content/test/tabs/browser_originalURI.js create mode 100644 browser/base/content/test/tabs/browser_overflowScroll.js create mode 100644 browser/base/content/test/tabs/browser_paste_event_at_middle_click_on_link.js create mode 100644 browser/base/content/test/tabs/browser_pinnedTabs.js create mode 100644 browser/base/content/test/tabs/browser_pinnedTabs_clickOpen.js create mode 100644 browser/base/content/test/tabs/browser_pinnedTabs_closeByKeyboard.js create mode 100644 browser/base/content/test/tabs/browser_positional_attributes.js create mode 100644 browser/base/content/test/tabs/browser_preloadedBrowser_zoom.js create mode 100644 browser/base/content/test/tabs/browser_privilegedmozilla_process_pref.js create mode 100644 browser/base/content/test/tabs/browser_progress_keyword_search_handling.js create mode 100644 browser/base/content/test/tabs/browser_relatedTabs_reset.js create mode 100644 browser/base/content/test/tabs/browser_reload_deleted_file.js create mode 100644 browser/base/content/test/tabs/browser_removeTabsToTheEnd.js create mode 100644 browser/base/content/test/tabs/browser_removeTabsToTheStart.js create mode 100644 browser/base/content/test/tabs/browser_removeTabs_order.js create mode 100644 browser/base/content/test/tabs/browser_removeTabs_skipPermitUnload.js create mode 100644 browser/base/content/test/tabs/browser_replacewithwindow_commands.js create mode 100644 browser/base/content/test/tabs/browser_switch_by_scrolling.js create mode 100644 browser/base/content/test/tabs/browser_tabCloseProbes.js create mode 100644 browser/base/content/test/tabs/browser_tabCloseSpacer.js create mode 100644 browser/base/content/test/tabs/browser_tabContextMenu_keyboard.js create mode 100644 browser/base/content/test/tabs/browser_tabReorder.js create mode 100644 browser/base/content/test/tabs/browser_tabReorder_overflow.js create mode 100644 browser/base/content/test/tabs/browser_tabSpinnerProbe.js create mode 100644 browser/base/content/test/tabs/browser_tabSuccessors.js create mode 100644 browser/base/content/test/tabs/browser_tab_a11y_description.js create mode 100644 browser/base/content/test/tabs/browser_tab_label_during_reload.js create mode 100644 browser/base/content/test/tabs/browser_tab_label_picture_in_picture.js create mode 100644 browser/base/content/test/tabs/browser_tab_manager_close.js create mode 100644 browser/base/content/test/tabs/browser_tab_manager_drag.js create mode 100644 browser/base/content/test/tabs/browser_tab_manager_keyboard_access.js create mode 100644 browser/base/content/test/tabs/browser_tab_manager_visibility.js create mode 100644 browser/base/content/test/tabs/browser_tab_move_to_new_window_reload.js create mode 100644 browser/base/content/test/tabs/browser_tab_play.js create mode 100644 browser/base/content/test/tabs/browser_tab_preview.js create mode 100644 browser/base/content/test/tabs/browser_tab_tooltips.js create mode 100644 browser/base/content/test/tabs/browser_tabswitch_contextmenu.js create mode 100644 browser/base/content/test/tabs/browser_tabswitch_select.js create mode 100644 browser/base/content/test/tabs/browser_tabswitch_updatecommands.js create mode 100644 browser/base/content/test/tabs/browser_tabswitch_window_focus.js create mode 100644 browser/base/content/test/tabs/browser_undo_close_tabs.js create mode 100644 browser/base/content/test/tabs/browser_undo_close_tabs_at_start.js create mode 100644 browser/base/content/test/tabs/browser_viewsource_of_data_URI_in_file_process.js create mode 100644 browser/base/content/test/tabs/browser_visibleTabs_bookmarkAllTabs.js create mode 100644 browser/base/content/test/tabs/browser_visibleTabs_contextMenu.js create mode 100644 browser/base/content/test/tabs/browser_window_open_modifiers.js create mode 100644 browser/base/content/test/tabs/common_link_in_tab_title_and_url_prefilled.js create mode 100644 browser/base/content/test/tabs/dummy_page.html create mode 100644 browser/base/content/test/tabs/file_about_child.html create mode 100644 browser/base/content/test/tabs/file_about_parent.html create mode 100644 browser/base/content/test/tabs/file_about_srcdoc.html create mode 100644 browser/base/content/test/tabs/file_anchor_elements.html create mode 100644 browser/base/content/test/tabs/file_mediaPlayback.html create mode 100644 browser/base/content/test/tabs/file_new_tab_page.html create mode 100644 browser/base/content/test/tabs/file_observe_height_changes.html create mode 100644 browser/base/content/test/tabs/file_rel_opener_noopener.html create mode 100644 browser/base/content/test/tabs/file_window_open.html create mode 100644 browser/base/content/test/tabs/head.js create mode 100644 browser/base/content/test/tabs/helper_origin_attrs_testing.js create mode 100644 browser/base/content/test/tabs/link_in_tab_title_and_url_prefilled.html create mode 100644 browser/base/content/test/tabs/open_window_in_new_tab.html create mode 100644 browser/base/content/test/tabs/page_with_iframe.html create mode 100644 browser/base/content/test/tabs/redirect_via_header.html create mode 100644 browser/base/content/test/tabs/redirect_via_header.html^headers^ create mode 100644 browser/base/content/test/tabs/redirect_via_meta_tag.html create mode 100644 browser/base/content/test/tabs/request-timeout.sjs create mode 100644 browser/base/content/test/tabs/tab_that_closes.html create mode 100644 browser/base/content/test/tabs/test_bug1358314.html create mode 100644 browser/base/content/test/tabs/test_process_flags_chrome.html create mode 100644 browser/base/content/test/tabs/wait-a-bit.sjs create mode 100644 browser/base/content/test/touch/browser.toml create mode 100644 browser/base/content/test/touch/browser_menu_touch.js create mode 100644 browser/base/content/test/utilityOverlay/browser.toml create mode 100644 browser/base/content/test/utilityOverlay/browser_openWebLinkIn.js create mode 100644 browser/base/content/test/webextensions/.eslintrc.js create mode 100644 browser/base/content/test/webextensions/browser.toml create mode 100644 browser/base/content/test/webextensions/browser_aboutaddons_blanktab.js create mode 100644 browser/base/content/test/webextensions/browser_extension_sideloading.js create mode 100644 browser/base/content/test/webextensions/browser_extension_update_background.js create mode 100644 browser/base/content/test/webextensions/browser_extension_update_background_noprompt.js create mode 100644 browser/base/content/test/webextensions/browser_legacy_webext.xpi create mode 100644 browser/base/content/test/webextensions/browser_permissions_dismiss.js create mode 100644 browser/base/content/test/webextensions/browser_permissions_installTrigger.js create mode 100644 browser/base/content/test/webextensions/browser_permissions_local_file.js create mode 100644 browser/base/content/test/webextensions/browser_permissions_mozAddonManager.js create mode 100644 browser/base/content/test/webextensions/browser_permissions_optional.js create mode 100644 browser/base/content/test/webextensions/browser_permissions_pointerevent.js create mode 100644 browser/base/content/test/webextensions/browser_permissions_unsigned.js create mode 100644 browser/base/content/test/webextensions/browser_update_checkForUpdates.js create mode 100644 browser/base/content/test/webextensions/browser_update_interactive_noprompt.js create mode 100644 browser/base/content/test/webextensions/browser_webext_nopermissions.xpi create mode 100644 browser/base/content/test/webextensions/browser_webext_permissions.xpi create mode 100644 browser/base/content/test/webextensions/browser_webext_unsigned.xpi create mode 100644 browser/base/content/test/webextensions/browser_webext_update.json create mode 100644 browser/base/content/test/webextensions/browser_webext_update1.xpi create mode 100644 browser/base/content/test/webextensions/browser_webext_update2.xpi create mode 100644 browser/base/content/test/webextensions/browser_webext_update_icon1.xpi create mode 100644 browser/base/content/test/webextensions/browser_webext_update_icon2.xpi create mode 100644 browser/base/content/test/webextensions/browser_webext_update_origins1.xpi create mode 100644 browser/base/content/test/webextensions/browser_webext_update_origins2.xpi create mode 100644 browser/base/content/test/webextensions/browser_webext_update_perms1.xpi create mode 100644 browser/base/content/test/webextensions/browser_webext_update_perms2.xpi create mode 100644 browser/base/content/test/webextensions/file_install_extensions.html create mode 100644 browser/base/content/test/webextensions/head.js create mode 100644 browser/base/content/test/webrtc/browser.toml create mode 100644 browser/base/content/test/webrtc/browser_WebrtcGlobalInformation.js create mode 100644 browser/base/content/test/webrtc/browser_device_controls_menus.js create mode 100644 browser/base/content/test/webrtc/browser_devices_get_user_media.js create mode 100644 browser/base/content/test/webrtc/browser_devices_get_user_media_anim.js create mode 100644 browser/base/content/test/webrtc/browser_devices_get_user_media_by_device_id.js create mode 100644 browser/base/content/test/webrtc/browser_devices_get_user_media_default_permissions.js create mode 100644 browser/base/content/test/webrtc/browser_devices_get_user_media_grace.js create mode 100644 browser/base/content/test/webrtc/browser_devices_get_user_media_in_frame.js create mode 100644 browser/base/content/test/webrtc/browser_devices_get_user_media_in_xorigin_frame.js create mode 100644 browser/base/content/test/webrtc/browser_devices_get_user_media_in_xorigin_frame_chain.js create mode 100644 browser/base/content/test/webrtc/browser_devices_get_user_media_multi_process.js create mode 100644 browser/base/content/test/webrtc/browser_devices_get_user_media_paused.js create mode 100644 browser/base/content/test/webrtc/browser_devices_get_user_media_queue_request.js create mode 100644 browser/base/content/test/webrtc/browser_devices_get_user_media_screen.js create mode 100644 browser/base/content/test/webrtc/browser_devices_get_user_media_screen_tab_close.js create mode 100644 browser/base/content/test/webrtc/browser_devices_get_user_media_tear_off_tab.js create mode 100644 browser/base/content/test/webrtc/browser_devices_get_user_media_unprompted_access.js create mode 100644 browser/base/content/test/webrtc/browser_devices_get_user_media_unprompted_access_in_frame.js create mode 100644 browser/base/content/test/webrtc/browser_devices_get_user_media_unprompted_access_queue_request.js create mode 100644 browser/base/content/test/webrtc/browser_devices_get_user_media_unprompted_access_tear_off_tab.js create mode 100644 browser/base/content/test/webrtc/browser_devices_select_audio_output.js create mode 100644 browser/base/content/test/webrtc/browser_global_mute_toggles.js create mode 100644 browser/base/content/test/webrtc/browser_indicator_popuphiding.js create mode 100644 browser/base/content/test/webrtc/browser_macos_indicator_hiding.js create mode 100644 browser/base/content/test/webrtc/browser_notification_silencing.js create mode 100644 browser/base/content/test/webrtc/browser_stop_sharing_button.js create mode 100644 browser/base/content/test/webrtc/browser_stop_streams_on_indicator_close.js create mode 100644 browser/base/content/test/webrtc/browser_tab_switch_warning.js create mode 100644 browser/base/content/test/webrtc/browser_webrtc_hooks.js create mode 100644 browser/base/content/test/webrtc/get_user_media.html create mode 100644 browser/base/content/test/webrtc/get_user_media2.html create mode 100644 browser/base/content/test/webrtc/get_user_media_in_frame.html create mode 100644 browser/base/content/test/webrtc/get_user_media_in_xorigin_frame.html create mode 100644 browser/base/content/test/webrtc/get_user_media_in_xorigin_frame_ancestor.html create mode 100644 browser/base/content/test/webrtc/gracePeriod/browser.toml create mode 100644 browser/base/content/test/webrtc/head.js create mode 100644 browser/base/content/test/webrtc/peerconnection_connect.html create mode 100644 browser/base/content/test/webrtc/single_peerconnection.html create mode 100644 browser/base/content/test/zoom/browser.toml create mode 100644 browser/base/content/test/zoom/browser_background_link_zoom_reset.js create mode 100644 browser/base/content/test/zoom/browser_background_zoom.js create mode 100644 browser/base/content/test/zoom/browser_default_zoom.js create mode 100644 browser/base/content/test/zoom/browser_default_zoom_fission.js create mode 100644 browser/base/content/test/zoom/browser_default_zoom_multitab.js create mode 100644 browser/base/content/test/zoom/browser_default_zoom_multitab_002.js create mode 100644 browser/base/content/test/zoom/browser_default_zoom_sitespecific.js create mode 100644 browser/base/content/test/zoom/browser_image_zoom_tabswitch.js create mode 100644 browser/base/content/test/zoom/browser_mousewheel_zoom.js create mode 100644 browser/base/content/test/zoom/browser_sitespecific_background_pref.js create mode 100644 browser/base/content/test/zoom/browser_sitespecific_image_zoom.js create mode 100644 browser/base/content/test/zoom/browser_sitespecific_video_zoom.js create mode 100644 browser/base/content/test/zoom/browser_subframe_textzoom.js create mode 100644 browser/base/content/test/zoom/browser_tabswitch_zoom_flicker.js create mode 100644 browser/base/content/test/zoom/browser_tooltip_zoom.js create mode 100644 browser/base/content/test/zoom/browser_zoom_commands.js create mode 100644 browser/base/content/test/zoom/head.js create mode 100644 browser/base/content/test/zoom/zoom_test.html create mode 100644 browser/base/content/titlebar-items.inc.xhtml create mode 100644 browser/base/content/unified-extensions-viewcache.inc.xhtml create mode 100644 browser/base/content/utilityOverlay.js create mode 100644 browser/base/content/webext-panels.js create mode 100644 browser/base/content/webext-panels.xhtml create mode 100644 browser/base/content/webrtcIndicator.js create mode 100644 browser/base/content/webrtcIndicator.xhtml create mode 100644 browser/base/jar.mn create mode 100644 browser/base/moz.build create mode 100644 browser/base/triage.json (limited to 'browser/base') diff --git a/browser/base/content/aboutDialog-appUpdater.js b/browser/base/content/aboutDialog-appUpdater.js new file mode 100644 index 0000000000..21bf83bc42 --- /dev/null +++ b/browser/base/content/aboutDialog-appUpdater.js @@ -0,0 +1,300 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +// Note: this file is included in aboutDialog.xhtml and preferences/advanced.xhtml +// if MOZ_UPDATER is defined. + +/* import-globals-from aboutDialog.js */ + +var { XPCOMUtils } = ChromeUtils.importESModule( + "resource://gre/modules/XPCOMUtils.sys.mjs" +); + +ChromeUtils.defineESModuleGetters(this, { + AppUpdater: "resource://gre/modules/AppUpdater.sys.mjs", + DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs", + UpdateUtils: "resource://gre/modules/UpdateUtils.sys.mjs", +}); + +XPCOMUtils.defineLazyServiceGetter( + this, + "AUS", + "@mozilla.org/updates/update-service;1", + "nsIApplicationUpdateService" +); + +var UPDATING_MIN_DISPLAY_TIME_MS = 1500; + +var gAppUpdater; + +function onUnload(aEvent) { + if (gAppUpdater) { + gAppUpdater.destroy(); + gAppUpdater = null; + } +} + +function appUpdater(options = {}) { + this._appUpdater = new AppUpdater(); + + this._appUpdateListener = (status, ...args) => { + this._onAppUpdateStatus(status, ...args); + }; + this._appUpdater.addListener(this._appUpdateListener); + + this.options = options; + this.updatingMinDisplayTimerId = null; + this.updateDeck = document.getElementById("updateDeck"); + + this.bundle = Services.strings.createBundle( + "chrome://browser/locale/browser.properties" + ); + + try { + let manualURL = new URL( + Services.urlFormatter.formatURLPref("app.update.url.manual") + ); + + for (const manualLink of document.querySelectorAll(".manualLink")) { + // Strip hash and search parameters for display text. + let displayUrl = manualURL.origin + manualURL.pathname; + manualLink.href = manualURL.href; + document.l10n.setArgs(manualLink.closest("[data-l10n-id]"), { + displayUrl, + }); + } + + document.getElementById("failedLink").href = manualURL.href; + } catch (e) { + console.error("Invalid manual update url.", e); + } + + this._appUpdater.check(); +} + +appUpdater.prototype = { + destroy() { + this.stopCurrentCheck(); + if (this.updatingMinDisplayTimerId) { + clearTimeout(this.updatingMinDisplayTimerId); + } + }, + + stopCurrentCheck() { + this._appUpdater.removeListener(this._appUpdateListener); + this._appUpdater.stop(); + }, + + get update() { + return this._appUpdater.update; + }, + + get selectedPanel() { + return this.updateDeck.selectedPanel; + }, + + _onAppUpdateStatus(status, ...args) { + switch (status) { + case AppUpdater.STATUS.UPDATE_DISABLED_BY_POLICY: + this.selectPanel("policyDisabled"); + break; + case AppUpdater.STATUS.READY_FOR_RESTART: + this.selectPanel("apply"); + break; + case AppUpdater.STATUS.OTHER_INSTANCE_HANDLING_UPDATES: + this.selectPanel("otherInstanceHandlingUpdates"); + break; + case AppUpdater.STATUS.DOWNLOADING: { + const downloadStatus = document.getElementById("downloading"); + if (!args.length) { + // Very early in the DOWNLOADING state, `selectedPatch` may not be + // available yet. But this function will be called again when it is + // available. A `maxSize < 0` indicates that the max size is not yet + // available. + let maxSize = -1; + if (this.update.selectedPatch) { + maxSize = this.update.selectedPatch.size; + } + const transfer = DownloadUtils.getTransferTotal(0, maxSize); + document.l10n.setArgs(downloadStatus, { transfer }); + this.selectPanel("downloading"); + } else { + let [progress, max] = args; + const transfer = DownloadUtils.getTransferTotal(progress, max); + document.l10n.setArgs(downloadStatus, { transfer }); + } + break; + } + case AppUpdater.STATUS.STAGING: + this.selectPanel("applying"); + break; + case AppUpdater.STATUS.CHECKING: { + this.checkingForUpdatesDelayPromise = new Promise(resolve => { + this.updatingMinDisplayTimerId = setTimeout( + resolve, + UPDATING_MIN_DISPLAY_TIME_MS + ); + }); + if (Services.policies.isAllowed("appUpdate")) { + this.selectPanel("checkingForUpdates"); + } else { + this.selectPanel("policyDisabled"); + } + break; + } + case AppUpdater.STATUS.CHECKING_FAILED: + this.selectPanel("checkingFailed"); + break; + case AppUpdater.STATUS.NO_UPDATES_FOUND: + this.checkingForUpdatesDelayPromise.then(() => { + if (Services.policies.isAllowed("appUpdate")) { + this.selectPanel("noUpdatesFound"); + } else { + this.selectPanel("policyDisabled"); + } + }); + break; + case AppUpdater.STATUS.UNSUPPORTED_SYSTEM: + if (this.update.detailsURL) { + let unsupportedLink = document.getElementById("unsupportedLink"); + unsupportedLink.href = this.update.detailsURL; + } + this.selectPanel("unsupportedSystem"); + break; + case AppUpdater.STATUS.MANUAL_UPDATE: + this.selectPanel("manualUpdate"); + break; + case AppUpdater.STATUS.DOWNLOAD_AND_INSTALL: + this.selectPanel("downloadAndInstall"); + break; + case AppUpdater.STATUS.DOWNLOAD_FAILED: + this.selectPanel("downloadFailed"); + break; + case AppUpdater.STATUS.INTERNAL_ERROR: + this.selectPanel("internalError"); + break; + case AppUpdater.STATUS.NEVER_CHECKED: + this.selectPanel("checkForUpdates"); + break; + case AppUpdater.STATUS.NO_UPDATER: + default: + this.selectPanel("noUpdater"); + break; + } + }, + + /** + * Sets the panel of the updateDeck and the visibility of icons + * in the #icons element. + * + * @param aChildID + * The id of the deck's child to select, e.g. "apply". + */ + selectPanel(aChildID) { + let panel = document.getElementById(aChildID); + let icons = document.getElementById("icons"); + if (icons) { + icons.className = aChildID; + } + + // Make sure to select the panel before potentially auto-focusing the button. + this.updateDeck.selectedPanel = panel; + + let button = panel.querySelector("button"); + if (button) { + if (aChildID == "downloadAndInstall") { + let updateVersion = gAppUpdater.update.displayVersion; + // Include the build ID if this is an "a#" (nightly or aurora) build + if (/a\d+$/.test(updateVersion)) { + let buildID = gAppUpdater.update.buildID; + let year = buildID.slice(0, 4); + let month = buildID.slice(4, 6); + let day = buildID.slice(6, 8); + updateVersion += ` (${year}-${month}-${day})`; + } + button.label = this.bundle.formatStringFromName( + "update.downloadAndInstallButton.label", + [updateVersion] + ); + button.accessKey = this.bundle.GetStringFromName( + "update.downloadAndInstallButton.accesskey" + ); + } + if (this.options.buttonAutoFocus) { + let promise = Promise.resolve(); + if (document.readyState != "complete") { + promise = new Promise(resolve => + window.addEventListener("load", resolve, { once: true }) + ); + } + promise.then(() => { + if ( + !document.commandDispatcher.focusedElement || // don't steal the focus + // except from the other buttons + document.commandDispatcher.focusedElement.localName == "button" + ) { + button.focus(); + } + }); + } + } + }, + + /** + * Check for updates + */ + checkForUpdates() { + this._appUpdater.check(); + }, + + /** + * Handles oncommand for the "Restart to Update" button + * which is presented after the download has been downloaded. + */ + buttonRestartAfterDownload() { + if (AUS.currentState != Ci.nsIApplicationUpdateService.STATE_PENDING) { + return; + } + + gAppUpdater.selectPanel("restarting"); + + // Notify all windows that an application quit has been requested. + let cancelQuit = Cc["@mozilla.org/supports-PRBool;1"].createInstance( + Ci.nsISupportsPRBool + ); + Services.obs.notifyObservers( + cancelQuit, + "quit-application-requested", + "restart" + ); + + // Something aborted the quit process. + if (cancelQuit.data) { + gAppUpdater.selectPanel("apply"); + return; + } + + // If already in safe mode restart in safe mode (bug 327119) + if (Services.appinfo.inSafeMode) { + Services.startup.restartInSafeMode(Ci.nsIAppStartup.eAttemptQuit); + return; + } + + if ( + !Services.startup.quit( + Ci.nsIAppStartup.eAttemptQuit | Ci.nsIAppStartup.eRestart + ) + ) { + // Either the user or the hidden window aborted the quit process. + gAppUpdater.selectPanel("apply"); + } + }, + + /** + * Starts the download of an update mar. + */ + startDownload() { + this._appUpdater.allowUpdateDownload(); + }, +}; diff --git a/browser/base/content/aboutDialog.css b/browser/base/content/aboutDialog.css new file mode 100644 index 0000000000..4c6dff2573 --- /dev/null +++ b/browser/base/content/aboutDialog.css @@ -0,0 +1,189 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +@namespace html "http://www.w3.org/1999/xhtml"; + +#aboutDialog { + /* Set an explicit line-height to avoid discrepancies in 'auto' spacing + across screens with different device DPI, which may cause font metrics + to round differently. */ + line-height: 1.5; +} + +#aboutDialogContainer { + display: flex; + flex-direction: column; + height: 100%; +} + +#leftBox { + background-image: url("chrome://branding/content/about-logo.png"); + background-repeat: no-repeat; + background-size: 192px auto; + background-position: center 40px; + /* min-width and min-height create room for the logo; logo is 192px tall w/ + 40px above it, this leaves 8px on the bottom at the minimum height */ + min-width: 210px; + min-height: 240px; + margin-top: 20px; + margin-inline-start: 30px; +} + +@media (min-resolution: 2dppx) { + #leftBox { + background-image: url("chrome://branding/content/about-logo@2x.png"); + } +} + +#rightBox { + background-image: url("chrome://branding/content/about-wordmark.svg"); + background-repeat: no-repeat; + background-size: 288px auto; + /* padding-top creates room for the wordmark */ + padding-top: 38px; + margin-top: 20px; +} + +#rightBox:-moz-locale-dir(rtl) { + background-position: 100% 0; +} + +#clientBox { + flex: 1 0 auto; + padding: 10px 0 15px; +} + +#bottomBox { + padding: 15px 10px 0; + min-height: 52px; +} + +#release { + font-weight: bold; + font-size: 125%; + margin-top: 10px; + margin-inline-start: 0; +} + +#version { + font-weight: bold; + margin-inline-start: 0; + user-select: text; + -moz-user-focus: normal; + cursor: text; +} + +#version.update { + font-weight: normal; +} + +#distribution, +#distributionId { + display: none; + margin-block: 0; +} + +.text-blurb { + margin-bottom: 10px; + margin-inline-start: 0; + padding-inline-start: 0; +} + +#updateInfo { + display: grid; + grid-row-start: 1; + grid-row-end: 4; + grid-column-start: 2; + grid-column-end: 3; + grid-template-rows: subgrid; + grid-template-columns: subgrid; +} + +#updateDeck { + align-items: center; +} + +#updateButton { + margin-inline-start: 0; + padding-inline-start: 0; +} + +#updateDeck description { + margin: 0; +} + +#rightBox { + /* We don't want this box to contribute arbitrarily to the intrinsic size of + * the dialog, so set the width to a reasonable size, but let it flex to take + * all available space. */ + width: 430px; + flex: 1 auto; +} + +.update-throbber { + width: 16px; + min-height: 16px; + margin-inline-end: 3px; + vertical-align: middle; + content: image-set(url("chrome://global/skin/icons/loading.png"), url("chrome://global/skin/icons/loading@2x.png") 2x); +} + +.text-link { + color: #fff !important; + text-decoration: underline; +} + +description > .text-link { + margin: 0; + padding: 0; +} + +#submit-feedback { + margin-inline-start: .9em; +} + +.bottom-link { + text-align: center; + margin: 0 40px; +} + +#currentChannel { + margin: 0; + padding: 0; + font-weight: bold; +} + +#updateBox { + line-height: normal; + display: grid; +} + +#icons { + align-self: center; + grid-row-start: 1; + grid-row-end: 2; + grid-column-start: 1; + grid-column-end: 2; +} + +#icons > .icon { + vertical-align: middle; + -moz-context-properties: fill; + margin: 0px 5px; + width: 16px; + height: 16px; +} + +#icons:not(.checkingForUpdates, .downloading, .applying, .restarting) > .update-throbber, +#icons:not(.noUpdatesFound) > .noUpdatesFound, +#icons:not(.apply) > .apply { + display: none; +} + +#icons > .noUpdatesFound { + fill: #30e60b; +} + +#icons > .apply { + fill: white; +} diff --git a/browser/base/content/aboutDialog.js b/browser/base/content/aboutDialog.js new file mode 100644 index 0000000000..fc0252ad1b --- /dev/null +++ b/browser/base/content/aboutDialog.js @@ -0,0 +1,105 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +/* import-globals-from aboutDialog-appUpdater.js */ + +// Services = object with smart getters for common XPCOM services +var { AppConstants } = ChromeUtils.importESModule( + "resource://gre/modules/AppConstants.sys.mjs" +); +if (AppConstants.MOZ_UPDATER) { + Services.scriptloader.loadSubScript( + "chrome://browser/content/aboutDialog-appUpdater.js", + this + ); +} + +function init() { + let defaults = Services.prefs.getDefaultBranch(null); + let distroId = defaults.getCharPref("distribution.id", ""); + if (distroId) { + let distroAbout = defaults.getStringPref("distribution.about", ""); + // If there is about text, we always show it. + if (distroAbout) { + let distroField = document.getElementById("distribution"); + distroField.value = distroAbout; + distroField.style.display = "block"; + } + // If it's not a mozilla distribution, show the rest, + // unless about text exists, then we always show. + if (!distroId.startsWith("mozilla-") || distroAbout) { + let distroVersion = defaults.getCharPref("distribution.version", ""); + if (distroVersion) { + distroId += " - " + distroVersion; + } + + let distroIdField = document.getElementById("distributionId"); + distroIdField.value = distroId; + distroIdField.style.display = "block"; + } + } + + // Include the build ID and display warning if this is an "a#" (nightly or aurora) build + let versionId = "aboutDialog-version"; + let versionAttributes = { + version: AppConstants.MOZ_APP_VERSION_DISPLAY, + bits: Services.appinfo.is64Bit ? 64 : 32, + }; + + let version = Services.appinfo.version; + if (/a\d+$/.test(version)) { + versionId = "aboutDialog-version-nightly"; + let buildID = Services.appinfo.appBuildID; + let year = buildID.slice(0, 4); + let month = buildID.slice(4, 6); + let day = buildID.slice(6, 8); + versionAttributes.isodate = `${year}-${month}-${day}`; + + document.getElementById("experimental").hidden = false; + document.getElementById("communityDesc").hidden = true; + } + + // Use Fluent arguments for append version and the architecture of the build + let versionField = document.getElementById("version"); + + document.l10n.setAttributes(versionField, versionId, versionAttributes); + + // Show a release notes link if we have a URL. + let relNotesLink = document.getElementById("releasenotes"); + let relNotesPrefType = Services.prefs.getPrefType( + "app.releaseNotesURL.aboutDialog" + ); + if (relNotesPrefType != Services.prefs.PREF_INVALID) { + let relNotesURL = Services.urlFormatter.formatURLPref( + "app.releaseNotesURL.aboutDialog" + ); + if (relNotesURL != "about:blank") { + relNotesLink.href = relNotesURL; + relNotesLink.hidden = false; + } + } + + if (AppConstants.MOZ_UPDATER) { + gAppUpdater = new appUpdater({ buttonAutoFocus: true }); + + let channelLabel = document.getElementById("currentChannelText"); + let channelAttrs = document.l10n.getAttributes(channelLabel); + let channel = UpdateUtils.UpdateChannel; + document.l10n.setAttributes(channelLabel, channelAttrs.id, { channel }); + if ( + /^release($|\-)/.test(channel) || + Services.sysinfo.getProperty("isPackagedApp") + ) { + channelLabel.hidden = true; + } + } + + if (AppConstants.IS_ESR) { + document.getElementById("release").hidden = false; + } +} + +init(); diff --git a/browser/base/content/aboutDialog.xhtml b/browser/base/content/aboutDialog.xhtml new file mode 100644 index 0000000000..e0fcce367a --- /dev/null +++ b/browser/base/content/aboutDialog.xhtml @@ -0,0 +1,162 @@ + + +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +#ifdef XP_MACOSX +#include macWindow.inc.xhtml +#else + + + +# All sets except for popupsets (commands, keys, and stringbundles) +# *must* go into the browser-sets.inc file so that they can be shared with other +# top level windows in macWindow.inc.xhtml. +#include browser-sets.inc + +#include main-popupset.inc.xhtml + +#include appmenu-viewcache.inc.xhtml +#include unified-extensions-viewcache.inc.xhtml + + + diff --git a/browser/base/content/contentTheme.js b/browser/base/content/contentTheme.js new file mode 100644 index 0000000000..805fc778c0 --- /dev/null +++ b/browser/base/content/contentTheme.js @@ -0,0 +1,215 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +{ + const prefersDarkQuery = window.matchMedia("(prefers-color-scheme: dark)"); + + function _isTextColorDark(r, g, b) { + return 0.2125 * r + 0.7154 * g + 0.0721 * b <= 110; + } + + const inContentVariableMap = [ + [ + "--newtab-background-color", + { + lwtProperty: "ntp_background", + processColor(rgbaChannels) { + if (!rgbaChannels) { + return null; + } + const { r, g, b } = rgbaChannels; + // Drop alpha channel + return `rgb(${r}, ${g}, ${b})`; + }, + }, + ], + [ + "--newtab-background-color-secondary", + { + lwtProperty: "ntp_card_background", + }, + ], + [ + "--newtab-text-primary-color", + { + lwtProperty: "ntp_text", + processColor(rgbaChannels, element) { + // We only have access to the browser when we're in a chrome + // docshell, so for now only set the color scheme in that case, and + // use the `lwt-newtab-brighttext` attribute as a fallback mechanism. + let browserStyle = + element.ownerGlobal?.docShell?.chromeEventHandler.style; + + if (!rgbaChannels) { + element.removeAttribute("lwt-newtab"); + element.toggleAttribute( + "lwt-newtab-brighttext", + prefersDarkQuery.matches + ); + if (browserStyle) { + browserStyle.colorScheme = ""; + } + return null; + } + + element.setAttribute("lwt-newtab", "true"); + const { r, g, b, a } = rgbaChannels; + let darkMode = !_isTextColorDark(r, g, b); + element.toggleAttribute("lwt-newtab-brighttext", darkMode); + if (browserStyle) { + browserStyle.colorScheme = darkMode ? "dark" : "light"; + } + + return `rgba(${r}, ${g}, ${b}, ${a})`; + }, + }, + ], + [ + "--in-content-zap-gradient", + { + lwtProperty: "zap_gradient", + processColor(value) { + return value; + }, + }, + ], + [ + "--lwt-sidebar-background-color", + { + lwtProperty: "sidebar", + processColor(rgbaChannels) { + if (!rgbaChannels) { + return null; + } + const { r, g, b } = rgbaChannels; + // Drop alpha channel + return `rgb(${r}, ${g}, ${b})`; + }, + }, + ], + [ + "--lwt-sidebar-text-color", + { + lwtProperty: "sidebar_text", + processColor(rgbaChannels, element) { + if (!rgbaChannels) { + element.removeAttribute("lwt-sidebar"); + return null; + } + + // TODO(emilio): Can we share this code somehow with LightWeightThemeConsumer? + const { r, g, b, a } = rgbaChannels; + element.setAttribute( + "lwt-sidebar", + _isTextColorDark(r, g, b) ? "light" : "dark" + ); + return `rgba(${r}, ${g}, ${b}, ${a})`; + }, + }, + ], + [ + "--lwt-sidebar-highlight-background-color", + { + lwtProperty: "sidebar_highlight", + processColor(rgbaChannels, element) { + if (!rgbaChannels) { + element.removeAttribute("lwt-sidebar-highlight"); + return null; + } + element.setAttribute("lwt-sidebar-highlight", "true"); + + const { r, g, b, a } = rgbaChannels; + return `rgba(${r}, ${g}, ${b}, ${a})`; + }, + }, + ], + [ + "--lwt-sidebar-highlight-text-color", + { + lwtProperty: "sidebar_highlight_text", + }, + ], + ]; + + /** + * ContentThemeController handles theme updates sent by the frame script. + * To be able to use ContentThemeController, you must add your page to the whitelist + * in LightweightThemeChildListener.jsm + */ + const ContentThemeController = { + /** + * Listen for theming updates from the LightweightThemeChild actor, and + * begin listening to changes in preferred color scheme. + */ + init() { + addEventListener("LightweightTheme:Set", this); + + // We don't sync default theme attributes in `init()`, as we may not have + // a root element to attach the attribute to yet. They will be set when + // the first LightweightTheme:Set event is delivered during pageshow. + prefersDarkQuery.addEventListener("change", this); + }, + + /** + * Handle theme updates from the LightweightThemeChild actor or due to + * changes to the prefers-color-scheme media query. + * @param {Object} event object containing the theme or query update. + */ + handleEvent(event) { + const root = document.documentElement; + + if (event.type == "LightweightTheme:Set") { + let { data } = event.detail; + if (!data) { + data = {}; + } + this._setProperties(root, data); + } else if (event.type == "change") { + // If a lightweight theme doesn't apply, update lwt-newtab-brighttext to + // reflect prefers-color-scheme. + if (!root.hasAttribute("lwt-newtab")) { + root.toggleAttribute("lwt-newtab-brighttext", event.matches); + } + } + }, + + /** + * Set a CSS variable to a given value + * @param {Element} elem The element where the CSS variable should be added. + * @param {string} variableName The CSS variable to set. + * @param {string} value The new value of the CSS variable. + */ + _setProperty(elem, variableName, value) { + if (value) { + elem.style.setProperty(variableName, value); + } else { + elem.style.removeProperty(variableName); + } + }, + + /** + * Apply theme data to an element + * @param {Element} root The element where the properties should be applied. + * @param {Object} themeData The theme data. + */ + _setProperties(elem, themeData) { + for (let [cssVarName, definition] of inContentVariableMap) { + const { lwtProperty, processColor } = definition; + let value = themeData[lwtProperty]; + + if (processColor) { + value = processColor(value, elem); + } else if (value) { + const { r, g, b, a } = value; + value = `rgba(${r}, ${g}, ${b}, ${a})`; + } + + this._setProperty(elem, cssVarName, value); + } + }, + }; + ContentThemeController.init(); +} diff --git a/browser/base/content/default-bookmarks.html b/browser/base/content/default-bookmarks.html new file mode 100644 index 0000000000..c42e81ac23 --- /dev/null +++ b/browser/base/content/default-bookmarks.html @@ -0,0 +1,69 @@ +#filter substitution + +#define mozilla_icon data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E %3Cpath d='M0 0h16v16H0z'/%3E %3Cpath d='M13.994 10.356H15V12h-3.171V7.741c0-1.308-.435-1.81-1.29-1.81-1.04 0-1.46.737-1.46 1.8v2.63h1.006V12H6.918V7.741c0-1.308-.435-1.81-1.291-1.81-1.039 0-1.459.737-1.459 1.8v2.63h1.441V12H1v-1.644h1.006V6.079H1V4.435h3.168v1.139a2.507 2.507 0 0 1 2.3-1.29A2.452 2.452 0 0 1 8.931 5.91 2.535 2.535 0 0 1 11.4 4.284 2.448 2.448 0 0 1 14 6.9v3.458z' fill='%23fff'/%3E %3C/svg%3E + +#define firefox_icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAHY0lEQVR4Aa3VA5RrSdfG8f+uOidJp/umczm2ffFhbNvG9722bdv22LZt+3I81+04B1XvfpPmWHut3yk06smus1Z4L8uXDv6MHzpowA8eWFS8FaY9eU+cCvxaFfF8W/FWGDy8a6n7DM7/H96DR3ldu0MVb8a0J+9CI1qXJP11a+79GOdP1f11FW/EtCfvQpx8mziFxMHEEEV1KYkrKl6Pea1Nbnrs/7hz7q2KUQsqRcUE/eV1acb/pyFQ7b9N3fguzNTxVsXrMa/avFgPb6SnukY8W6EgXvszrszjivH08F0VLZFK0rbUgRt9H2aS+lORznUxnTMV45kJG6fNPZSGnEodTJwUFGbphqdSll/H/SxWjEc92kYxSoO0uzEcwo90g/9rlKpHpCmX491MxQgzuvjtE0UieyqxhYZA3UGp8CjUtSMR2YrkFdf+/szi9X88+zM3/uncSx/81/f+7/HzPsu8q09i8MUNcCUHUTImceAAL+RC+UW1nMzHuUvxSVGBCloTgMT+GuOLipaGyg/OpLuE/jVI58wHb/zsdxD5tBVbDMQwOPe/8UDqHYuuPJjCZnP5nw/+mfyUPhADRtkAaIfosum23klBxH8b+KzCfuczG8IPXi4C5yHQwvDoPYhCBSkz1n9y1+WLd8xFzVUxxmIRjBIBVHXFZF58aEtW3exxsp0V8Aac8gpBnGQBRNymkP4VXKPdgdj8H2JB/DgMVwreATFhdoCdj/wY8x7+GM8/djyJ81hlnCPTUWfHb/0QlyRUelalEPcCHswIQARJPd64ohh/KHBagPcQB7sggHgIVHcM0wUyWWUAoNaEuobI9bP1dj9lw1nnMvehj/LS0wdinYO4wM1f/h6z3v9n1t3pTnAWBj04ZQA7LFROwMsu7QCpgcjuCh4Asg5Wa0ImgNDqqHTOtDyIgPPKkZ/cZOstzmT+Nw4jcA5JBO9SHjzzWKZt8CRd03ohD/RZALCigIwHawBmKgKSVoAiAi2VDCzsgo0bYB04lSojEAaQDyETsmTZf3PPdZ+irvMgTTF4SAVX7+SRC/dj5/f/C6D9d5UQLBAIFBJILIhtB1g2a8uZq+1+LwiAV8CSTujPwqoRbJjCJMdAeRVue+j/WLh4T2I3jcCEhN4ShmDFYR2IAXC8OHdDaMYAYBxU82AFAgPShHoejAEgUEViy2h5UbS9LLBajf5oMr866wc0wlWQvEEyNQKbIcSSwZBNIfAO41NQ9ZXd0IgBAQdUDAQWpjQhcfi6gCgguDtTm3vIUBdhdwUA/Pggqmy49/n/pr/q8ZMq4DziEwI0QOtpiT1kXUqQRqC8ohaDy0BqoGzxOUE6q9DwMBiOvtzm5OLi3migAFEwpjnOCzmKhZXUkyr1uEwtLqky1aStNk4jqhFFDVZb6ykYMjBodQxw5RAKZUgSqAq+YmmWzFxF0P8L61Z8pHhf5/S+bfHQJm1OLcuzw4YPcWH3/qysTcebFHyESTOkhLjUokt8M8VFCVYDbLXhvdCfARfiG3lkykDr2qhbXJTRUZBAngMwootGI3tbrbcIsR3ugp3Yhbun89l9/ko+qCDVGpQruHKJqDakBmnq2KyXaDZKrDX1KWau+ij0ZqAvgwR1JFuFmihwPTkdDQN9co3C6IMnwujs0sppELcOV+NHVc2wzv2eb+74J6ZP6kGazeEgZZJqiaRWJo6qbDb5MU7c4ixYmYUhC7YJaQxVgYrgSxa3sgNftdww31+usFuvuykfWDzU/4HytL0llTVz+SbiAScTryKxFFc6dlnnQVZP+wEo2grT7ACb5V7g2BnXsVfxHsLEgfGQTYb/1kJqWpKV3VDLM1iXi/a8PDrtqmecl451DwLg8oG1DtnMmcsKq/bQ1V3BmBTsfzgIfHucwINxICivADt8eADkBLJGtcc0ydHsmU7QEXBFfzwTeFwRnLFtDoBD7nv5+vv61v2XXzHlfR7oKtQxLkFcCqkDK8qMHdIex4gSMxaoKZBtS8lQ18NtJsPSmv/Nyfc3nma4RjsA8Jnq1HU+WC9cY01z865pJQrdDcQkrW6IpGOfun3oxLnw6m/SEBIyVFbOIMhmiXJy35oL+vYDBhkuGxY3YaTuy9TLA+Jv2inu2j2ph9NrTUMmCyIGjwEnyiCtUaUWnGlLR1hIlM6rKwpUX5qBiTuI02Du94aqx8zJhEsVI4IPduUZV+7vDC0CDv9GdeolUjObL18ckutqMKkQkc2kiFHOITLCwyiUp1bNUhuYRFrrxPoMzdDM/XbUf/gZvvYsozX+Cl5d5vh690afrk3+0hR4XyoxqYmQICaTSwjClI6cA3EIvhWi0QiIm6rRgaQh1ikfsMK43/xv8YWfASuUe6sBAIzqPmNwjb1nJdnP5PDbOpPgJMXjWhDAC4JgvEWUaQkoib/o/NzQb37S1fP0+Dt/6wHGKqe6v1yZvuG+zc69p3m7d4dnW8TjAaEdwmFKEcztkfSG67KVG346aeV8YEglincRYLQClVcdKsery6lI1VVNJbyF+jdp8gPG4E08mAAAAABJRU5ErkJggg== + +#define bugzilla_icon data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnYCL7J0pY9wwETY9kYEM9AAAAAEBAYAhVVVUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1bjTOS1Vb/wAA2/8JEqT/Q0g8kQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJnMqoiJtJ/0haST/NEkp/yQnW/8AAPD8AAHY/RsgP/JZUI+GKitih4ObUEAAAAAAAAAAAAAAAAAAAAAAKnouwip5Lv9ooW//a6Jz/y9GIv8JBXb/AADO/gEBvf8AAK7/FRJp/z9BfP8iLGj1AAAAAAAAAAAAAAAAL4YzwiB0I/+UwJ3/bK+C/02eZ/9CTjz/DBa1/wABxf8BAOj/AACp/w8Oc/sJCv//EhCN9AAAAAAAAAAANJA6iC2MMv93tYL/TZ5U/3mzjP9NoWr/NEss/wYIU/8CBOn/ARCX/wwNqP0TD6X/Cgyex5qacDAAAAAAAAAAADKUN/ZirWj/d76R/0SgXf9Ln1P/eLSM/1mda/8rOkb/CQiD/wMQvf8UEnT/MTAt4P//MwUhZyN8AAAAAAAAAAAznDf5UqlZ/228jP9NqnD/Qp9c/0yiVP+Dv5b/VaVw/0VxXf9PZXD/S3pQ/y54Nf8jcCf/I2wn/wAAAAA0ozjIM6E4/zOeOP+Uz6z/XLR+/06scv9BoV3/TqZX/4XBmP9XqHP/hr6Z/yp+Lf8leSr1JXUqbQAAAAA3rTz7Nqo7/zWmOqM3oz7rUK1W/43Mpf9etYD/T61z/0KjXf9Rqln/msup/46/lf8pgy7/JFg6sAAAAAAAAAAAOK8+8jqvOiMAAAAAAAAAADSlOv85pT//kM6o/2K5hP9Ysnv/YLJ2/ziXPv8piS3/V6Ri/yZQQ9wAAAAAAAAAAAAAAAAAAAAAAAAAADetP0E2qzz/OKg98UWsS/+e1K3/pNe4/4XDjv8ojy3/T7df/5fIqv8sjTH/K4kw/yqFLv8AAAAAAAAAAAAAAAA4sT3xN7A8+QAAAAA4qz3yNag6/zSlOf80oTn/csJ+/6/jwv9fjHj/MmRMdQAAAAAAAAAAAAAAAAAAAAAAAAAAOrdA/zm0QHQAAAAAAAAAADasO/k2qTvuRX5lpjqGT/gznDr/O3FXigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADq9QiMAAAAAAAAAAAAAAAA4sj7/Nq09s0uOaSI1qTplM6U68wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOrc//zu0P0EAAAAAOK4+UjWsPPgAAAAAAAAAAAAAAAAAAAAA/48AAP8HAAD4AQAA8AAAAOAAAADAAQAAwAMAAMAAAACAAwAAAAMAAHADAADwAAAA5AcAAO4HAAD+bwAA/u8AAA== + +#define mdn_icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAABgElEQVR4AWPouPiRpmjUAjgatSBj+aG0OVuyVhymsgWl2y475zXySikwwIC4lpFDVk3avG0BrXP9mmeV7bhCvgXuxW3M7JwMeAGfpByZFpjHFzAQB2KmrSfZAtuMKgaiAZ+MUuLc7SRY4FbYwkA60HAJiJm8uubQAwIWeJV1MlAAOAREHDJrcFqQMG+ngIK6oKyykLwqAyMjeXZwiUjgtKD+yGMIwyGzmoGBTAs4hcXrgObgi4OiVkpCiUtYov7YU5wW1B194t0ww69ldvjktYouwWRYIGdkQ1Q+iJ28hp2Xn7B5zKzIPAlNw6S52wlbkL3mJJecOq+CBqeIJC6TjUJTMlcdz9lwLmriSuPgJBVbj/D+5SSXRequQVhNN4nIoEJhV77jKgs7B6bprJw85XtuU8GCpNlbSS3gSA4ii4QiTAvElDWpWeH41kxg5eZDSypUrtFKd1zTcA1EpHRDS5rUyQEts+VN7JjYOGR0TWhY6RdsOhc/Y9NoswUJjVoAAE+h555Rgcg2AAAAAElFTkSuQmCC + +#define addon_icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAABOFBMVEUAAAAAzdwAydcAyNgA//8AzOYAydcAyNgAyNgA2NgAytoAzNkAytgAydgA29sA0egAyNgAyNgA//8AyNgAydgA//8Ay9cAydcAytkAz90Ay9gA1eoAydgAytsAyNgAytgAydkAydgAydgAyNgAydgAyNcAy9oAydgA//8AytsAy9kAytkAyNgAydgAydkAy9kAzP8AydgAydgAydgAz98AzN0AyNcAyNsAydcAydgAydgAydcAytgAytcAydcAydcAytcAydcAyNcAydcAy9gAztgAydcAydgAzOAAydcAyNgAyNgAytwAyNcAyNgAy9wAyNcAyNcAyNgAydgAyNcAydcAydgA0uEAydkAyNgAyeQA4+MAyNgAydkAzN0AyNsA1f8AyNgAydgAydcA1eMAydgAydcAyNdj6PGJAAAAZ3RSTlMAJFpBAQqm8qwNPiiPygcLv8QEw5cDQMA1JU4MwiuDbl/+6+m4+0XLAj9KePz9cjYFvervEA/IDsfFr+xcgeaOYIDo+ica1OMZ9bXlHe73LM3M35itxs8Rf5ATCbFeHjgGttC5ErzO3WvwaAAAAWxJREFUOMt9kudCwkAQhFcITQWCoaggiBqxoaixYUVsYMMGCmLXff838LIXCJAL84fvmCHsTg4AYMDhlIDkcnu8Po4w6BjiIA0joj+gY1BmGKLEiMIwHNFR9xGjuh8jpMQoYZjRGBGOA8QTHDEUB4hynABwcEqCT8GW2DNSnCYBnJzSoSk0NT2jcphlM/rRXpk5NkRgfmFxSWBml6MrOWNlWBUEEmDKtyYIrGttP66gSP4Nww8mUKzNLd5/zHaJbb1Tl9xnzR2WcGM/5QE8BLvJvf0Dc4HDo8IxUVECL5Vywv7s9Mzwz/WLcFHSsWy8w0sa9+qa/JtbOlUY3mnGLbjnCz9Q4JEfnhCrNb5nXi3w754p8MIPKVWpt6psGJ+vFJBbBUO3GlozzYdsSmCV1NlntiTnegNvPQ29Wx7h7fKrEUvg47PD/6oLpgh8m7//AZEav4b/J/bbb75SAzvR3crY+6y8fLGsQV9ZSvwHF4LQIhDjT+8AAAAASUVORK5CYII= + + + + + + + + + default-bookmarks-title + + +

default-bookmarks-heading

+ +

+

default-bookmarks-toolbarfolder

+
default-bookmarks-toolbarfolder-description
+#ifndef NIGHTLY_BUILD +#ifdef EARLY_BETA_OR_EARLIER +

+

default-bookmarks-getting-started
+

+#else +

+

default-bookmarks-getting-started
+

+#endif +

default-bookmarks-firefox-heading

+

+

default-bookmarks-firefox-get-help
+
default-bookmarks-firefox-customize
+#ifdef EARLY_BETA_OR_EARLIER +
default-bookmarks-firefox-community
+#else +
default-bookmarks-firefox-community
+#endif +
default-bookmarks-firefox-about
+

+#else +

+

default-bookmarks-firefox-community
+

+

default-bookmarks-nightly-heading

+

+

default-bookmarks-nightly-blog
+
default-bookmarks-bugzilla
+
default-bookmarks-mdn
+
default-bookmarks-nightly-tester-tools
+
default-bookmarks-crashes
+
default-bookmarks-planet
+

+#endif +

+ + diff --git a/browser/base/content/docs/tabbrowser/async-tab-switcher.rst b/browser/base/content/docs/tabbrowser/async-tab-switcher.rst new file mode 100644 index 0000000000..ab758cbd3d --- /dev/null +++ b/browser/base/content/docs/tabbrowser/async-tab-switcher.rst @@ -0,0 +1,239 @@ +.. _tabbrowser_async_tab_switcher: + +================== +Async tab switcher +================== + +At a very high level, the async tab switcher is responsible for telling tabs with out-of-process (or “remote”) ````’s to render and upload their contents to the compositor, and then update the UI to show that content as a tab switch. Similarly, the async tab switcher is responsible for telling tabs that have been switched away from to stop rendering their content, and for the compositor to release those contents. + +Briefly introducing Layers and the Compositor +============================================= + +For out-of-process tabs, the presentation portion of Gecko computes the final contents of a tab inside the tabs content process, and then uploads that information to the compositor. This uploaded information is usually referred to as *layers*. + +The compositor is what eventually presents these layers to the user as pixels. The compositor can retain several sets of layers without necessarily showing them to the user, but this consumes memory. Layers that are no longer needed are released. + +From here forward, "contents of a tab" will be referred to as that tab's *layers*. + +.. _async-tab-switcher.useful-properties: + +renderLayers, hasLayers, docShellIsActive +========================================= + +````'s have a number of useful properties exposed on them that the async tab switcher uses: + +``renderLayers`` + For remote ````'s, setting this to ``true`` from ``false`` means to ask the content process to render the layers for that ```` and upload them to the compositor. Setting this to ``false`` from ``true`` means to ask the content process to stop rendering the layers and for the compositor to release the layers. Setting this property to ``true`` when it is already ``true`` or ``false`` when it is already ``false`` is a no-op. When this property returns ``true``, this means that layers have been requested for this tab, but there is no guarantee that the layers have been received by the compositor yet. Similarly, when this property returns ``false``, this means that this browser has been asked to stop rendering layers, but there is no guarantee that the layers have been released by the compositor yet. + + For non-remote ````'s, ``renderLayers`` is an alias for ``docShellIsActive``. + +``hasLayers`` + For remote ````'s, this read-only property returns ``true`` if the compositor has layers for this tab, and ``false`` otherwise. + + For non-remote ````'s, ``hasLayers`` returns the value for ``docShellIsActive``. + +``docShellIsActive`` + For remote ````'s, setting ``docShellIsActive`` to ``true`` also sets ``renderLayers`` to true, and then sends a message to the content process to set its top-level docShell active state to ``true``. Similarly, setting ``docShellIsActive`` to ``false`` also sets ``renderLayers`` to false, and then sends a message to the content process to set its top-level docShell active state to ``false``. + + For non-remote ````'s, ``docShellIsActive`` forwards to the ``isActive`` property on the ````'s top-level docShell. + + Setting a docShell to be active causes the tab's visibilitychange event to fire to indicate that the tab has become visible. Media that was waiting to be played until the tab is selected will also begin to play. + + An active docShell is also required in order to generate a print preview of the loaded document. + + +Requirements +============ + +There are a number of requirements that the tab switcher must satisfy. In no particular order, they are: + +1. The switcher must be prepared to switch between any mixture of remote and non-remote tabs. Non-remote tabs include tabs pointed at about:addons, about:config, and others + +2. We want to avoid switching the toolbar state (for example, the URL bar input, security indicators, toolbar button states) until we are ready to show the layers of the tab that we're switching to + +3. Only one tab should appear to be selected in the tab strip at any given time + +4. We want to avoid switching keyboard focus to a selected tab until the layers for the tab are ready - but only if the user doesn’t change focus between the start and end of the async tab switch + +5. If the layers for a tab are not available after a certain amount of time, we should “complete” the tab switch by displaying the “tab switch spinner” - an animated spinner against a white background. This way, we at least show the user some activity, despite the fact that we don’t have the layers of the tab to show them + +6. The printing UI uses tabs to show print preview, which requires that the print-previewed tab is in the background and yet also have its docShell be "active" - a state that's usually reserved for the selected tab. See :ref:`async-tab-switcher.useful-properties` + +7. ````'s and ````'s might be created or destroyed at any time during an async tab switch + +8. It should be possible to render layers for a tab, despite it not having been set as active (this is used for :ref:`async-tab-switcher.warming`) + +Lifecycle +========= + +Per window, an async tab switcher instance is only supposed to exist if one or more tabs still need to have their layers loaded or unloaded. This means that an async tab switcher instance might exist even though a tab switch appears to the user to have completed. This also means that an async tab switcher might continue to exist and handle a new tab switch if the user initiates that tab switch before some background tabs have had their layers unloaded. + +There’s only one async tab switcher at a time per window, and it’s owned by the ````. + +A ```` starts without an async tab switcher, and only once a tab switch (or warming) is initiated by the user is the switcher instantiated. + +Once the switcher determines that the tab that the user has requested is being shown, and all background tabs have been properly unloaded or destroyed, the async tab switcher cleans up and destroys itself. + +.. _async-tab-switcher.states: + +Tab states +========== + +While the async tab switcher exists, it maps each ```` in the window to one of the following internal states: + +``STATE_UNLOADED`` + Layers for this ```` are not being uploaded to the compositor, and we haven't requested that the tab start doing so. This tab is fully in the background. + + When a tab is in ``STATE_UNLOADED``, this means that the associated ```` either does not exist, or will have its ``renderLayers`` and ``hasLayers`` properties both return ``false``. + + If a tab is in this state, it must have either initialized there, or transitioned from ``STATE_UNLOADING``. + + When logging states, this state is indicated by the ``unloaded`` string. + +``STATE_LOADING`` + Layers for this ```` have not yet been reported as "received" by the compositor, but we've asked the tab to start rendering. This usually means that we want to switch to the tab, or at least to warm it up. + + When a tab is in ``STATE_LOADING``, this means that the associated ```` will have its ``renderLayers`` property return ``true`` and its ``hasLayers`` property return ``false``. + + If a tab is in this state, it must have either initialized there, or transitioned from ``STATE_UNLOADED``. + + When logging states, this state is indicated by the ``loading`` string. + +``STATE_LOADED`` + Layers for this ```` are available on the compositor and can be displayed. This means that the tab is either being shown to the user, or could be very quickly shown to the user. + + If a tab is in this state, it must have either initialized there, or transitioned from ``STATE_LOADING``. + + When a tab is in ``STATE_LOADED``, this means that the associated ```` will have its ``renderLayers`` and ``hasLayers`` properties both return ``true``. + + When logging states, this state is indicated by the ``loaded`` string. + +``STATE_UNLOADING`` + Layers for this ```` were at one time available on the compositor, but we've asked the tab to unload them to preserve memory. This usually means that we've switched away from this tab, or have stopped warming it up. + + When a tab is in ``STATE_UNLOADING``, this means that the associated ```` will have its ``renderLayers`` property return ``false`` and its ``hasLayers`` property return ``true``. + + If a tab is in this state, it must have either initialized there, or transitioned from ``STATE_LOADED``. + + When logging states, this state is indicated by the ``unloading`` string. + +Having a tab render its layers is done by settings its state to ``STATE_LOADING``. Once the layers have been received, the switcher will automatically set the state to ``STATE_LOADED``. Similarly, telling a tab to stop rendering is done by settings its state to ``STATE_UNLOADING``. The switcher will automatically set the state to ``STATE_UNLOADED`` once the layers have fully unloaded. + +Stepping through a simple tab switch +==================================== + +In our simple scenario, suppose the user has a single browser window with two tabs: a tab at index **0** and a tab at index **1**. Both tabs are completed loaded, and **0** is currently selected and displaying its content. + +The user chooses to switch to tab **1**. An async tab switcher is instantiated, and it immediately attaches a number of event handlers to the window. Among them are handlers for the ``MozLayerTreeReady`` and ``MozLayerTreeCleared`` events. + +The switcher then creates an internal mapping from ``>``'s to states. That mapping is: + +.. code-block:: none + + // This is using the logging syntax laid out in the `Tab states` section. + 0:(loaded) 1:(unloaded) + +Be sure to refer to :ref:`async-tab-switcher.states` for an explanation of the terminology and :ref:`async-tab-switcher.logging` syntax for states. + +This last example translates to: + + The tab at index **0**, is in ``STATE_LOADED`` and the tab at index **1** is in ``STATE_UNLOADED``. + +Now that initialization done, the switcher is asked to request **1**. It does this by putting **1** into ``STATE_LOADING`` and requesting that **1**'s layers be rendered. The new state mapping is: + +.. code-block:: none + + 0:(loaded) 1:(loading) + +At this point, the user is still looking at tab **0**, and none of the UI is showing any visible indication of tab change. + +Now the switcher is waiting, so it goes back to the event loop. During this time, if any code were to ask the tabbrowser which tab is selected, it'd return **1**, since it's *logically* selected despite not being *visually* selected. + +Eventually, the layers for **1** are uploaded to the compositor, and the ```` for **1** fires its ``MozLayerTreeReady`` event. This is when the switcher changes its internal state again: + +.. code-block:: none + + 0:(loaded) 1:(loaded) + +So now layers for both **0** and **1** are uploading and available on the compositor. At this point, the switcher updates the visual state of the browser, and flips the ```` to display **1**, and the user experiences the tab switch. + +The switcher isn't done, however. After a predefined amount of time (dictated by ``UNLOAD_DELAY``), tabs that aren't currently selected but in ``STATE_LOADED`` are put into ``STATE_UNLOADING``. Now the internal state looks like this: + +.. code-block:: none + + 0:(unloading) 1:(loaded) + +Having requested that **0** go into ``STATE_UNLOADING``, the switcher returns back to the event loop. The user, meanwhile, continues to use ``1``. + +Eventually, the layers for **0** are cleared from the compositor, and the ```` for **0** fires its ``MozLayerTreeCleared`` event. This is when the switcher changes its internal state once more: + +.. code-block:: none + + 0:(unloaded) 1:(loaded) + +The tab at **0** is now in ``STATE_UNLOADED``. Since the last requested tab **1** is in ``STATE_LOADED`` and all other background tabs are in ``STATE_UNLOADED``, the switcher decides its work is done. It deregisters its event handlers, and then destroys itself. + +.. _async-tab-switcher.unloading-background: + +Unloading background tabs +========================= + +While an async tab switcher exists, it will periodically scan the window for tabs that are in ``STATE_LOADED`` but are also in the background. These tabs will then be put into ``STATE_UNLOADING``. Only once all background tabs have settled into the ``STATE_UNLOADED`` state are the background tabs considered completely cleared. + +The background scanning interval is ``UNLOAD_DELAY``, in milliseconds. + +Perceived performance optimizations +=================================== + +We use a few tricks and optimizations to help improve the perceived performance of tab switches. + +1. Sometimes users switch between the same tabs quickly. We want to optimize for this case by not releasing the layers for tabs until some time has gone by. That way, quick switching just resolves in a re-composite in the compositor, as opposed to a full re-paint and re-upload of the layers from a remote tab’s content process. + +2. When a tab hasn’t ever been seen before, and is still in the process of loading (right now, dubiously checked by looking for the “busy” attribute on the ````) we show a blank content area until its layers are finally ready. The idea here is to shift perceived lag from the async tab switcher to the network by showing the blank space instead of the tab switch spinner. + +3. “Warming” is a nascent optimization that will allow us to pre-emptively render and cache the layers for tabs that we think the user is likely to switch to soon. After a timeout (``browser.tabs.remote.warmup.unloadDelayMs``), “warmed” tabs that aren’t switched to have their layers unloaded and cleared from the cache. + +4. On platforms that support ``occlusionstatechange`` events (as of this writing, only macOS) and ``sizemodechange`` events (Windows, macOS and Linux), we stop rendering the layers for the currently selected tab when the window is minimized or fully occluded by another window. + +5. Based on the browser.tabs.remote.tabCacheSize pref, we keep recently used tabs' +layers around to speed up tab switches by avoiding the round trip to the content +process. This uses a simple array (``_tabLayerCache``) inside tabbrowser.js, which +we examine when determining if we want to unload a tab's layers or not. This is still +experimental as of Nightly 62. + +.. _async-tab-switcher.warming: + +Warming +======= + +Tab warming allows the browser to proactively render and upload layers to the compositor for tabs that the user is likely to switch to. The simplest example is when a user's mouse cursor is hovering over a tab. When this occurs, the async tab switcher is told to put that tab into a warming list, and to set its state to ``STATE_LOADING``, even though the user hasn't yet clicked on it. + +Warming a tab queues up a timer to unload background tabs (if no such timer already exists), which will clear out the warmed tab if the user doesn't eventually click on it. The unload will occur even if the user continues to hover the tab. + +If the user does happen to click on the warmed tab, the tab can be in either one of two states: + +``STATE_LOADING`` + In this case, the user requested the tab switch before the layers were rendered and received by the compositor. We'll at least have shaved off the time between warming and selection to display the tab's contents to the user. + +``STATE_LOADED`` + In this case, the user requested the tab switch after the layers had been rendered and received by the compositor. We can switch to the tab immediately. + +Warming is controlled by the following preferences: + +``browser.tabs.remote.warmup.enabled`` + Whether or not the warming optimization is enabled. + +``browser.tabs.remote.warmup.maxTabs`` + The maximum number of tabs that can be warming simultaneously. If the number of warmed tabs exceeds this amount, all background tabs are unloaded (see :ref:`async-tab-switcher.unloading-background`). + +``browser.tabs.remote.warmup.unloadDelayMs`` + The amount of time to wait between the first tab being warmed, and unloading all background tabs (see :ref:`async-tab-switcher.unloading-background`). + +.. _async-tab-switcher.logging: + +Logging +======= + +The async tab switcher has some logging capabilities that make it easier to debug and reason about its behaviour. Setting the hidden ``browser.tabs.remote.logSwitchTiming`` pref to true will put logging into the Browser Console. + +Alternatively, setting the ``useDumpForLogging`` property to true within the source code of the tab switcher will dump those logs to stdout. diff --git a/browser/base/content/docs/tabbrowser/index.rst b/browser/base/content/docs/tabbrowser/index.rst new file mode 100644 index 0000000000..c142355b24 --- /dev/null +++ b/browser/base/content/docs/tabbrowser/index.rst @@ -0,0 +1,35 @@ +.. _tabbrowser: + +=================== +tabbrowser +=================== + +In the previous versions of Firefox, ```` was responsible for displaying and managing the contents of a window's tabs. As the browser evolved, the responsibilities of ```` grew. Each Firefox window had one ```` that could be accessed using the ``gBrowser`` variable. + +At this point, ```` DOM element doesn't exist anymore, but we mention it here because it's often used synonymously with ``gBrowser``, and other documentation might still make direct or indirect reference to ````. + +gBrowser +--------------- + +``gBrowser`` is a JavaScript object defined in :searchfox:`tabbrowser.js `, that manages tabs, and the underlying infrastructure for switching tabs, adding tabs, removing tabs, knowing about tab switches, etc. ``gBrowser`` is available in the browser window scope and you get only one ``gBrowser`` per browser window. + +What does the name gBrowser stand for? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +What does the *g* in ``gBrowser`` stand for? It's an old Mozilla convention and *g* stands for *global*. It's a way of indicating inside of the variable name that something is globally scoped. In this case it is global to the browser window and every single tab of the window will be managed through that window's ``gBrowser``. + +What does the *browser* in ``gBrowser`` stand for? *browser* is an element that knows how to render web content. At some point in its lineage, Firefox didn't have tabs. There was one browser per window. That individual browser was called ``gBrowser``. The new ``gBrowser`` variable has the same interface as the old one, but would forward calls to the current ``selectedBrowser``, which is an actual ```` element. + +Relationship between tabbrowser, browser and gBrowser +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +```` is a XUL element that can load web pages, make HTTP requests and respond accordingly. It is conceptually similar to an ``iframe`` except that except that contains additional methods and has elevated privileges. In Firefox, each tab is associated with one ````. + +Historically each Firefox window had one ````, that could be accessed using the ``gBrowser`` variable. It could contain multiple tabs each of which was associated with one ````. + +Although the ```` DOM element was removed, you can still interact with all the browser's tabs using the ``gBrowser`` global. The ``gBrowser`` global is still defined in a file called :searchfox:`tabbrowser.js ` for the same historical reasons. + +.. toctree:: + :maxdepth: 1 + + async-tab-switcher diff --git a/browser/base/content/fullscreen-and-pointerlock.inc.xhtml b/browser/base/content/fullscreen-and-pointerlock.inc.xhtml new file mode 100644 index 0000000000..418f2ddcb1 --- /dev/null +++ b/browser/base/content/fullscreen-and-pointerlock.inc.xhtml @@ -0,0 +1,30 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + + + + + diff --git a/browser/base/content/global-scripts.inc b/browser/base/content/global-scripts.inc new file mode 100644 index 0000000000..f5f43b8f95 --- /dev/null +++ b/browser/base/content/global-scripts.inc @@ -0,0 +1,25 @@ +# -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# JS files which are needed by browser.xhtml but no other top level windows to +# support MacOS specific features should be loaded directly from browser.xhtml +# rather than this file. + +# If you update this list, you may need to add a mapping within the following +# file so that ESLint works correctly: +# tools/lint/eslint/eslint-plugin-mozilla/lib/environments/browser-window.js + + diff --git a/browser/base/content/hiddenWindowMac.xhtml b/browser/base/content/hiddenWindowMac.xhtml new file mode 100644 index 0000000000..a75d430ef3 --- /dev/null +++ b/browser/base/content/hiddenWindowMac.xhtml @@ -0,0 +1,35 @@ + +# -*- Mode: HTML -*- +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +#define HIDDEN_WINDOW + + + + +#include macWindow.inc.xhtml + + + + + + + + diff --git a/browser/base/content/logos/etp-mobile.svg b/browser/base/content/logos/etp-mobile.svg new file mode 100644 index 0000000000..dfb6eed9c5 --- /dev/null +++ b/browser/base/content/logos/etp-mobile.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/browser/base/content/logos/fxa-logo.svg b/browser/base/content/logos/fxa-logo.svg new file mode 100644 index 0000000000..5f78f7a711 --- /dev/null +++ b/browser/base/content/logos/fxa-logo.svg @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/browser/base/content/logos/lockwise.svg b/browser/base/content/logos/lockwise.svg new file mode 100644 index 0000000000..d3e354cdc1 --- /dev/null +++ b/browser/base/content/logos/lockwise.svg @@ -0,0 +1,4 @@ + + diff --git a/browser/base/content/logos/monitor.svg b/browser/base/content/logos/monitor.svg new file mode 100644 index 0000000000..2952a65555 --- /dev/null +++ b/browser/base/content/logos/monitor.svg @@ -0,0 +1,4 @@ + + diff --git a/browser/base/content/logos/passkey.svg b/browser/base/content/logos/passkey.svg new file mode 100644 index 0000000000..b588595b7a --- /dev/null +++ b/browser/base/content/logos/passkey.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + diff --git a/browser/base/content/logos/proxy-dark.svg b/browser/base/content/logos/proxy-dark.svg new file mode 100644 index 0000000000..f2f4d327b4 --- /dev/null +++ b/browser/base/content/logos/proxy-dark.svg @@ -0,0 +1,4 @@ + + diff --git a/browser/base/content/logos/proxy-light.svg b/browser/base/content/logos/proxy-light.svg new file mode 100644 index 0000000000..01fc54a758 --- /dev/null +++ b/browser/base/content/logos/proxy-light.svg @@ -0,0 +1,4 @@ + + diff --git a/browser/base/content/logos/relay.svg b/browser/base/content/logos/relay.svg new file mode 100644 index 0000000000..0920b33e5e --- /dev/null +++ b/browser/base/content/logos/relay.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/browser/base/content/logos/send.svg b/browser/base/content/logos/send.svg new file mode 100644 index 0000000000..f754d727e8 --- /dev/null +++ b/browser/base/content/logos/send.svg @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/browser/base/content/logos/tracking-protection-dark-theme.svg b/browser/base/content/logos/tracking-protection-dark-theme.svg new file mode 100644 index 0000000000..6d12a2427d --- /dev/null +++ b/browser/base/content/logos/tracking-protection-dark-theme.svg @@ -0,0 +1,4 @@ + + diff --git a/browser/base/content/logos/tracking-protection.svg b/browser/base/content/logos/tracking-protection.svg new file mode 100644 index 0000000000..0d554caaac --- /dev/null +++ b/browser/base/content/logos/tracking-protection.svg @@ -0,0 +1,4 @@ + + diff --git a/browser/base/content/logos/vpn-dark.svg b/browser/base/content/logos/vpn-dark.svg new file mode 100644 index 0000000000..8c54617052 --- /dev/null +++ b/browser/base/content/logos/vpn-dark.svg @@ -0,0 +1,6 @@ + + + + diff --git a/browser/base/content/logos/vpn-light.svg b/browser/base/content/logos/vpn-light.svg new file mode 100644 index 0000000000..710e63a177 --- /dev/null +++ b/browser/base/content/logos/vpn-light.svg @@ -0,0 +1,6 @@ + + + + diff --git a/browser/base/content/logos/vpn-promo-logo.svg b/browser/base/content/logos/vpn-promo-logo.svg new file mode 100644 index 0000000000..0dd88b9ae3 --- /dev/null +++ b/browser/base/content/logos/vpn-promo-logo.svg @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/browser/base/content/macWindow.inc.xhtml b/browser/base/content/macWindow.inc.xhtml new file mode 100644 index 0000000000..b9ca44c7eb --- /dev/null +++ b/browser/base/content/macWindow.inc.xhtml @@ -0,0 +1,38 @@ +# -*- Mode: HTML -*- +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# This include file should only contain things that are needed to support MacOS +# specific features that are needed for all top level windows. If the feature is +# also needed in browser.xhtml, it should go in one of the various include files +# below that are shared with browser.xhtml. + + + + + + + + + + + + + +# All JS files which are needed by browser.xhtml and other top level windows to +# support MacOS specific features *must* go into the global-scripts.inc file so +# that they can be shared with browser.xhtml. +#include global-scripts.inc + + + +# All sets except for popupsets (commands, keys, and stringbundles) +# *must* go into the browser-sets.inc file so that they can be shared with +# browser.xhtml +#include browser-sets.inc + +# The entire main menubar is placed into browser-menubar.inc, so that it can be +# shared with browser.xhtml. +#include browser-menubar.inc diff --git a/browser/base/content/main-popupset.inc.xhtml b/browser/base/content/main-popupset.inc.xhtml new file mode 100644 index 0000000000..4074f35ffc --- /dev/null +++ b/browser/base/content/main-popupset.inc.xhtml @@ -0,0 +1,661 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + + + + + + + + + + + + + + + +