From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- remote/.gitignore | 20 + remote/README.md | 74 + remote/cdp/CDP.sys.mjs | 147 + remote/cdp/CDPConnection.sys.mjs | 290 + remote/cdp/Error.sys.mjs | 132 + remote/cdp/JSONHandler.sys.mjs | 93 + remote/cdp/Protocol.sys.mjs | 17358 +++++++++++++++++++ remote/cdp/StreamRegistry.sys.mjs | 139 + remote/cdp/domains/ContentProcessDomain.sys.mjs | 25 + remote/cdp/domains/ContentProcessDomains.sys.mjs | 19 + remote/cdp/domains/Domain.sys.mjs | 71 + remote/cdp/domains/DomainCache.sys.mjs | 113 + remote/cdp/domains/ParentProcessDomains.sys.mjs | 19 + remote/cdp/domains/content/DOM.sys.mjs | 245 + remote/cdp/domains/content/Emulation.sys.mjs | 50 + remote/cdp/domains/content/Input.sys.mjs | 57 + remote/cdp/domains/content/Log.sys.mjs | 86 + remote/cdp/domains/content/Network.sys.mjs | 18 + remote/cdp/domains/content/Page.sys.mjs | 453 + remote/cdp/domains/content/Performance.sys.mjs | 32 + remote/cdp/domains/content/Runtime.sys.mjs | 643 + remote/cdp/domains/content/Security.sys.mjs | 32 + .../content/runtime/ExecutionContext.sys.mjs | 564 + remote/cdp/domains/parent/Browser.sys.mjs | 40 + remote/cdp/domains/parent/Emulation.sys.mjs | 177 + remote/cdp/domains/parent/Fetch.sys.mjs | 30 + remote/cdp/domains/parent/IO.sys.mjs | 103 + remote/cdp/domains/parent/Input.sys.mjs | 168 + remote/cdp/domains/parent/Network.sys.mjs | 538 + remote/cdp/domains/parent/Page.sys.mjs | 756 + remote/cdp/domains/parent/Security.sys.mjs | 58 + remote/cdp/domains/parent/SystemInfo.sys.mjs | 48 + remote/cdp/domains/parent/Target.sys.mjs | 286 + .../cdp/domains/parent/page/DialogHandler.sys.mjs | 140 + remote/cdp/jar.mn | 55 + remote/cdp/moz.build | 28 + remote/cdp/observers/ChannelEventSink.sys.mjs | 100 + remote/cdp/observers/ContextObserver.sys.mjs | 178 + remote/cdp/observers/NetworkObserver.sys.mjs | 633 + remote/cdp/observers/TargetObserver.sys.mjs | 142 + remote/cdp/sessions/ContentProcessSession.sys.mjs | 104 + remote/cdp/sessions/MainProcessSession.sys.mjs | 12 + remote/cdp/sessions/Session.sys.mjs | 80 + remote/cdp/sessions/TabSession.sys.mjs | 150 + remote/cdp/sessions/frame-script.js | 13 + remote/cdp/targets/MainProcessTarget.sys.mjs | 55 + remote/cdp/targets/TabTarget.sys.mjs | 161 + remote/cdp/targets/Target.sys.mjs | 62 + remote/cdp/targets/TargetList.sys.mjs | 159 + remote/cdp/test/browser/README.md | 11 + remote/cdp/test/browser/browser.ini | 19 + remote/cdp/test/browser/browser_agent.js | 14 + remote/cdp/test/browser/browser_cdp.js | 74 + remote/cdp/test/browser/browser_cdp_only.ini | 15 + remote/cdp/test/browser/browser_httpd.js | 138 + remote/cdp/test/browser/browser_interface.js | 20 + remote/cdp/test/browser/browser_main_target.js | 56 + remote/cdp/test/browser/browser_session.js | 22 + remote/cdp/test/browser/browser_tabs.js | 34 + remote/cdp/test/browser/chrome-remote-interface.js | 8 + remote/cdp/test/browser/dom/browser.ini | 16 + .../cdp/test/browser/dom/browser_describeNode.js | 175 + remote/cdp/test/browser/dom/browser_resolveNode.js | 99 + remote/cdp/test/browser/dom/head.js | 9 + remote/cdp/test/browser/emulation/browser.ini | 17 + .../emulation/browser_setDeviceMetricsOverride.js | 403 + .../emulation/browser_setTouchEmulationEnabled.js | 83 + .../emulation/browser_setUserAgentOverride.js | 146 + remote/cdp/test/browser/emulation/head.js | 9 + remote/cdp/test/browser/fetch/browser.ini | 15 + remote/cdp/test/browser/fetch/browser_disable.js | 11 + remote/cdp/test/browser/fetch/head.js | 9 + remote/cdp/test/browser/head.js | 638 + remote/cdp/test/browser/input/browser.ini | 22 + .../test/browser/input/browser_dispatchKeyEvent.js | 169 + .../input/browser_dispatchKeyEvent_events.js | 77 + .../browser/input/browser_dispatchKeyEvent_race.js | 92 + .../browser/input/browser_dispatchMouseEvent.js | 136 + .../browser/input/doc_dispatchKeyEvent_race.html | 28 + remote/cdp/test/browser/input/doc_events.html | 148 + remote/cdp/test/browser/input/head.js | 150 + remote/cdp/test/browser/io/browser.ini | 16 + remote/cdp/test/browser/io/browser_close.js | 46 + remote/cdp/test/browser/io/browser_read.js | 166 + remote/cdp/test/browser/io/head.js | 20 + remote/cdp/test/browser/log/browser.ini | 15 + remote/cdp/test/browser/log/browser_entryAdded.js | 138 + remote/cdp/test/browser/log/head.js | 9 + remote/cdp/test/browser/network/browser.ini | 39 + .../test/browser/network/browser_deleteCookies.js | 302 + .../network/browser_emulateNetworkConditions.js | 227 + .../test/browser/network/browser_getAllCookies.js | 231 + .../cdp/test/browser/network/browser_getCookies.js | 363 + .../browser/network/browser_navigationEvents.js | 201 + .../browser/network/browser_requestWillBeSent.js | 224 + .../browser/network/browser_responseReceived.js | 236 + .../browser/network/browser_setCacheDisabled.js | 130 + .../cdp/test/browser/network/browser_setCookie.js | 296 + .../cdp/test/browser/network/browser_setCookies.js | 70 + .../network/browser_setUserAgentOverride.js | 68 + remote/cdp/test/browser/network/doc_empty.html | 10 + remote/cdp/test/browser/network/doc_frameset.html | 11 + .../browser/network/doc_get_cookies_frame.html | 15 + .../test/browser/network/doc_get_cookies_page.html | 17 + .../test/browser/network/doc_networkEvents.html | 10 + .../test/browser/network/file_framesetEvents.js | 3 + .../cdp/test/browser/network/file_networkEvents.js | 3 + remote/cdp/test/browser/network/head.js | 99 + remote/cdp/test/browser/network/sjs-cookies.sjs | 43 + remote/cdp/test/browser/page/browser.ini | 49 + .../cdp/test/browser/page/browser_bringToFront.js | 64 + .../test/browser/page/browser_captureScreenshot.js | 557 + .../browser/page/browser_createIsolatedWorld.js | 491 + .../browser/page/browser_domContentEventFired.js | 95 + .../cdp/test/browser/page/browser_frameAttached.js | 144 + .../cdp/test/browser/page/browser_frameDetached.js | 171 + .../test/browser/page/browser_frameNavigated.js | 93 + .../browser/page/browser_frameStartedLoading.js | 104 + .../browser/page/browser_frameStoppedLoading.js | 104 + .../cdp/test/browser/page/browser_getFrameTree.js | 149 + .../test/browser/page/browser_getLayoutMetrics.js | 118 + .../browser/page/browser_getNavigationHistory.js | 65 + .../browser/page/browser_javascriptDialog_alert.js | 59 + .../page/browser_javascriptDialog_beforeunload.js | 54 + .../page/browser_javascriptDialog_confirm.js | 43 + .../page/browser_javascriptDialog_otherTarget.js | 50 + .../page/browser_javascriptDialog_prompt.js | 45 + .../test/browser/page/browser_lifecycleEvent.js | 191 + .../test/browser/page/browser_loadEventFired.js | 95 + remote/cdp/test/browser/page/browser_navigate.js | 309 + .../browser/page/browser_navigateToHistoryEntry.js | 133 + .../page/browser_navigatedWithinDocument.js | 133 + .../test/browser/page/browser_navigationEvents.js | 223 + remote/cdp/test/browser/page/browser_printToPDF.js | 53 + remote/cdp/test/browser/page/browser_reload.js | 34 + .../cdp/test/browser/page/browser_runtimeEvents.js | 118 + .../page/browser_scriptToEvaluateOnNewDocument.js | 167 + remote/cdp/test/browser/page/doc_empty.html | 9 + remote/cdp/test/browser/page/doc_frame.html | 9 + .../cdp/test/browser/page/doc_frameset_multi.html | 11 + .../cdp/test/browser/page/doc_frameset_nested.html | 10 + .../cdp/test/browser/page/doc_frameset_single.html | 10 + remote/cdp/test/browser/page/head.js | 117 + remote/cdp/test/browser/page/sjs_redirect.sjs | 7 + remote/cdp/test/browser/runtime/browser.ini | 32 + .../test/browser/runtime/browser_callFunctionOn.js | 304 + .../runtime/browser_callFunctionOn_awaitPromise.js | 181 + .../browser_callFunctionOn_returnByValue.js | 401 + .../browser/runtime/browser_consoleAPICalled.js | 380 + .../cdp/test/browser/runtime/browser_evaluate.js | 256 + .../runtime/browser_evaluate_awaitPromise.js | 169 + .../runtime/browser_evaluate_returnByValue.js | 151 + .../browser/runtime/browser_exceptionThrown.js | 121 + .../runtime/browser_executionContextEvents.js | 332 + .../test/browser/runtime/browser_getProperties.js | 184 + .../test/browser/runtime/browser_remoteObjects.js | 83 + .../browser/runtime/browser_withDefaultPrefs.js | 9 + .../browser/runtime/browser_with_default_prefs.ini | 13 + .../test/browser/runtime/doc_console_events.html | 31 + .../browser/runtime/doc_console_events_onload.html | 12 + remote/cdp/test/browser/runtime/doc_empty.html | 9 + remote/cdp/test/browser/runtime/doc_frame.html | 9 + .../test/browser/runtime/doc_frameset_single.html | 10 + remote/cdp/test/browser/runtime/head.js | 15 + remote/cdp/test/browser/security/browser.ini | 15 + .../security/browser_setIgnoreCertificateErrors.js | 159 + remote/cdp/test/browser/security/head.js | 9 + remote/cdp/test/browser/systemInfo/browser.ini | 15 + .../browser/systemInfo/browser_getProcessInfo.js | 78 + remote/cdp/test/browser/systemInfo/head.js | 9 + remote/cdp/test/browser/target/browser.ini | 28 + .../test/browser/target/browser_activateTarget.js | 78 + .../test/browser/target/browser_attachToTarget.js | 54 + .../browser/target/browser_attachedToTarget.js | 50 + .../test/browser/target/browser_browserContext.js | 72 + .../cdp/test/browser/target/browser_closeTarget.js | 43 + .../test/browser/target/browser_createTarget.js | 103 + .../cdp/test/browser/target/browser_getTargets.js | 298 + .../browser/target/browser_sendMessageToTarget.js | 41 + .../browser/target/browser_setDiscoverTargets.js | 293 + .../test/browser/target/browser_targetCreated.js | 18 + .../test/browser/target/browser_targetDestroyed.js | 21 + remote/cdp/test/browser/target/doc_test.html | 9 + remote/cdp/test/browser/target/head.js | 9 + remote/cdp/test/xpcshell/test_CDPConnection.js | 25 + remote/cdp/test/xpcshell/test_DomainCache.js | 111 + remote/cdp/test/xpcshell/test_Error.js | 104 + remote/cdp/test/xpcshell/test_Session.js | 40 + remote/cdp/test/xpcshell/test_StreamRegistry.js | 153 + remote/cdp/test/xpcshell/xpcshell.ini | 9 + remote/components/Marionette.sys.mjs | 307 + remote/components/RemoteAgent.sys.mjs | 522 + remote/components/components.conf | 29 + remote/components/moz.build | 17 + remote/components/nsIMarionette.idl | 17 + remote/components/nsIRemoteAgent.idl | 36 + remote/doc/Building.md | 51 + remote/doc/CodeStyle.md | 73 + remote/doc/Debugging.md | 53 + remote/doc/Prefs.md | 43 + remote/doc/Security.md | 117 + remote/doc/Testing.md | 162 + remote/doc/cdp/Architecture.md | 163 + remote/doc/cdp/PuppeteerVendor.md | 103 + remote/doc/cdp/RequiredPreferences.md | 14 + remote/doc/cdp/Usage.md | 62 + remote/doc/cdp/index.rst | 27 + remote/doc/index.rst | 94 + remote/doc/marionette/Building.md | 68 + remote/doc/marionette/CodeStyle.md | 229 + remote/doc/marionette/Contributing.md | 69 + remote/doc/marionette/Debugging.md | 86 + remote/doc/marionette/Intro.md | 70 + remote/doc/marionette/NewContributors.md | 84 + remote/doc/marionette/Patches.md | 32 + remote/doc/marionette/Prefs.md | 24 + remote/doc/marionette/Protocol.md | 114 + remote/doc/marionette/PythonTests.md | 69 + remote/doc/marionette/SeleniumAtoms.md | 90 + remote/doc/marionette/Taskcluster.md | 88 + remote/doc/marionette/Testing.md | 192 + remote/doc/marionette/index.rst | 64 + remote/doc/messagehandler/Intro.md | 81 + remote/doc/messagehandler/SimpleExample.md | 142 + remote/doc/messagehandler/index.rst | 11 + remote/jar.mn | 69 + remote/mach_commands.py | 749 + remote/marionette/.eslintrc.js | 14 + remote/marionette/README | 20 + remote/marionette/accessibility.sys.mjs | 481 + .../actors/MarionetteCommandsChild.sys.mjs | 611 + .../actors/MarionetteCommandsParent.sys.mjs | 383 + .../actors/MarionetteEventsChild.sys.mjs | 84 + .../actors/MarionetteEventsParent.sys.mjs | 115 + .../actors/MarionetteReftestChild.sys.mjs | 236 + .../actors/MarionetteReftestParent.sys.mjs | 85 + remote/marionette/addon.sys.mjs | 133 + remote/marionette/atom.sys.mjs | 305 + remote/marionette/browser.sys.mjs | 385 + remote/marionette/cert.sys.mjs | 61 + remote/marionette/chrome/reftest.xhtml | 8 + remote/marionette/chrome/test.xhtml | 61 + remote/marionette/chrome/test2.xhtml | 36 + remote/marionette/chrome/test_dialog.dtd | 7 + remote/marionette/chrome/test_dialog.properties | 7 + remote/marionette/chrome/test_dialog.xhtml | 37 + remote/marionette/chrome/test_menupopup.xhtml | 33 + remote/marionette/chrome/test_nested_iframe.xhtml | 8 + remote/marionette/chrome/test_no_xul.xhtml | 58 + remote/marionette/cookie.sys.mjs | 296 + remote/marionette/driver.sys.mjs | 3418 ++++ remote/marionette/element.sys.mjs | 1620 ++ remote/marionette/evaluate.sys.mjs | 356 + remote/marionette/event.sys.mjs | 317 + remote/marionette/interaction.sys.mjs | 782 + remote/marionette/jar.mn | 52 + remote/marionette/json.sys.mjs | 249 + remote/marionette/l10n.sys.mjs | 103 + remote/marionette/legacyaction.sys.mjs | 640 + remote/marionette/message.sys.mjs | 329 + remote/marionette/modal.sys.mjs | 377 + remote/marionette/moz.build | 10 + remote/marionette/navigate.sys.mjs | 428 + remote/marionette/packets.sys.mjs | 426 + remote/marionette/permissions.sys.mjs | 69 + remote/marionette/prefs.sys.mjs | 175 + remote/marionette/reftest-content.js | 65 + remote/marionette/reftest.sys.mjs | 907 + remote/marionette/server.sys.mjs | 462 + remote/marionette/stream-utils.sys.mjs | 256 + remote/marionette/sync.sys.mjs | 540 + remote/marionette/test/README | 1 + remote/marionette/test/xpcshell/.eslintrc.js | 7 + remote/marionette/test/xpcshell/README | 16 + remote/marionette/test/xpcshell/head.js | 3 + remote/marionette/test/xpcshell/test_actors.js | 55 + remote/marionette/test/xpcshell/test_browser.js | 21 + remote/marionette/test/xpcshell/test_cookie.js | 362 + remote/marionette/test/xpcshell/test_element.js | 789 + remote/marionette/test/xpcshell/test_json.js | 275 + remote/marionette/test/xpcshell/test_message.js | 245 + remote/marionette/test/xpcshell/test_modal.js | 113 + remote/marionette/test/xpcshell/test_navigate.js | 90 + remote/marionette/test/xpcshell/test_prefs.js | 98 + remote/marionette/test/xpcshell/test_sync.js | 419 + remote/marionette/test/xpcshell/xpcshell.ini | 18 + remote/marionette/transport.sys.mjs | 529 + remote/moz.build | 22 + remote/server/README | 8 + remote/server/WebSocketHandshake.sys.mjs | 317 + remote/server/WebSocketTransport.sys.mjs | 86 + remote/shared/AppInfo.sys.mjs | 63 + remote/shared/Capture.sys.mjs | 205 + remote/shared/Format.sys.mjs | 186 + remote/shared/Log.sys.mjs | 73 + remote/shared/MobileTabBrowser.sys.mjs | 90 + remote/shared/Navigate.sys.mjs | 437 + remote/shared/PDF.sys.mjs | 245 + remote/shared/Realm.sys.mjs | 353 + remote/shared/RecommendedPreferences.sys.mjs | 428 + remote/shared/RemoteError.sys.mjs | 19 + remote/shared/Stack.sys.mjs | 73 + remote/shared/Sync.sys.mjs | 324 + remote/shared/TabManager.sys.mjs | 341 + remote/shared/UUID.sys.mjs | 14 + remote/shared/WebSocketConnection.sys.mjs | 149 + remote/shared/WindowManager.sys.mjs | 273 + .../listeners/BrowsingContextListener.sys.mjs | 121 + remote/shared/listeners/ConsoleAPIListener.sys.mjs | 126 + remote/shared/listeners/ConsoleListener.sys.mjs | 156 + remote/shared/listeners/LoadListener.sys.mjs | 103 + remote/shared/listeners/NetworkEventRecord.sys.mjs | 370 + remote/shared/listeners/NetworkListener.sys.mjs | 99 + remote/shared/listeners/test/browser/browser.ini | 14 + .../browser/browser_BrowsingContextListener.js | 117 + .../test/browser/browser_ConsoleAPIListener.js | 162 + .../browser_ConsoleAPIListener_cached_messages.js | 100 + .../test/browser/browser_ConsoleListener.js | 148 + .../browser_ConsoleListener_cached_messages.js | 82 + .../test/browser/browser_NetworkListener.js | 84 + remote/shared/listeners/test/browser/head.js | 89 + remote/shared/messagehandler/Errors.sys.mjs | 90 + .../shared/messagehandler/EventsDispatcher.sys.mjs | 237 + .../shared/messagehandler/MessageHandler.sys.mjs | 357 + .../messagehandler/MessageHandlerRegistry.sys.mjs | 238 + remote/shared/messagehandler/Module.sys.mjs | 137 + remote/shared/messagehandler/ModuleCache.sys.mjs | 265 + .../messagehandler/RootMessageHandler.sys.mjs | 154 + .../RootMessageHandlerRegistry.sys.mjs | 17 + .../WindowGlobalMessageHandler.sys.mjs | 242 + .../messagehandler/sessiondata/SessionData.sys.mjs | 394 + .../sessiondata/SessionDataReader.sys.mjs | 29 + .../test/browser/broadcast/browser.ini | 17 + .../browser_filter_top_browsing_context.js | 84 + .../broadcast/browser_only_content_process.js | 46 + .../test/browser/broadcast/browser_two_tabs.js | 46 + .../broadcast/browser_two_tabs_with_params.js | 47 + .../test/browser/broadcast/browser_two_windows.js | 47 + .../test/browser/broadcast/browser_with_frames.js | 40 + .../doc_messagehandler_broadcasting_xul.xhtml | 3 + .../messagehandler/test/browser/broadcast/head.js | 48 + .../shared/messagehandler/test/browser/browser.ini | 25 + .../messagehandler/test/browser/browser_bfcache.js | 98 + .../test/browser/browser_events_dispatcher.js | 449 + .../test/browser/browser_events_handler.js | 57 + .../test/browser/browser_events_module.js | 281 + .../test/browser/browser_frame_context_utils.js | 98 + .../test/browser/browser_handle_command_errors.js | 218 + .../test/browser/browser_handle_command_retry.js | 239 + .../test/browser/browser_handle_simple_command.js | 203 + .../test/browser/browser_registry.js | 37 + .../test/browser/browser_session_data.js | 271 + .../browser_session_data_browser_element.js | 94 + .../browser_session_data_constructor_race.js | 50 + .../test/browser/browser_session_data_update.js | 113 + .../browser_session_data_update_categories.js | 91 + .../browser_session_data_update_contexts.js | 194 + .../test/browser/browser_windowglobal_to_root.js | 47 + remote/shared/messagehandler/test/browser/head.js | 236 + .../resources/modules/ModuleRegistry.sys.mjs | 40 + .../browser/resources/modules/root/command.sys.mjs | 29 + .../browser/resources/modules/root/event.sys.mjs | 21 + .../browser/resources/modules/root/invalid.sys.mjs | 4 + .../resources/modules/root/rootOnly.sys.mjs | 70 + .../modules/root/windowglobaltoroot.sys.mjs | 29 + .../modules/windowglobal-in-root/command.sys.mjs | 28 + .../modules/windowglobal-in-root/event.sys.mjs | 31 + .../resources/modules/windowglobal/command.sys.mjs | 85 + .../windowglobal/commandwindowglobalonly.sys.mjs | 41 + .../resources/modules/windowglobal/event.sys.mjs | 26 + .../modules/windowglobal/eventemitter.sys.mjs | 81 + .../modules/windowglobal/eventnointercept.sys.mjs | 16 + .../modules/windowglobal/eventonprefchange.sys.mjs | 33 + .../resources/modules/windowglobal/retry.sys.mjs | 84 + .../modules/windowglobal/sessiondataupdate.sys.mjs | 33 + .../windowglobal/windowglobaltoroot.sys.mjs | 47 + .../test/browser/webdriver/browser.ini | 9 + .../browser_session_execute_command_errors.js | 40 + .../messagehandler/test/xpcshell/test_Errors.js | 91 + .../test/xpcshell/test_SessionData.js | 296 + .../messagehandler/test/xpcshell/xpcshell.ini | 6 + .../transports/BrowsingContextUtils.sys.mjs | 57 + .../transports/RootTransport.sys.mjs | 190 + .../MessageHandlerFrameActor.sys.mjs | 53 + .../MessageHandlerFrameChild.sys.mjs | 111 + .../MessageHandlerFrameParent.sys.mjs | 120 + remote/shared/moz.build | 17 + remote/shared/test/browser/browser.ini | 5 + remote/shared/test/browser/browser_TabManager.js | 148 + remote/shared/test/xpcshell/test_AppInfo.js | 32 + remote/shared/test/xpcshell/test_Format.js | 108 + remote/shared/test/xpcshell/test_Navigate.js | 879 + remote/shared/test/xpcshell/test_Realm.js | 86 + .../test/xpcshell/test_RecommendedPreferences.js | 111 + remote/shared/test/xpcshell/test_Stack.js | 120 + remote/shared/test/xpcshell/test_Sync.js | 389 + remote/shared/test/xpcshell/test_TabManager.js | 56 + remote/shared/test/xpcshell/test_UUID.js | 21 + remote/shared/test/xpcshell/xpcshell.ini | 13 + remote/shared/webdriver/Actions.sys.mjs | 2137 +++ remote/shared/webdriver/Assert.sys.mjs | 489 + remote/shared/webdriver/Capabilities.sys.mjs | 737 + remote/shared/webdriver/Errors.sys.mjs | 796 + remote/shared/webdriver/KeyData.sys.mjs | 340 + remote/shared/webdriver/NodeCache.sys.mjs | 169 + remote/shared/webdriver/Session.sys.mjs | 344 + .../WebDriverProcessDataChild.sys.mjs | 95 + .../WebDriverProcessDataParent.sys.mjs | 39 + remote/shared/webdriver/test/xpcshell/head.js | 15 + .../shared/webdriver/test/xpcshell/test_Actions.js | 706 + .../shared/webdriver/test/xpcshell/test_Assert.js | 183 + .../webdriver/test/xpcshell/test_Capabilities.js | 585 + .../shared/webdriver/test/xpcshell/test_Errors.js | 509 + .../webdriver/test/xpcshell/test_NodeCache.js | 240 + .../shared/webdriver/test/xpcshell/test_Session.js | 49 + remote/shared/webdriver/test/xpcshell/xpcshell.ini | 13 + remote/test/puppeteer/.editorconfig | 9 + remote/test/puppeteer/.eslintignore | 46 + remote/test/puppeteer/.eslintplugin.js | 95 + remote/test/puppeteer/.eslintrc.js | 205 + remote/test/puppeteer/.eslintrc.types.cjs | 17 + remote/test/puppeteer/.mocharc.cjs | 27 + remote/test/puppeteer/.npmrc | 1 + remote/test/puppeteer/.prettierignore | 53 + remote/test/puppeteer/.prettierrc.cjs | 7 + .../test/puppeteer/.release-please-manifest.json | 7 + remote/test/puppeteer/LICENSE | 202 + remote/test/puppeteer/README.md | 253 + remote/test/puppeteer/SECURITY.md | 7 + remote/test/puppeteer/commitlint.config.js | 28 + remote/test/puppeteer/examples/README.md | 42 + remote/test/puppeteer/examples/block-images.js | 36 + remote/test/puppeteer/examples/cross-browser.js | 48 + remote/test/puppeteer/examples/custom-event.js | 50 + remote/test/puppeteer/examples/detect-sniff.js | 49 + remote/test/puppeteer/examples/oopif.js | 49 + remote/test/puppeteer/examples/pdf.js | 35 + remote/test/puppeteer/examples/proxy.js | 35 + .../test/puppeteer/examples/screenshot-fullpage.js | 28 + remote/test/puppeteer/examples/screenshot.js | 27 + remote/test/puppeteer/examples/search.js | 55 + remote/test/puppeteer/json-mocha-reporter.js | 69 + remote/test/puppeteer/moz.yaml | 10 + remote/test/puppeteer/package-lock.json | 16194 +++++++++++++++++ remote/test/puppeteer/package.json | 193 + remote/test/puppeteer/packages/browsers/.gitignore | 1 + .../test/puppeteer/packages/browsers/.mocharc.cjs | 7 + .../test/puppeteer/packages/browsers/CHANGELOG.md | 131 + remote/test/puppeteer/packages/browsers/README.md | 28 + .../packages/browsers/api-extractor.docs.json | 15 + .../puppeteer/packages/browsers/api-extractor.json | 40 + .../test/puppeteer/packages/browsers/package.json | 123 + remote/test/puppeteer/packages/browsers/src/CLI.ts | 313 + .../test/puppeteer/packages/browsers/src/Cache.ts | 119 + .../browsers/src/browser-data/browser-data.ts | 124 + .../packages/browsers/src/browser-data/chrome.ts | 169 + .../browsers/src/browser-data/chromedriver.ts | 93 + .../packages/browsers/src/browser-data/chromium.ts | 125 + .../packages/browsers/src/browser-data/firefox.ts | 355 + .../packages/browsers/src/browser-data/types.ts | 75 + .../test/puppeteer/packages/browsers/src/debug.ts | 19 + .../packages/browsers/src/detectPlatform.ts | 61 + .../puppeteer/packages/browsers/src/fileUtil.ts | 89 + .../puppeteer/packages/browsers/src/httpUtil.ts | 141 + .../puppeteer/packages/browsers/src/install.ts | 218 + .../test/puppeteer/packages/browsers/src/launch.ts | 494 + .../puppeteer/packages/browsers/src/main-cli.ts | 21 + .../test/puppeteer/packages/browsers/src/main.ts | 40 + .../packages/browsers/src/tsconfig.cjs.json | 7 + .../packages/browsers/src/tsconfig.esm.json | 6 + .../browsers/test/src/chrome/chrome-data.spec.ts | 120 + .../packages/browsers/test/src/chrome/cli.spec.ts | 104 + .../browsers/test/src/chrome/install.spec.ts | 239 + .../browsers/test/src/chrome/launch.spec.ts | 132 + .../src/chromedriver/chromedriver-data.spec.ts | 71 + .../browsers/test/src/chromedriver/cli.spec.ts | 89 + .../browsers/test/src/chromedriver/install.spec.ts | 102 + .../test/src/chromium/chromium-data.spec.ts | 108 + .../browsers/test/src/chromium/launch.spec.ts | 132 + .../packages/browsers/test/src/firefox/cli.spec.ts | 79 + .../browsers/test/src/firefox/firefox-data.spec.ts | 107 + .../browsers/test/src/firefox/install.spec.ts | 85 + .../packages/browsers/test/src/firefox/launch.ts | 102 + .../packages/browsers/test/src/tsconfig.json | 8 + .../puppeteer/packages/browsers/test/src/utils.ts | 85 + .../packages/browsers/test/src/versions.ts | 22 + .../browsers/tools/downloadTestBrowsers.mjs | 81 + .../test/puppeteer/packages/browsers/tsconfig.json | 8 + .../puppeteer/packages/ng-schematics/.eslintignore | 5 + .../puppeteer/packages/ng-schematics/.gitignore | 3 + .../puppeteer/packages/ng-schematics/.mocharc.cjs | 6 + .../puppeteer/packages/ng-schematics/CHANGELOG.md | 19 + .../puppeteer/packages/ng-schematics/README.md | 67 + .../packages/ng-schematics/package-lock.json | 1098 ++ .../puppeteer/packages/ng-schematics/package.json | 68 + .../ng-schematics/src/builders/builders.json | 10 + .../ng-schematics/src/builders/puppeteer/index.ts | 138 + .../src/builders/puppeteer/schema.json | 22 + .../ng-schematics/src/builders/puppeteer/types.ts | 24 + .../ng-schematics/src/schematics/collection.json | 10 + .../ng-add/files/base/.puppeteerrc.cjs.template | 4 + .../files/base/e2e/tests/app.e2e.ts.template | 59 + .../ng-add/files/base/e2e/tsconfig.json.template | 15 + .../ng-add/files/jasmine/e2e/helpers/babel.js | 4 + .../ng-add/files/jasmine/e2e/support/jasmine.json | 9 + .../ng-add/files/jest/e2e/jest.config.js | 11 + .../schematics/ng-add/files/mocha/e2e/.mocharc.js | 4 + .../src/schematics/ng-add/files/mocha/e2e/babel.js | 4 + .../ng-add/files/node/e2e/.gitignore.template | 3 + .../ng-schematics/src/schematics/ng-add/index.ts | 127 + .../src/schematics/ng-add/schema.json | 49 + .../ng-schematics/src/schematics/utils/files.ts | 162 + .../ng-schematics/src/schematics/utils/json.ts | 38 + .../ng-schematics/src/schematics/utils/packages.ts | 204 + .../ng-schematics/src/schematics/utils/types.ts | 28 + .../packages/ng-schematics/test/src/index.spec.ts | 212 + .../ng-schematics/tools/copySchemaFiles.js | 72 + .../packages/ng-schematics/tools/sandbox.js | 104 + .../puppeteer/packages/ng-schematics/tsconfig.json | 19 + .../packages/ng-schematics/tsconfig.spec.json | 10 + .../puppeteer/packages/puppeteer-core/.gitignore | 1 + .../puppeteer/packages/puppeteer-core/CHANGELOG.md | 1322 ++ .../puppeteer-core/api-extractor.docs.json | 15 + .../packages/puppeteer-core/api-extractor.json | 46 + .../puppeteer/packages/puppeteer-core/package.json | 159 + .../puppeteer-core/rollup.third_party.config.mjs | 35 + .../packages/puppeteer-core/src/api/Browser.ts | 473 + .../puppeteer-core/src/api/BrowserContext.ts | 186 + .../puppeteer-core/src/api/ElementHandle.ts | 917 + .../packages/puppeteer-core/src/api/HTTPRequest.ts | 567 + .../puppeteer-core/src/api/HTTPResponse.ts | 168 + .../packages/puppeteer-core/src/api/JSHandle.ts | 197 + .../packages/puppeteer-core/src/api/Page.ts | 2748 +++ .../packages/puppeteer-core/src/api/api.ts | 23 + .../puppeteer-core/src/common/Accessibility.ts | 577 + .../puppeteer-core/src/common/AriaQueryHandler.ts | 124 + .../packages/puppeteer-core/src/common/Binding.ts | 123 + .../packages/puppeteer-core/src/common/Browser.ts | 737 + .../puppeteer-core/src/common/BrowserConnector.ts | 176 + .../src/common/BrowserWebSocketTransport.ts | 60 + .../src/common/ChromeTargetManager.ts | 401 + .../puppeteer-core/src/common/Configuration.ts | 121 + .../puppeteer-core/src/common/Connection.ts | 615 + .../src/common/ConnectionTransport.ts | 25 + .../puppeteer-core/src/common/ConsoleMessage.ts | 123 + .../packages/puppeteer-core/src/common/Coverage.ts | 501 + .../src/common/CustomQueryHandler.ts | 227 + .../packages/puppeteer-core/src/common/Debug.ts | 136 + .../packages/puppeteer-core/src/common/Device.ts | 1562 ++ .../src/common/DeviceRequestPrompt.ts | 293 + .../packages/puppeteer-core/src/common/Dialog.ts | 117 + .../puppeteer-core/src/common/ElementHandle.ts | 777 + .../puppeteer-core/src/common/EmulationManager.ts | 63 + .../packages/puppeteer-core/src/common/Errors.ts | 115 + .../puppeteer-core/src/common/EventEmitter.ts | 165 + .../puppeteer-core/src/common/ExecutionContext.ts | 402 + .../puppeteer-core/src/common/FileChooser.ts | 97 + .../src/common/FirefoxTargetManager.ts | 259 + .../packages/puppeteer-core/src/common/Frame.ts | 1160 ++ .../puppeteer-core/src/common/FrameManager.ts | 478 + .../puppeteer-core/src/common/FrameTree.ts | 112 + .../puppeteer-core/src/common/GetQueryHandler.ts | 70 + .../puppeteer-core/src/common/HTTPRequest.ts | 445 + .../puppeteer-core/src/common/HTTPResponse.ts | 188 + .../puppeteer-core/src/common/HandleIterator.ts | 84 + .../packages/puppeteer-core/src/common/Input.ts | 920 + .../puppeteer-core/src/common/IsolatedWorld.ts | 537 + .../puppeteer-core/src/common/IsolatedWorlds.ts | 30 + .../packages/puppeteer-core/src/common/JSHandle.ts | 168 + .../packages/puppeteer-core/src/common/LazyArg.ts | 39 + .../puppeteer-core/src/common/LifecycleWatcher.ts | 304 + .../src/common/NetworkEventManager.ts | 220 + .../puppeteer-core/src/common/NetworkManager.ts | 652 + .../src/common/NodeWebSocketTransport.ts | 74 + .../puppeteer-core/src/common/PDFOptions.ts | 221 + .../puppeteer-core/src/common/PQueryHandler.ts | 37 + .../packages/puppeteer-core/src/common/Page.ts | 1656 ++ .../src/common/PierceQueryHandler.ts | 39 + .../src/common/PredefinedNetworkConditions.ts | 59 + .../packages/puppeteer-core/src/common/Product.ts | 21 + .../puppeteer-core/src/common/Puppeteer.ts | 147 + .../puppeteer-core/src/common/PuppeteerViewport.ts | 55 + .../puppeteer-core/src/common/QueryHandler.ts | 226 + .../puppeteer-core/src/common/ScriptInjector.ts | 49 + .../puppeteer-core/src/common/SecurityDetails.ts | 88 + .../packages/puppeteer-core/src/common/Target.ts | 285 + .../puppeteer-core/src/common/TargetManager.ts | 72 + .../puppeteer-core/src/common/TaskQueue.ts | 39 + .../puppeteer-core/src/common/TextQueryHandler.ts | 30 + .../puppeteer-core/src/common/TimeoutSettings.ts | 55 + .../packages/puppeteer-core/src/common/Tracing.ts | 144 + .../puppeteer-core/src/common/USKeyboardLayout.ts | 681 + .../packages/puppeteer-core/src/common/WaitTask.ts | 260 + .../puppeteer-core/src/common/WebWorker.ts | 179 + .../puppeteer-core/src/common/XPathQueryHandler.ts | 30 + .../puppeteer-core/src/common/bidi/BidiOverCDP.ts | 190 + .../puppeteer-core/src/common/bidi/Browser.ts | 89 + .../src/common/bidi/BrowserContext.ts | 59 + .../puppeteer-core/src/common/bidi/Connection.ts | 215 + .../puppeteer-core/src/common/bidi/Context.ts | 282 + .../src/common/bidi/ElementHandle.ts | 52 + .../puppeteer-core/src/common/bidi/JSHandle.ts | 159 + .../puppeteer-core/src/common/bidi/Page.ts | 345 + .../puppeteer-core/src/common/bidi/Serializer.ts | 273 + .../puppeteer-core/src/common/bidi/bidi.ts | 21 + .../puppeteer-core/src/common/bidi/utils.ts | 47 + .../packages/puppeteer-core/src/common/common.ts | 70 + .../packages/puppeteer-core/src/common/fetch.ts | 24 + .../packages/puppeteer-core/src/common/types.ts | 213 + .../packages/puppeteer-core/src/common/util.ts | 472 + .../packages/puppeteer-core/src/environment.ts | 29 + .../puppeteer-core/src/generated/injected.ts | 8 + .../puppeteer-core/src/generated/version.ts | 4 + .../src/injected/ARIAQuerySelector.ts | 41 + .../src/injected/CustomQuerySelector.ts | 69 + .../puppeteer-core/src/injected/PQuerySelector.ts | 308 + .../puppeteer-core/src/injected/PSelectorParser.ts | 119 + .../src/injected/PierceQuerySelector.ts | 73 + .../packages/puppeteer-core/src/injected/Poller.ts | 181 + .../puppeteer-core/src/injected/TextContent.ts | 155 + .../src/injected/TextQuerySelector.ts | 56 + .../src/injected/XPathQuerySelector.ts | 35 + .../puppeteer-core/src/injected/injected.ts | 61 + .../packages/puppeteer-core/src/injected/util.ts | 67 + .../puppeteer-core/src/node/ChromeLauncher.ts | 257 + .../puppeteer-core/src/node/FirefoxLauncher.ts | 225 + .../puppeteer-core/src/node/LaunchOptions.ts | 150 + .../puppeteer-core/src/node/PipeTransport.ts | 93 + .../puppeteer-core/src/node/ProductLauncher.ts | 448 + .../puppeteer-core/src/node/PuppeteerNode.ts | 267 + .../packages/puppeteer-core/src/node/node.ts | 22 + .../packages/puppeteer-core/src/node/util/fs.ts | 37 + .../packages/puppeteer-core/src/puppeteer-core.ts | 58 + .../packages/puppeteer-core/src/revisions.ts | 23 + .../puppeteer-core/src/templates/injected.ts.tmpl | 8 + .../puppeteer-core/src/templates/version.ts.tmpl | 4 + .../packages/puppeteer-core/src/tsconfig.cjs.json | 8 + .../packages/puppeteer-core/src/tsconfig.esm.json | 7 + .../puppeteer-core/src/util/AsyncIterableUtil.ts | 56 + .../src/util/DebuggableDeferredPromise.ts | 21 + .../puppeteer-core/src/util/DeferredPromise.ts | 68 + .../packages/puppeteer-core/src/util/ErrorLike.ts | 27 + .../packages/puppeteer-core/src/util/Function.ts | 98 + .../packages/puppeteer-core/src/util/assert.ts | 31 + .../packages/puppeteer-core/src/util/util.ts | 21 + .../puppeteer-core/third_party/mitt/index.ts | 18 + .../puppeteer-core/third_party/tsconfig.cjs.json | 8 + .../puppeteer-core/third_party/tsconfig.json | 8 + .../ensure-correct-devtools-protocol-package.ts | 97 + .../puppeteer-core/tools/generate_sources.ts | 88 + .../packages/puppeteer-core/tsconfig.json | 8 + .../test/puppeteer/packages/puppeteer/.gitignore | 1 + .../test/puppeteer/packages/puppeteer/CHANGELOG.md | 1457 ++ .../packages/puppeteer/api-extractor.docs.json | 15 + .../packages/puppeteer/api-extractor.json | 49 + .../test/puppeteer/packages/puppeteer/install.js | 43 + .../test/puppeteer/packages/puppeteer/package.json | 126 + .../packages/puppeteer/src/getConfiguration.ts | 97 + .../packages/puppeteer/src/node/install.ts | 131 + .../puppeteer/packages/puppeteer/src/puppeteer.ts | 54 + .../packages/puppeteer/src/tsconfig.cjs.json | 8 + .../packages/puppeteer/src/tsconfig.esm.json | 7 + .../puppeteer/packages/puppeteer/tsconfig.json | 16 + .../puppeteer/packages/testserver/CHANGELOG.md | 8 + remote/test/puppeteer/packages/testserver/LICENSE | 202 + .../test/puppeteer/packages/testserver/README.md | 18 + remote/test/puppeteer/packages/testserver/cert.pem | 20 + remote/test/puppeteer/packages/testserver/key.pem | 28 + .../puppeteer/packages/testserver/package.json | 33 + .../puppeteer/packages/testserver/src/index.ts | 303 + .../puppeteer/packages/testserver/tsconfig.json | 11 + remote/test/puppeteer/release-please-config.json | 29 + .../test/puppeteer/test-d/ElementHandle.test-d.ts | 1024 ++ remote/test/puppeteer/test-d/JSHandle.test-d.ts | 83 + remote/test/puppeteer/test-d/NodeFor.test-d.ts | 156 + remote/test/puppeteer/test-d/puppeteer.test-d.ts | 12 + remote/test/puppeteer/test/.eslintrc.js | 13 + remote/test/puppeteer/test/README.md | 95 + remote/test/puppeteer/test/TestExpectations.json | 2234 +++ remote/test/puppeteer/test/TestSuites.json | 68 + .../test/puppeteer/test/assets/abort-request.html | 13 + .../test/puppeteer/test/assets/beforeunload.html | 10 + .../test/assets/cached/one-style-font.css | 9 + .../test/assets/cached/one-style-font.html | 2 + .../puppeteer/test/assets/cached/one-style.css | 3 + .../puppeteer/test/assets/cached/one-style.html | 2 + .../test/puppeteer/test/assets/chromium-linux.zip | Bin 0 -> 325 bytes remote/test/puppeteer/test/assets/consolelog.html | 17 + remote/test/puppeteer/test/assets/csp.html | 1 + .../test/assets/csscoverage/Dosis-Regular.ttf | Bin 0 -> 136940 bytes .../test/puppeteer/test/assets/csscoverage/OFL.txt | 95 + .../puppeteer/test/assets/csscoverage/empty.html | 3 + .../test/assets/csscoverage/involved.html | 26 + .../puppeteer/test/assets/csscoverage/media.html | 4 + .../test/assets/csscoverage/multiple.html | 8 + .../puppeteer/test/assets/csscoverage/simple.html | 6 + .../test/assets/csscoverage/sourceurl.html | 7 + .../test/assets/csscoverage/stylesheet1.css | 3 + .../test/assets/csscoverage/stylesheet2.css | 4 + .../puppeteer/test/assets/csscoverage/unused.html | 7 + .../test/puppeteer/test/assets/detect-touch.html | 12 + remote/test/puppeteer/test/assets/digits/0.png | Bin 0 -> 434 bytes remote/test/puppeteer/test/assets/digits/1.png | Bin 0 -> 346 bytes remote/test/puppeteer/test/assets/digits/2.png | Bin 0 -> 413 bytes remote/test/puppeteer/test/assets/digits/3.png | Bin 0 -> 434 bytes remote/test/puppeteer/test/assets/digits/4.png | Bin 0 -> 403 bytes remote/test/puppeteer/test/assets/digits/5.png | Bin 0 -> 422 bytes remote/test/puppeteer/test/assets/digits/6.png | Bin 0 -> 445 bytes remote/test/puppeteer/test/assets/digits/7.png | Bin 0 -> 387 bytes remote/test/puppeteer/test/assets/digits/8.png | Bin 0 -> 447 bytes remote/test/puppeteer/test/assets/digits/9.png | Bin 0 -> 437 bytes .../test/puppeteer/test/assets/dynamic-oopif.html | 10 + remote/test/puppeteer/test/assets/empty.html | 0 remote/test/puppeteer/test/assets/error.html | 15 + remote/test/puppeteer/test/assets/es6/.eslintrc | 5 + remote/test/puppeteer/test/assets/es6/es6import.js | 2 + remote/test/puppeteer/test/assets/es6/es6module.js | 1 + .../puppeteer/test/assets/es6/es6pathimport.js | 2 + remote/test/puppeteer/test/assets/favicon.ico | Bin 0 -> 70 bytes .../test/puppeteer/test/assets/file-to-upload.txt | 1 + .../firefox-75.0a1.en-US.linux-x86_64.tar.bz2 | Bin 0 -> 211 bytes .../test/puppeteer/test/assets/frames/frame.html | 8 + .../puppeteer/test/assets/frames/frameset.html | 8 + .../puppeteer/test/assets/frames/lazy-frame.html | 3 + .../test/assets/frames/nested-frames.html | 25 + .../test/assets/frames/one-frame-url-fragment.html | 1 + .../puppeteer/test/assets/frames/one-frame.html | 1 + remote/test/puppeteer/test/assets/frames/script.js | 1 + remote/test/puppeteer/test/assets/frames/style.css | 3 + .../puppeteer/test/assets/frames/two-frames.html | 13 + remote/test/puppeteer/test/assets/global-var.html | 3 + remote/test/puppeteer/test/assets/grid.html | 52 + remote/test/puppeteer/test/assets/historyapi.html | 5 + .../test/puppeteer/test/assets/idle-detector.html | 23 + remote/test/puppeteer/test/assets/initiator.html | 2 + remote/test/puppeteer/test/assets/initiator.js | 8 + remote/test/puppeteer/test/assets/injectedfile.js | 2 + .../test/puppeteer/test/assets/injectedstyle.css | 3 + remote/test/puppeteer/test/assets/inline-svg.html | 14 + .../test/puppeteer/test/assets/inner-frame1.html | 10 + .../test/puppeteer/test/assets/inner-frame2.html | 1 + .../test/puppeteer/test/assets/input/button.html | 16 + .../test/puppeteer/test/assets/input/checkbox.html | 42 + .../puppeteer/test/assets/input/drag-and-drop.html | 46 + .../puppeteer/test/assets/input/fileupload.html | 9 + .../test/puppeteer/test/assets/input/keyboard.html | 42 + .../puppeteer/test/assets/input/mouse-helper.js | 74 + .../puppeteer/test/assets/input/rotatedButton.html | 21 + .../puppeteer/test/assets/input/scrollable.html | 37 + .../test/puppeteer/test/assets/input/select.html | 70 + .../test/puppeteer/test/assets/input/textarea.html | 15 + .../puppeteer/test/assets/input/touches-move.html | 65 + .../test/puppeteer/test/assets/input/touches.html | 35 + remote/test/puppeteer/test/assets/input/wheel.html | 43 + .../puppeteer/test/assets/jscoverage/eval.html | 1 + .../puppeteer/test/assets/jscoverage/involved.html | 16 + .../puppeteer/test/assets/jscoverage/multiple.html | 2 + .../puppeteer/test/assets/jscoverage/ranges.html | 2 + .../puppeteer/test/assets/jscoverage/script1.js | 1 + .../puppeteer/test/assets/jscoverage/script2.js | 1 + .../puppeteer/test/assets/jscoverage/simple.html | 2 + .../test/assets/jscoverage/sourceurl.html | 4 + .../puppeteer/test/assets/jscoverage/unused.html | 1 + .../puppeteer/test/assets/lazy-oopif-frame.html | 3 + remote/test/puppeteer/test/assets/main-frame.html | 10 + remote/test/puppeteer/test/assets/mobile.html | 1 + remote/test/puppeteer/test/assets/modernizr.js | 3 + remote/test/puppeteer/test/assets/networkidle.html | 19 + .../puppeteer/test/assets/offscreenbuttons.html | 40 + remote/test/puppeteer/test/assets/one-style.css | 3 + remote/test/puppeteer/test/assets/one-style.html | 2 + remote/test/puppeteer/test/assets/oopif.html | 2 + remote/test/puppeteer/test/assets/p-selectors.html | 13 + remote/test/puppeteer/test/assets/pdf.html | 11 + remote/test/puppeteer/test/assets/playground.html | 15 + remote/test/puppeteer/test/assets/popup/popup.html | 9 + .../puppeteer/test/assets/popup/window-open.html | 11 + remote/test/puppeteer/test/assets/pptr.png | Bin 0 -> 6138 bytes remote/test/puppeteer/test/assets/resetcss.html | 50 + .../test/puppeteer/test/assets/self-request.html | 5 + .../test/assets/serviceworkers/empty/sw.html | 3 + .../test/assets/serviceworkers/empty/sw.js | 0 .../assets/serviceworkers/extension/background.js | 1 + .../assets/serviceworkers/extension/manifest.json | 9 + .../test/assets/serviceworkers/fetch/style.css | 3 + .../test/assets/serviceworkers/fetch/sw.html | 5 + .../test/assets/serviceworkers/fetch/sw.js | 7 + remote/test/puppeteer/test/assets/shadow.html | 17 + .../test/assets/simple-extension/content-script.js | 2 + .../test/assets/simple-extension/index.js | 2 + .../test/assets/simple-extension/manifest.json | 14 + remote/test/puppeteer/test/assets/simple.json | 1 + remote/test/puppeteer/test/assets/tamperable.html | 3 + remote/test/puppeteer/test/assets/title.html | 1 + .../test/puppeteer/test/assets/worker/worker.html | 14 + remote/test/puppeteer/test/assets/worker/worker.js | 16 + remote/test/puppeteer/test/assets/wrappedlink.html | 32 + remote/test/puppeteer/test/fixtures/closeme.js | 5 + remote/test/puppeteer/test/fixtures/dumpio.js | 10 + .../test/golden-chrome/csscoverage-involved.txt | 16 + .../puppeteer/test/golden-chrome/grid-cell-0.png | Bin 0 -> 436 bytes .../puppeteer/test/golden-chrome/grid-cell-1.png | Bin 0 -> 276 bytes .../puppeteer/test/golden-chrome/grid-cell-2.png | Bin 0 -> 428 bytes .../puppeteer/test/golden-chrome/grid-cell-3.png | Bin 0 -> 448 bytes .../test/golden-chrome/jscoverage-involved.txt | 36 + .../test/golden-chrome/mock-binary-response.png | Bin 0 -> 6789 bytes .../golden-chrome/screenshot-clip-odd-size.png | Bin 0 -> 81 bytes .../golden-chrome/screenshot-clip-rect-scale2.png | Bin 0 -> 8472 bytes .../test/golden-chrome/screenshot-clip-rect.png | Bin 0 -> 1962 bytes .../screenshot-element-bounding-box.png | Bin 0 -> 461 bytes .../screenshot-element-fractional-offset.png | Bin 0 -> 138 bytes .../screenshot-element-fractional.png | Bin 0 -> 138 bytes .../screenshot-element-larger-than-viewport.png | Bin 0 -> 2807 bytes .../screenshot-element-padding-border.png | Bin 0 -> 168 bytes .../golden-chrome/screenshot-element-rotate.png | Bin 0 -> 2342 bytes .../screenshot-element-scrolled-into-view.png | Bin 0 -> 168 bytes .../golden-chrome/screenshot-grid-fullpage.png | Bin 0 -> 74972 bytes .../golden-chrome/screenshot-offscreen-clip.png | Bin 0 -> 266 bytes .../test/golden-chrome/screenshot-sanity.png | Bin 0 -> 36252 bytes .../puppeteer/test/golden-chrome/transparent.png | Bin 0 -> 119 bytes .../vision-deficiency-achromatopsia.png | Bin 0 -> 33569 bytes .../vision-deficiency-blurredVision.png | Bin 0 -> 81174 bytes .../vision-deficiency-deuteranopia.png | Bin 0 -> 37483 bytes .../golden-chrome/vision-deficiency-protanopia.png | Bin 0 -> 36282 bytes .../golden-chrome/vision-deficiency-tritanopia.png | Bin 0 -> 37282 bytes remote/test/puppeteer/test/golden-chrome/white.jpg | Bin 0 -> 357 bytes .../puppeteer/test/golden-firefox/grid-cell-0.png | Bin 0 -> 331 bytes .../puppeteer/test/golden-firefox/grid-cell-1.png | Bin 0 -> 201 bytes .../golden-firefox/screenshot-clip-odd-size.png | Bin 0 -> 75 bytes .../golden-firefox/screenshot-clip-rect-scale2.png | Bin 0 -> 8472 bytes .../test/golden-firefox/screenshot-clip-rect.png | Bin 0 -> 1371 bytes .../screenshot-element-bounding-box.png | Bin 0 -> 311 bytes .../screenshot-element-fractional-offset.png | Bin 0 -> 113 bytes .../screenshot-element-fractional.png | Bin 0 -> 109 bytes .../screenshot-element-larger-than-viewport.png | Bin 0 -> 2797 bytes .../screenshot-element-padding-border.png | Bin 0 -> 153 bytes .../golden-firefox/screenshot-element-rotate.png | Bin 0 -> 1800 bytes .../screenshot-element-scrolled-into-view.png | Bin 0 -> 153 bytes .../golden-firefox/screenshot-grid-fullpage.png | Bin 0 -> 55662 bytes .../golden-firefox/screenshot-offscreen-clip.png | Bin 0 -> 279 bytes .../test/golden-firefox/screenshot-sanity.png | Bin 0 -> 26146 bytes .../test/puppeteer/test/installation/.mocharc.cjs | 21 + .../installation/assets/puppeteer-core/imports.js | 19 + .../installation/assets/puppeteer-core/launch.js | 32 + .../assets/puppeteer-core/requires.cjs | 19 + .../test/installation/assets/puppeteer/basic.js | 25 + .../puppeteer/configuration/.puppeteerrc.cjs | 8 + .../test/installation/assets/puppeteer/imports.js | 20 + .../installation/assets/puppeteer/requires.cjs | 20 + .../assets/puppeteer/webpack/webpack.config.js | 25 + .../test/puppeteer/test/installation/package.json | 54 + .../test/installation/src/browsers.spec.ts | 39 + .../puppeteer/test/installation/src/constants.ts | 35 + .../src/puppeteer-configuration.spec.ts | 48 + .../test/installation/src/puppeteer-core.spec.ts | 44 + .../installation/src/puppeteer-firefox.spec.ts | 47 + .../installation/src/puppeteer-webpack.spec.ts | 57 + .../test/installation/src/puppeteer.spec.ts | 46 + .../puppeteer/test/installation/src/sandbox.ts | 137 + .../test/puppeteer/test/installation/src/util.ts | 27 + .../test/puppeteer/test/installation/tsconfig.json | 10 + remote/test/puppeteer/test/package.json | 30 + remote/test/puppeteer/test/src/CDPSession.spec.ts | 139 + .../puppeteer/test/src/DeviceRequestPrompt.spec.ts | 457 + .../test/puppeteer/test/src/EventEmitter.spec.ts | 170 + .../test/puppeteer/test/src/NetworkManager.spec.ts | 1537 ++ .../test/puppeteer/test/src/TargetManager.spec.ts | 110 + .../test/puppeteer/test/src/accessibility.spec.ts | 582 + .../puppeteer/test/src/ariaqueryhandler.spec.ts | 698 + .../puppeteer/test/src/bidi/Connection.spec.ts | 61 + remote/test/puppeteer/test/src/browser.spec.ts | 91 + .../test/puppeteer/test/src/browsercontext.spec.ts | 243 + .../test/puppeteer/test/src/chromiumonly.spec.ts | 172 + remote/test/puppeteer/test/src/click.spec.ts | 492 + remote/test/puppeteer/test/src/cookies.spec.ts | 570 + remote/test/puppeteer/test/src/coverage.spec.ts | 356 + .../test/src/defaultbrowsercontext.spec.ts | 115 + remote/test/puppeteer/test/src/dialog.spec.ts | 79 + remote/test/puppeteer/test/src/diffstyle.css | 13 + .../test/puppeteer/test/src/drag-and-drop.spec.ts | 197 + .../test/puppeteer/test/src/elementhandle.spec.ts | 802 + remote/test/puppeteer/test/src/emulation.spec.ts | 516 + remote/test/puppeteer/test/src/evaluation.spec.ts | 600 + remote/test/puppeteer/test/src/fixtures.spec.ts | 112 + remote/test/puppeteer/test/src/frame.spec.ts | 350 + remote/test/puppeteer/test/src/golden-utils.ts | 173 + remote/test/puppeteer/test/src/headful.spec.ts | 438 + .../test/puppeteer/test/src/idle_override.spec.ts | 95 + .../puppeteer/test/src/ignorehttpserrors.spec.ts | 143 + remote/test/puppeteer/test/src/injected.spec.ts | 65 + remote/test/puppeteer/test/src/input.spec.ts | 409 + remote/test/puppeteer/test/src/jshandle.spec.ts | 339 + remote/test/puppeteer/test/src/keyboard.spec.ts | 557 + remote/test/puppeteer/test/src/launcher.spec.ts | 897 + remote/test/puppeteer/test/src/mocha-utils.ts | 330 + remote/test/puppeteer/test/src/mouse.spec.ts | 354 + remote/test/puppeteer/test/src/navigation.spec.ts | 850 + remote/test/puppeteer/test/src/network.spec.ts | 863 + remote/test/puppeteer/test/src/oopif.spec.ts | 454 + remote/test/puppeteer/test/src/page.spec.ts | 2330 +++ remote/test/puppeteer/test/src/proxy.spec.ts | 236 + .../test/puppeteer/test/src/queryhandler.spec.ts | 594 + .../test/puppeteer/test/src/queryselector.spec.ts | 505 + .../src/requestinterception-experimental.spec.ts | 983 ++ .../puppeteer/test/src/requestinterception.spec.ts | 934 + remote/test/puppeteer/test/src/screenshot.spec.ts | 388 + remote/test/puppeteer/test/src/target.spec.ts | 336 + remote/test/puppeteer/test/src/touchscreen.spec.ts | 80 + remote/test/puppeteer/test/src/tracing.spec.ts | 157 + remote/test/puppeteer/test/src/utils.ts | 150 + remote/test/puppeteer/test/src/waittask.spec.ts | 867 + remote/test/puppeteer/test/src/worker.spec.ts | 123 + remote/test/puppeteer/test/tsconfig.json | 11 + remote/test/puppeteer/tools/analyze_issue.mjs | 280 + remote/test/puppeteer/tools/assets/verify_issue.ts | 68 + remote/test/puppeteer/tools/chmod.ts | 27 + remote/test/puppeteer/tools/cp.ts | 22 + remote/test/puppeteer/tools/ensure-pinned-deps.ts | 59 + remote/test/puppeteer/tools/generate-matrix.js | 43 + remote/test/puppeteer/tools/generate_docs.ts | 152 + .../tools/generate_module_package_json.ts | 26 + .../tools/get_deprecated_version_range.js | 27 + .../tools/internal/custom_markdown_action.ts | 31 + .../tools/internal/custom_markdown_documenter.ts | 1481 ++ remote/test/puppeteer/tools/internal/job.ts | 153 + remote/test/puppeteer/tools/internal/util.ts | 14 + remote/test/puppeteer/tools/mochaRunner/README.md | 73 + .../puppeteer/tools/mochaRunner/src/interface.ts | 130 + .../test/puppeteer/tools/mochaRunner/src/main.ts | 259 + .../puppeteer/tools/mochaRunner/src/reporter.ts | 26 + .../test/puppeteer/tools/mochaRunner/src/test.ts | 134 + .../test/puppeteer/tools/mochaRunner/src/types.ts | 67 + .../test/puppeteer/tools/mochaRunner/src/utils.ts | 265 + .../test/puppeteer/tools/mochaRunner/tsconfig.json | 11 + .../test/puppeteer/tools/remove_version_suffix.js | 26 + .../test/puppeteer/tools/sort-test-expectations.js | 59 + .../tools/third_party/validate-licenses.ts | 153 + remote/test/puppeteer/tools/tsconfig.json | 4 + remote/test/puppeteer/tsconfig.base.json | 32 + remote/test/puppeteer/versions.js | 73 + remote/webdriver-bidi/NewSessionHandler.sys.mjs | 57 + remote/webdriver-bidi/RemoteValue.sys.mjs | 1066 ++ remote/webdriver-bidi/WebDriverBiDi.sys.mjs | 242 + .../webdriver-bidi/WebDriverBiDiConnection.sys.mjs | 214 + remote/webdriver-bidi/jar.mn | 34 + .../webdriver-bidi/modules/ModuleRegistry.sys.mjs | 42 + .../modules/WindowGlobalBiDiModule.sys.mjs | 18 + .../modules/root/browsingContext.sys.mjs | 812 + remote/webdriver-bidi/modules/root/input.sys.mjs | 99 + remote/webdriver-bidi/modules/root/log.sys.mjs | 15 + remote/webdriver-bidi/modules/root/network.sys.mjs | 320 + remote/webdriver-bidi/modules/root/script.sys.mjs | 747 + remote/webdriver-bidi/modules/root/session.sys.mjs | 405 + .../windowglobal-in-root/browsingContext.sys.mjs | 31 + .../modules/windowglobal-in-root/log.sys.mjs | 28 + .../modules/windowglobal-in-root/script.sys.mjs | 28 + .../modules/windowglobal/browsingContext.sys.mjs | 159 + .../modules/windowglobal/input.sys.mjs | 103 + .../modules/windowglobal/log.sys.mjs | 258 + .../modules/windowglobal/script.sys.mjs | 483 + remote/webdriver-bidi/moz.build | 14 + remote/webdriver-bidi/test/browser/browser.ini | 5 + .../test/browser/browser_RemoteValue.js | 1633 ++ .../test/xpcshell/test_WebDriverBiDiConnection.js | 25 + remote/webdriver-bidi/test/xpcshell/xpcshell.ini | 5 + 965 files changed, 180193 insertions(+) create mode 100644 remote/.gitignore create mode 100644 remote/README.md create mode 100644 remote/cdp/CDP.sys.mjs create mode 100644 remote/cdp/CDPConnection.sys.mjs create mode 100644 remote/cdp/Error.sys.mjs create mode 100644 remote/cdp/JSONHandler.sys.mjs create mode 100644 remote/cdp/Protocol.sys.mjs create mode 100644 remote/cdp/StreamRegistry.sys.mjs create mode 100644 remote/cdp/domains/ContentProcessDomain.sys.mjs create mode 100644 remote/cdp/domains/ContentProcessDomains.sys.mjs create mode 100644 remote/cdp/domains/Domain.sys.mjs create mode 100644 remote/cdp/domains/DomainCache.sys.mjs create mode 100644 remote/cdp/domains/ParentProcessDomains.sys.mjs create mode 100644 remote/cdp/domains/content/DOM.sys.mjs create mode 100644 remote/cdp/domains/content/Emulation.sys.mjs create mode 100644 remote/cdp/domains/content/Input.sys.mjs create mode 100644 remote/cdp/domains/content/Log.sys.mjs create mode 100644 remote/cdp/domains/content/Network.sys.mjs create mode 100644 remote/cdp/domains/content/Page.sys.mjs create mode 100644 remote/cdp/domains/content/Performance.sys.mjs create mode 100644 remote/cdp/domains/content/Runtime.sys.mjs create mode 100644 remote/cdp/domains/content/Security.sys.mjs create mode 100644 remote/cdp/domains/content/runtime/ExecutionContext.sys.mjs create mode 100644 remote/cdp/domains/parent/Browser.sys.mjs create mode 100644 remote/cdp/domains/parent/Emulation.sys.mjs create mode 100644 remote/cdp/domains/parent/Fetch.sys.mjs create mode 100644 remote/cdp/domains/parent/IO.sys.mjs create mode 100644 remote/cdp/domains/parent/Input.sys.mjs create mode 100644 remote/cdp/domains/parent/Network.sys.mjs create mode 100644 remote/cdp/domains/parent/Page.sys.mjs create mode 100644 remote/cdp/domains/parent/Security.sys.mjs create mode 100644 remote/cdp/domains/parent/SystemInfo.sys.mjs create mode 100644 remote/cdp/domains/parent/Target.sys.mjs create mode 100644 remote/cdp/domains/parent/page/DialogHandler.sys.mjs create mode 100644 remote/cdp/jar.mn create mode 100644 remote/cdp/moz.build create mode 100644 remote/cdp/observers/ChannelEventSink.sys.mjs create mode 100644 remote/cdp/observers/ContextObserver.sys.mjs create mode 100644 remote/cdp/observers/NetworkObserver.sys.mjs create mode 100644 remote/cdp/observers/TargetObserver.sys.mjs create mode 100644 remote/cdp/sessions/ContentProcessSession.sys.mjs create mode 100644 remote/cdp/sessions/MainProcessSession.sys.mjs create mode 100644 remote/cdp/sessions/Session.sys.mjs create mode 100644 remote/cdp/sessions/TabSession.sys.mjs create mode 100644 remote/cdp/sessions/frame-script.js create mode 100644 remote/cdp/targets/MainProcessTarget.sys.mjs create mode 100644 remote/cdp/targets/TabTarget.sys.mjs create mode 100644 remote/cdp/targets/Target.sys.mjs create mode 100644 remote/cdp/targets/TargetList.sys.mjs create mode 100644 remote/cdp/test/browser/README.md create mode 100644 remote/cdp/test/browser/browser.ini create mode 100644 remote/cdp/test/browser/browser_agent.js create mode 100644 remote/cdp/test/browser/browser_cdp.js create mode 100644 remote/cdp/test/browser/browser_cdp_only.ini create mode 100644 remote/cdp/test/browser/browser_httpd.js create mode 100644 remote/cdp/test/browser/browser_interface.js create mode 100644 remote/cdp/test/browser/browser_main_target.js create mode 100644 remote/cdp/test/browser/browser_session.js create mode 100644 remote/cdp/test/browser/browser_tabs.js create mode 100644 remote/cdp/test/browser/chrome-remote-interface.js create mode 100644 remote/cdp/test/browser/dom/browser.ini create mode 100644 remote/cdp/test/browser/dom/browser_describeNode.js create mode 100644 remote/cdp/test/browser/dom/browser_resolveNode.js create mode 100644 remote/cdp/test/browser/dom/head.js create mode 100644 remote/cdp/test/browser/emulation/browser.ini create mode 100644 remote/cdp/test/browser/emulation/browser_setDeviceMetricsOverride.js create mode 100644 remote/cdp/test/browser/emulation/browser_setTouchEmulationEnabled.js create mode 100644 remote/cdp/test/browser/emulation/browser_setUserAgentOverride.js create mode 100644 remote/cdp/test/browser/emulation/head.js create mode 100644 remote/cdp/test/browser/fetch/browser.ini create mode 100644 remote/cdp/test/browser/fetch/browser_disable.js create mode 100644 remote/cdp/test/browser/fetch/head.js create mode 100644 remote/cdp/test/browser/head.js create mode 100644 remote/cdp/test/browser/input/browser.ini create mode 100644 remote/cdp/test/browser/input/browser_dispatchKeyEvent.js create mode 100644 remote/cdp/test/browser/input/browser_dispatchKeyEvent_events.js create mode 100644 remote/cdp/test/browser/input/browser_dispatchKeyEvent_race.js create mode 100644 remote/cdp/test/browser/input/browser_dispatchMouseEvent.js create mode 100644 remote/cdp/test/browser/input/doc_dispatchKeyEvent_race.html create mode 100644 remote/cdp/test/browser/input/doc_events.html create mode 100644 remote/cdp/test/browser/input/head.js create mode 100644 remote/cdp/test/browser/io/browser.ini create mode 100644 remote/cdp/test/browser/io/browser_close.js create mode 100644 remote/cdp/test/browser/io/browser_read.js create mode 100644 remote/cdp/test/browser/io/head.js create mode 100644 remote/cdp/test/browser/log/browser.ini create mode 100644 remote/cdp/test/browser/log/browser_entryAdded.js create mode 100644 remote/cdp/test/browser/log/head.js create mode 100644 remote/cdp/test/browser/network/browser.ini create mode 100644 remote/cdp/test/browser/network/browser_deleteCookies.js create mode 100644 remote/cdp/test/browser/network/browser_emulateNetworkConditions.js create mode 100644 remote/cdp/test/browser/network/browser_getAllCookies.js create mode 100644 remote/cdp/test/browser/network/browser_getCookies.js create mode 100644 remote/cdp/test/browser/network/browser_navigationEvents.js create mode 100644 remote/cdp/test/browser/network/browser_requestWillBeSent.js create mode 100644 remote/cdp/test/browser/network/browser_responseReceived.js create mode 100644 remote/cdp/test/browser/network/browser_setCacheDisabled.js create mode 100644 remote/cdp/test/browser/network/browser_setCookie.js create mode 100644 remote/cdp/test/browser/network/browser_setCookies.js create mode 100644 remote/cdp/test/browser/network/browser_setUserAgentOverride.js create mode 100644 remote/cdp/test/browser/network/doc_empty.html create mode 100644 remote/cdp/test/browser/network/doc_frameset.html create mode 100644 remote/cdp/test/browser/network/doc_get_cookies_frame.html create mode 100644 remote/cdp/test/browser/network/doc_get_cookies_page.html create mode 100644 remote/cdp/test/browser/network/doc_networkEvents.html create mode 100644 remote/cdp/test/browser/network/file_framesetEvents.js create mode 100644 remote/cdp/test/browser/network/file_networkEvents.js create mode 100644 remote/cdp/test/browser/network/head.js create mode 100644 remote/cdp/test/browser/network/sjs-cookies.sjs create mode 100644 remote/cdp/test/browser/page/browser.ini create mode 100644 remote/cdp/test/browser/page/browser_bringToFront.js create mode 100644 remote/cdp/test/browser/page/browser_captureScreenshot.js create mode 100644 remote/cdp/test/browser/page/browser_createIsolatedWorld.js create mode 100644 remote/cdp/test/browser/page/browser_domContentEventFired.js create mode 100644 remote/cdp/test/browser/page/browser_frameAttached.js create mode 100644 remote/cdp/test/browser/page/browser_frameDetached.js create mode 100644 remote/cdp/test/browser/page/browser_frameNavigated.js create mode 100644 remote/cdp/test/browser/page/browser_frameStartedLoading.js create mode 100644 remote/cdp/test/browser/page/browser_frameStoppedLoading.js create mode 100644 remote/cdp/test/browser/page/browser_getFrameTree.js create mode 100644 remote/cdp/test/browser/page/browser_getLayoutMetrics.js create mode 100644 remote/cdp/test/browser/page/browser_getNavigationHistory.js create mode 100644 remote/cdp/test/browser/page/browser_javascriptDialog_alert.js create mode 100644 remote/cdp/test/browser/page/browser_javascriptDialog_beforeunload.js create mode 100644 remote/cdp/test/browser/page/browser_javascriptDialog_confirm.js create mode 100644 remote/cdp/test/browser/page/browser_javascriptDialog_otherTarget.js create mode 100644 remote/cdp/test/browser/page/browser_javascriptDialog_prompt.js create mode 100644 remote/cdp/test/browser/page/browser_lifecycleEvent.js create mode 100644 remote/cdp/test/browser/page/browser_loadEventFired.js create mode 100644 remote/cdp/test/browser/page/browser_navigate.js create mode 100644 remote/cdp/test/browser/page/browser_navigateToHistoryEntry.js create mode 100644 remote/cdp/test/browser/page/browser_navigatedWithinDocument.js create mode 100644 remote/cdp/test/browser/page/browser_navigationEvents.js create mode 100644 remote/cdp/test/browser/page/browser_printToPDF.js create mode 100644 remote/cdp/test/browser/page/browser_reload.js create mode 100644 remote/cdp/test/browser/page/browser_runtimeEvents.js create mode 100644 remote/cdp/test/browser/page/browser_scriptToEvaluateOnNewDocument.js create mode 100644 remote/cdp/test/browser/page/doc_empty.html create mode 100644 remote/cdp/test/browser/page/doc_frame.html create mode 100644 remote/cdp/test/browser/page/doc_frameset_multi.html create mode 100644 remote/cdp/test/browser/page/doc_frameset_nested.html create mode 100644 remote/cdp/test/browser/page/doc_frameset_single.html create mode 100644 remote/cdp/test/browser/page/head.js create mode 100644 remote/cdp/test/browser/page/sjs_redirect.sjs create mode 100644 remote/cdp/test/browser/runtime/browser.ini create mode 100644 remote/cdp/test/browser/runtime/browser_callFunctionOn.js create mode 100644 remote/cdp/test/browser/runtime/browser_callFunctionOn_awaitPromise.js create mode 100644 remote/cdp/test/browser/runtime/browser_callFunctionOn_returnByValue.js create mode 100644 remote/cdp/test/browser/runtime/browser_consoleAPICalled.js create mode 100644 remote/cdp/test/browser/runtime/browser_evaluate.js create mode 100644 remote/cdp/test/browser/runtime/browser_evaluate_awaitPromise.js create mode 100644 remote/cdp/test/browser/runtime/browser_evaluate_returnByValue.js create mode 100644 remote/cdp/test/browser/runtime/browser_exceptionThrown.js create mode 100644 remote/cdp/test/browser/runtime/browser_executionContextEvents.js create mode 100644 remote/cdp/test/browser/runtime/browser_getProperties.js create mode 100644 remote/cdp/test/browser/runtime/browser_remoteObjects.js create mode 100644 remote/cdp/test/browser/runtime/browser_withDefaultPrefs.js create mode 100644 remote/cdp/test/browser/runtime/browser_with_default_prefs.ini create mode 100644 remote/cdp/test/browser/runtime/doc_console_events.html create mode 100644 remote/cdp/test/browser/runtime/doc_console_events_onload.html create mode 100644 remote/cdp/test/browser/runtime/doc_empty.html create mode 100644 remote/cdp/test/browser/runtime/doc_frame.html create mode 100644 remote/cdp/test/browser/runtime/doc_frameset_single.html create mode 100644 remote/cdp/test/browser/runtime/head.js create mode 100644 remote/cdp/test/browser/security/browser.ini create mode 100644 remote/cdp/test/browser/security/browser_setIgnoreCertificateErrors.js create mode 100644 remote/cdp/test/browser/security/head.js create mode 100644 remote/cdp/test/browser/systemInfo/browser.ini create mode 100644 remote/cdp/test/browser/systemInfo/browser_getProcessInfo.js create mode 100644 remote/cdp/test/browser/systemInfo/head.js create mode 100644 remote/cdp/test/browser/target/browser.ini create mode 100644 remote/cdp/test/browser/target/browser_activateTarget.js create mode 100644 remote/cdp/test/browser/target/browser_attachToTarget.js create mode 100644 remote/cdp/test/browser/target/browser_attachedToTarget.js create mode 100644 remote/cdp/test/browser/target/browser_browserContext.js create mode 100644 remote/cdp/test/browser/target/browser_closeTarget.js create mode 100644 remote/cdp/test/browser/target/browser_createTarget.js create mode 100644 remote/cdp/test/browser/target/browser_getTargets.js create mode 100644 remote/cdp/test/browser/target/browser_sendMessageToTarget.js create mode 100644 remote/cdp/test/browser/target/browser_setDiscoverTargets.js create mode 100644 remote/cdp/test/browser/target/browser_targetCreated.js create mode 100644 remote/cdp/test/browser/target/browser_targetDestroyed.js create mode 100644 remote/cdp/test/browser/target/doc_test.html create mode 100644 remote/cdp/test/browser/target/head.js create mode 100644 remote/cdp/test/xpcshell/test_CDPConnection.js create mode 100644 remote/cdp/test/xpcshell/test_DomainCache.js create mode 100644 remote/cdp/test/xpcshell/test_Error.js create mode 100644 remote/cdp/test/xpcshell/test_Session.js create mode 100644 remote/cdp/test/xpcshell/test_StreamRegistry.js create mode 100644 remote/cdp/test/xpcshell/xpcshell.ini create mode 100644 remote/components/Marionette.sys.mjs create mode 100644 remote/components/RemoteAgent.sys.mjs create mode 100644 remote/components/components.conf create mode 100644 remote/components/moz.build create mode 100644 remote/components/nsIMarionette.idl create mode 100644 remote/components/nsIRemoteAgent.idl create mode 100644 remote/doc/Building.md create mode 100644 remote/doc/CodeStyle.md create mode 100644 remote/doc/Debugging.md create mode 100644 remote/doc/Prefs.md create mode 100644 remote/doc/Security.md create mode 100644 remote/doc/Testing.md create mode 100644 remote/doc/cdp/Architecture.md create mode 100644 remote/doc/cdp/PuppeteerVendor.md create mode 100644 remote/doc/cdp/RequiredPreferences.md create mode 100644 remote/doc/cdp/Usage.md create mode 100644 remote/doc/cdp/index.rst create mode 100644 remote/doc/index.rst create mode 100644 remote/doc/marionette/Building.md create mode 100644 remote/doc/marionette/CodeStyle.md create mode 100644 remote/doc/marionette/Contributing.md create mode 100644 remote/doc/marionette/Debugging.md create mode 100644 remote/doc/marionette/Intro.md create mode 100644 remote/doc/marionette/NewContributors.md create mode 100644 remote/doc/marionette/Patches.md create mode 100644 remote/doc/marionette/Prefs.md create mode 100644 remote/doc/marionette/Protocol.md create mode 100644 remote/doc/marionette/PythonTests.md create mode 100644 remote/doc/marionette/SeleniumAtoms.md create mode 100644 remote/doc/marionette/Taskcluster.md create mode 100644 remote/doc/marionette/Testing.md create mode 100644 remote/doc/marionette/index.rst create mode 100644 remote/doc/messagehandler/Intro.md create mode 100644 remote/doc/messagehandler/SimpleExample.md create mode 100644 remote/doc/messagehandler/index.rst create mode 100644 remote/jar.mn create mode 100644 remote/mach_commands.py create mode 100644 remote/marionette/.eslintrc.js create mode 100644 remote/marionette/README create mode 100644 remote/marionette/accessibility.sys.mjs create mode 100644 remote/marionette/actors/MarionetteCommandsChild.sys.mjs create mode 100644 remote/marionette/actors/MarionetteCommandsParent.sys.mjs create mode 100644 remote/marionette/actors/MarionetteEventsChild.sys.mjs create mode 100644 remote/marionette/actors/MarionetteEventsParent.sys.mjs create mode 100644 remote/marionette/actors/MarionetteReftestChild.sys.mjs create mode 100644 remote/marionette/actors/MarionetteReftestParent.sys.mjs create mode 100644 remote/marionette/addon.sys.mjs create mode 100644 remote/marionette/atom.sys.mjs create mode 100644 remote/marionette/browser.sys.mjs create mode 100644 remote/marionette/cert.sys.mjs create mode 100644 remote/marionette/chrome/reftest.xhtml create mode 100644 remote/marionette/chrome/test.xhtml create mode 100644 remote/marionette/chrome/test2.xhtml create mode 100644 remote/marionette/chrome/test_dialog.dtd create mode 100644 remote/marionette/chrome/test_dialog.properties create mode 100644 remote/marionette/chrome/test_dialog.xhtml create mode 100644 remote/marionette/chrome/test_menupopup.xhtml create mode 100644 remote/marionette/chrome/test_nested_iframe.xhtml create mode 100644 remote/marionette/chrome/test_no_xul.xhtml create mode 100644 remote/marionette/cookie.sys.mjs create mode 100644 remote/marionette/driver.sys.mjs create mode 100644 remote/marionette/element.sys.mjs create mode 100644 remote/marionette/evaluate.sys.mjs create mode 100644 remote/marionette/event.sys.mjs create mode 100644 remote/marionette/interaction.sys.mjs create mode 100644 remote/marionette/jar.mn create mode 100644 remote/marionette/json.sys.mjs create mode 100644 remote/marionette/l10n.sys.mjs create mode 100644 remote/marionette/legacyaction.sys.mjs create mode 100644 remote/marionette/message.sys.mjs create mode 100644 remote/marionette/modal.sys.mjs create mode 100644 remote/marionette/moz.build create mode 100644 remote/marionette/navigate.sys.mjs create mode 100644 remote/marionette/packets.sys.mjs create mode 100644 remote/marionette/permissions.sys.mjs create mode 100644 remote/marionette/prefs.sys.mjs create mode 100644 remote/marionette/reftest-content.js create mode 100644 remote/marionette/reftest.sys.mjs create mode 100644 remote/marionette/server.sys.mjs create mode 100644 remote/marionette/stream-utils.sys.mjs create mode 100644 remote/marionette/sync.sys.mjs create mode 100644 remote/marionette/test/README create mode 100644 remote/marionette/test/xpcshell/.eslintrc.js create mode 100644 remote/marionette/test/xpcshell/README create mode 100644 remote/marionette/test/xpcshell/head.js create mode 100644 remote/marionette/test/xpcshell/test_actors.js create mode 100644 remote/marionette/test/xpcshell/test_browser.js create mode 100644 remote/marionette/test/xpcshell/test_cookie.js create mode 100644 remote/marionette/test/xpcshell/test_element.js create mode 100644 remote/marionette/test/xpcshell/test_json.js create mode 100644 remote/marionette/test/xpcshell/test_message.js create mode 100644 remote/marionette/test/xpcshell/test_modal.js create mode 100644 remote/marionette/test/xpcshell/test_navigate.js create mode 100644 remote/marionette/test/xpcshell/test_prefs.js create mode 100644 remote/marionette/test/xpcshell/test_sync.js create mode 100644 remote/marionette/test/xpcshell/xpcshell.ini create mode 100644 remote/marionette/transport.sys.mjs create mode 100644 remote/moz.build create mode 100644 remote/server/README create mode 100644 remote/server/WebSocketHandshake.sys.mjs create mode 100644 remote/server/WebSocketTransport.sys.mjs create mode 100644 remote/shared/AppInfo.sys.mjs create mode 100644 remote/shared/Capture.sys.mjs create mode 100644 remote/shared/Format.sys.mjs create mode 100644 remote/shared/Log.sys.mjs create mode 100644 remote/shared/MobileTabBrowser.sys.mjs create mode 100644 remote/shared/Navigate.sys.mjs create mode 100644 remote/shared/PDF.sys.mjs create mode 100644 remote/shared/Realm.sys.mjs create mode 100644 remote/shared/RecommendedPreferences.sys.mjs create mode 100644 remote/shared/RemoteError.sys.mjs create mode 100644 remote/shared/Stack.sys.mjs create mode 100644 remote/shared/Sync.sys.mjs create mode 100644 remote/shared/TabManager.sys.mjs create mode 100644 remote/shared/UUID.sys.mjs create mode 100644 remote/shared/WebSocketConnection.sys.mjs create mode 100644 remote/shared/WindowManager.sys.mjs create mode 100644 remote/shared/listeners/BrowsingContextListener.sys.mjs create mode 100644 remote/shared/listeners/ConsoleAPIListener.sys.mjs create mode 100644 remote/shared/listeners/ConsoleListener.sys.mjs create mode 100644 remote/shared/listeners/LoadListener.sys.mjs create mode 100644 remote/shared/listeners/NetworkEventRecord.sys.mjs create mode 100644 remote/shared/listeners/NetworkListener.sys.mjs create mode 100644 remote/shared/listeners/test/browser/browser.ini create mode 100644 remote/shared/listeners/test/browser/browser_BrowsingContextListener.js create mode 100644 remote/shared/listeners/test/browser/browser_ConsoleAPIListener.js create mode 100644 remote/shared/listeners/test/browser/browser_ConsoleAPIListener_cached_messages.js create mode 100644 remote/shared/listeners/test/browser/browser_ConsoleListener.js create mode 100644 remote/shared/listeners/test/browser/browser_ConsoleListener_cached_messages.js create mode 100644 remote/shared/listeners/test/browser/browser_NetworkListener.js create mode 100644 remote/shared/listeners/test/browser/head.js create mode 100644 remote/shared/messagehandler/Errors.sys.mjs create mode 100644 remote/shared/messagehandler/EventsDispatcher.sys.mjs create mode 100644 remote/shared/messagehandler/MessageHandler.sys.mjs create mode 100644 remote/shared/messagehandler/MessageHandlerRegistry.sys.mjs create mode 100644 remote/shared/messagehandler/Module.sys.mjs create mode 100644 remote/shared/messagehandler/ModuleCache.sys.mjs create mode 100644 remote/shared/messagehandler/RootMessageHandler.sys.mjs create mode 100644 remote/shared/messagehandler/RootMessageHandlerRegistry.sys.mjs create mode 100644 remote/shared/messagehandler/WindowGlobalMessageHandler.sys.mjs create mode 100644 remote/shared/messagehandler/sessiondata/SessionData.sys.mjs create mode 100644 remote/shared/messagehandler/sessiondata/SessionDataReader.sys.mjs create mode 100644 remote/shared/messagehandler/test/browser/broadcast/browser.ini create mode 100644 remote/shared/messagehandler/test/browser/broadcast/browser_filter_top_browsing_context.js create mode 100644 remote/shared/messagehandler/test/browser/broadcast/browser_only_content_process.js create mode 100644 remote/shared/messagehandler/test/browser/broadcast/browser_two_tabs.js create mode 100644 remote/shared/messagehandler/test/browser/broadcast/browser_two_tabs_with_params.js create mode 100644 remote/shared/messagehandler/test/browser/broadcast/browser_two_windows.js create mode 100644 remote/shared/messagehandler/test/browser/broadcast/browser_with_frames.js create mode 100644 remote/shared/messagehandler/test/browser/broadcast/doc_messagehandler_broadcasting_xul.xhtml create mode 100644 remote/shared/messagehandler/test/browser/broadcast/head.js create mode 100644 remote/shared/messagehandler/test/browser/browser.ini create mode 100644 remote/shared/messagehandler/test/browser/browser_bfcache.js create mode 100644 remote/shared/messagehandler/test/browser/browser_events_dispatcher.js create mode 100644 remote/shared/messagehandler/test/browser/browser_events_handler.js create mode 100644 remote/shared/messagehandler/test/browser/browser_events_module.js create mode 100644 remote/shared/messagehandler/test/browser/browser_frame_context_utils.js create mode 100644 remote/shared/messagehandler/test/browser/browser_handle_command_errors.js create mode 100644 remote/shared/messagehandler/test/browser/browser_handle_command_retry.js create mode 100644 remote/shared/messagehandler/test/browser/browser_handle_simple_command.js create mode 100644 remote/shared/messagehandler/test/browser/browser_registry.js create mode 100644 remote/shared/messagehandler/test/browser/browser_session_data.js create mode 100644 remote/shared/messagehandler/test/browser/browser_session_data_browser_element.js create mode 100644 remote/shared/messagehandler/test/browser/browser_session_data_constructor_race.js create mode 100644 remote/shared/messagehandler/test/browser/browser_session_data_update.js create mode 100644 remote/shared/messagehandler/test/browser/browser_session_data_update_categories.js create mode 100644 remote/shared/messagehandler/test/browser/browser_session_data_update_contexts.js create mode 100644 remote/shared/messagehandler/test/browser/browser_windowglobal_to_root.js create mode 100644 remote/shared/messagehandler/test/browser/head.js create mode 100644 remote/shared/messagehandler/test/browser/resources/modules/ModuleRegistry.sys.mjs create mode 100644 remote/shared/messagehandler/test/browser/resources/modules/root/command.sys.mjs create mode 100644 remote/shared/messagehandler/test/browser/resources/modules/root/event.sys.mjs create mode 100644 remote/shared/messagehandler/test/browser/resources/modules/root/invalid.sys.mjs create mode 100644 remote/shared/messagehandler/test/browser/resources/modules/root/rootOnly.sys.mjs create mode 100644 remote/shared/messagehandler/test/browser/resources/modules/root/windowglobaltoroot.sys.mjs create mode 100644 remote/shared/messagehandler/test/browser/resources/modules/windowglobal-in-root/command.sys.mjs create mode 100644 remote/shared/messagehandler/test/browser/resources/modules/windowglobal-in-root/event.sys.mjs create mode 100644 remote/shared/messagehandler/test/browser/resources/modules/windowglobal/command.sys.mjs create mode 100644 remote/shared/messagehandler/test/browser/resources/modules/windowglobal/commandwindowglobalonly.sys.mjs create mode 100644 remote/shared/messagehandler/test/browser/resources/modules/windowglobal/event.sys.mjs create mode 100644 remote/shared/messagehandler/test/browser/resources/modules/windowglobal/eventemitter.sys.mjs create mode 100644 remote/shared/messagehandler/test/browser/resources/modules/windowglobal/eventnointercept.sys.mjs create mode 100644 remote/shared/messagehandler/test/browser/resources/modules/windowglobal/eventonprefchange.sys.mjs create mode 100644 remote/shared/messagehandler/test/browser/resources/modules/windowglobal/retry.sys.mjs create mode 100644 remote/shared/messagehandler/test/browser/resources/modules/windowglobal/sessiondataupdate.sys.mjs create mode 100644 remote/shared/messagehandler/test/browser/resources/modules/windowglobal/windowglobaltoroot.sys.mjs create mode 100644 remote/shared/messagehandler/test/browser/webdriver/browser.ini create mode 100644 remote/shared/messagehandler/test/browser/webdriver/browser_session_execute_command_errors.js create mode 100644 remote/shared/messagehandler/test/xpcshell/test_Errors.js create mode 100644 remote/shared/messagehandler/test/xpcshell/test_SessionData.js create mode 100644 remote/shared/messagehandler/test/xpcshell/xpcshell.ini create mode 100644 remote/shared/messagehandler/transports/BrowsingContextUtils.sys.mjs create mode 100644 remote/shared/messagehandler/transports/RootTransport.sys.mjs create mode 100644 remote/shared/messagehandler/transports/js-window-actors/MessageHandlerFrameActor.sys.mjs create mode 100644 remote/shared/messagehandler/transports/js-window-actors/MessageHandlerFrameChild.sys.mjs create mode 100644 remote/shared/messagehandler/transports/js-window-actors/MessageHandlerFrameParent.sys.mjs create mode 100644 remote/shared/moz.build create mode 100644 remote/shared/test/browser/browser.ini create mode 100644 remote/shared/test/browser/browser_TabManager.js create mode 100644 remote/shared/test/xpcshell/test_AppInfo.js create mode 100644 remote/shared/test/xpcshell/test_Format.js create mode 100644 remote/shared/test/xpcshell/test_Navigate.js create mode 100644 remote/shared/test/xpcshell/test_Realm.js create mode 100644 remote/shared/test/xpcshell/test_RecommendedPreferences.js create mode 100644 remote/shared/test/xpcshell/test_Stack.js create mode 100644 remote/shared/test/xpcshell/test_Sync.js create mode 100644 remote/shared/test/xpcshell/test_TabManager.js create mode 100644 remote/shared/test/xpcshell/test_UUID.js create mode 100644 remote/shared/test/xpcshell/xpcshell.ini create mode 100644 remote/shared/webdriver/Actions.sys.mjs create mode 100644 remote/shared/webdriver/Assert.sys.mjs create mode 100644 remote/shared/webdriver/Capabilities.sys.mjs create mode 100644 remote/shared/webdriver/Errors.sys.mjs create mode 100644 remote/shared/webdriver/KeyData.sys.mjs create mode 100644 remote/shared/webdriver/NodeCache.sys.mjs create mode 100644 remote/shared/webdriver/Session.sys.mjs create mode 100644 remote/shared/webdriver/process-actors/WebDriverProcessDataChild.sys.mjs create mode 100644 remote/shared/webdriver/process-actors/WebDriverProcessDataParent.sys.mjs create mode 100644 remote/shared/webdriver/test/xpcshell/head.js create mode 100644 remote/shared/webdriver/test/xpcshell/test_Actions.js create mode 100644 remote/shared/webdriver/test/xpcshell/test_Assert.js create mode 100644 remote/shared/webdriver/test/xpcshell/test_Capabilities.js create mode 100644 remote/shared/webdriver/test/xpcshell/test_Errors.js create mode 100644 remote/shared/webdriver/test/xpcshell/test_NodeCache.js create mode 100644 remote/shared/webdriver/test/xpcshell/test_Session.js create mode 100644 remote/shared/webdriver/test/xpcshell/xpcshell.ini create mode 100644 remote/test/puppeteer/.editorconfig create mode 100644 remote/test/puppeteer/.eslintignore create mode 100644 remote/test/puppeteer/.eslintplugin.js create mode 100644 remote/test/puppeteer/.eslintrc.js create mode 100644 remote/test/puppeteer/.eslintrc.types.cjs create mode 100644 remote/test/puppeteer/.mocharc.cjs create mode 100644 remote/test/puppeteer/.npmrc create mode 100644 remote/test/puppeteer/.prettierignore create mode 100644 remote/test/puppeteer/.prettierrc.cjs create mode 100644 remote/test/puppeteer/.release-please-manifest.json create mode 100644 remote/test/puppeteer/LICENSE create mode 100644 remote/test/puppeteer/README.md create mode 100644 remote/test/puppeteer/SECURITY.md create mode 100644 remote/test/puppeteer/commitlint.config.js create mode 100644 remote/test/puppeteer/examples/README.md create mode 100644 remote/test/puppeteer/examples/block-images.js create mode 100644 remote/test/puppeteer/examples/cross-browser.js create mode 100644 remote/test/puppeteer/examples/custom-event.js create mode 100644 remote/test/puppeteer/examples/detect-sniff.js create mode 100644 remote/test/puppeteer/examples/oopif.js create mode 100644 remote/test/puppeteer/examples/pdf.js create mode 100644 remote/test/puppeteer/examples/proxy.js create mode 100644 remote/test/puppeteer/examples/screenshot-fullpage.js create mode 100644 remote/test/puppeteer/examples/screenshot.js create mode 100644 remote/test/puppeteer/examples/search.js create mode 100644 remote/test/puppeteer/json-mocha-reporter.js create mode 100644 remote/test/puppeteer/moz.yaml create mode 100644 remote/test/puppeteer/package-lock.json create mode 100644 remote/test/puppeteer/package.json create mode 100644 remote/test/puppeteer/packages/browsers/.gitignore create mode 100644 remote/test/puppeteer/packages/browsers/.mocharc.cjs create mode 100644 remote/test/puppeteer/packages/browsers/CHANGELOG.md create mode 100644 remote/test/puppeteer/packages/browsers/README.md create mode 100644 remote/test/puppeteer/packages/browsers/api-extractor.docs.json create mode 100644 remote/test/puppeteer/packages/browsers/api-extractor.json create mode 100644 remote/test/puppeteer/packages/browsers/package.json create mode 100644 remote/test/puppeteer/packages/browsers/src/CLI.ts create mode 100644 remote/test/puppeteer/packages/browsers/src/Cache.ts create mode 100644 remote/test/puppeteer/packages/browsers/src/browser-data/browser-data.ts create mode 100644 remote/test/puppeteer/packages/browsers/src/browser-data/chrome.ts create mode 100644 remote/test/puppeteer/packages/browsers/src/browser-data/chromedriver.ts create mode 100644 remote/test/puppeteer/packages/browsers/src/browser-data/chromium.ts create mode 100644 remote/test/puppeteer/packages/browsers/src/browser-data/firefox.ts create mode 100644 remote/test/puppeteer/packages/browsers/src/browser-data/types.ts create mode 100644 remote/test/puppeteer/packages/browsers/src/debug.ts create mode 100644 remote/test/puppeteer/packages/browsers/src/detectPlatform.ts create mode 100644 remote/test/puppeteer/packages/browsers/src/fileUtil.ts create mode 100644 remote/test/puppeteer/packages/browsers/src/httpUtil.ts create mode 100644 remote/test/puppeteer/packages/browsers/src/install.ts create mode 100644 remote/test/puppeteer/packages/browsers/src/launch.ts create mode 100644 remote/test/puppeteer/packages/browsers/src/main-cli.ts create mode 100644 remote/test/puppeteer/packages/browsers/src/main.ts create mode 100644 remote/test/puppeteer/packages/browsers/src/tsconfig.cjs.json create mode 100644 remote/test/puppeteer/packages/browsers/src/tsconfig.esm.json create mode 100644 remote/test/puppeteer/packages/browsers/test/src/chrome/chrome-data.spec.ts create mode 100644 remote/test/puppeteer/packages/browsers/test/src/chrome/cli.spec.ts create mode 100644 remote/test/puppeteer/packages/browsers/test/src/chrome/install.spec.ts create mode 100644 remote/test/puppeteer/packages/browsers/test/src/chrome/launch.spec.ts create mode 100644 remote/test/puppeteer/packages/browsers/test/src/chromedriver/chromedriver-data.spec.ts create mode 100644 remote/test/puppeteer/packages/browsers/test/src/chromedriver/cli.spec.ts create mode 100644 remote/test/puppeteer/packages/browsers/test/src/chromedriver/install.spec.ts create mode 100644 remote/test/puppeteer/packages/browsers/test/src/chromium/chromium-data.spec.ts create mode 100644 remote/test/puppeteer/packages/browsers/test/src/chromium/launch.spec.ts create mode 100644 remote/test/puppeteer/packages/browsers/test/src/firefox/cli.spec.ts create mode 100644 remote/test/puppeteer/packages/browsers/test/src/firefox/firefox-data.spec.ts create mode 100644 remote/test/puppeteer/packages/browsers/test/src/firefox/install.spec.ts create mode 100644 remote/test/puppeteer/packages/browsers/test/src/firefox/launch.ts create mode 100644 remote/test/puppeteer/packages/browsers/test/src/tsconfig.json create mode 100644 remote/test/puppeteer/packages/browsers/test/src/utils.ts create mode 100644 remote/test/puppeteer/packages/browsers/test/src/versions.ts create mode 100644 remote/test/puppeteer/packages/browsers/tools/downloadTestBrowsers.mjs create mode 100644 remote/test/puppeteer/packages/browsers/tsconfig.json create mode 100644 remote/test/puppeteer/packages/ng-schematics/.eslintignore create mode 100644 remote/test/puppeteer/packages/ng-schematics/.gitignore create mode 100644 remote/test/puppeteer/packages/ng-schematics/.mocharc.cjs create mode 100644 remote/test/puppeteer/packages/ng-schematics/CHANGELOG.md create mode 100644 remote/test/puppeteer/packages/ng-schematics/README.md create mode 100644 remote/test/puppeteer/packages/ng-schematics/package-lock.json create mode 100644 remote/test/puppeteer/packages/ng-schematics/package.json create mode 100644 remote/test/puppeteer/packages/ng-schematics/src/builders/builders.json create mode 100644 remote/test/puppeteer/packages/ng-schematics/src/builders/puppeteer/index.ts create mode 100644 remote/test/puppeteer/packages/ng-schematics/src/builders/puppeteer/schema.json create mode 100644 remote/test/puppeteer/packages/ng-schematics/src/builders/puppeteer/types.ts create mode 100644 remote/test/puppeteer/packages/ng-schematics/src/schematics/collection.json create mode 100644 remote/test/puppeteer/packages/ng-schematics/src/schematics/ng-add/files/base/.puppeteerrc.cjs.template create mode 100644 remote/test/puppeteer/packages/ng-schematics/src/schematics/ng-add/files/base/e2e/tests/app.e2e.ts.template create mode 100644 remote/test/puppeteer/packages/ng-schematics/src/schematics/ng-add/files/base/e2e/tsconfig.json.template create mode 100644 remote/test/puppeteer/packages/ng-schematics/src/schematics/ng-add/files/jasmine/e2e/helpers/babel.js create mode 100644 remote/test/puppeteer/packages/ng-schematics/src/schematics/ng-add/files/jasmine/e2e/support/jasmine.json create mode 100644 remote/test/puppeteer/packages/ng-schematics/src/schematics/ng-add/files/jest/e2e/jest.config.js create mode 100644 remote/test/puppeteer/packages/ng-schematics/src/schematics/ng-add/files/mocha/e2e/.mocharc.js create mode 100644 remote/test/puppeteer/packages/ng-schematics/src/schematics/ng-add/files/mocha/e2e/babel.js create mode 100644 remote/test/puppeteer/packages/ng-schematics/src/schematics/ng-add/files/node/e2e/.gitignore.template create mode 100644 remote/test/puppeteer/packages/ng-schematics/src/schematics/ng-add/index.ts create mode 100644 remote/test/puppeteer/packages/ng-schematics/src/schematics/ng-add/schema.json create mode 100644 remote/test/puppeteer/packages/ng-schematics/src/schematics/utils/files.ts create mode 100644 remote/test/puppeteer/packages/ng-schematics/src/schematics/utils/json.ts create mode 100644 remote/test/puppeteer/packages/ng-schematics/src/schematics/utils/packages.ts create mode 100644 remote/test/puppeteer/packages/ng-schematics/src/schematics/utils/types.ts create mode 100644 remote/test/puppeteer/packages/ng-schematics/test/src/index.spec.ts create mode 100644 remote/test/puppeteer/packages/ng-schematics/tools/copySchemaFiles.js create mode 100644 remote/test/puppeteer/packages/ng-schematics/tools/sandbox.js create mode 100644 remote/test/puppeteer/packages/ng-schematics/tsconfig.json create mode 100644 remote/test/puppeteer/packages/ng-schematics/tsconfig.spec.json create mode 100644 remote/test/puppeteer/packages/puppeteer-core/.gitignore create mode 100644 remote/test/puppeteer/packages/puppeteer-core/CHANGELOG.md create mode 100644 remote/test/puppeteer/packages/puppeteer-core/api-extractor.docs.json create mode 100644 remote/test/puppeteer/packages/puppeteer-core/api-extractor.json create mode 100644 remote/test/puppeteer/packages/puppeteer-core/package.json create mode 100644 remote/test/puppeteer/packages/puppeteer-core/rollup.third_party.config.mjs create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/api/Browser.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/api/BrowserContext.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/api/ElementHandle.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/api/HTTPRequest.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/api/HTTPResponse.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/api/JSHandle.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/api/Page.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/api/api.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/Accessibility.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/AriaQueryHandler.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/Binding.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/Browser.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/BrowserConnector.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/BrowserWebSocketTransport.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/ChromeTargetManager.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/Configuration.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/Connection.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/ConnectionTransport.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/ConsoleMessage.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/Coverage.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/CustomQueryHandler.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/Debug.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/Device.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/DeviceRequestPrompt.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/Dialog.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/ElementHandle.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/EmulationManager.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/Errors.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/EventEmitter.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/ExecutionContext.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/FileChooser.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/FirefoxTargetManager.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/Frame.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/FrameManager.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/FrameTree.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/GetQueryHandler.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/HTTPRequest.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/HTTPResponse.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/HandleIterator.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/Input.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/IsolatedWorld.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/IsolatedWorlds.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/JSHandle.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/LazyArg.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/LifecycleWatcher.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/NetworkEventManager.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/NetworkManager.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/NodeWebSocketTransport.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/PDFOptions.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/PQueryHandler.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/Page.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/PierceQueryHandler.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/PredefinedNetworkConditions.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/Product.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/Puppeteer.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/PuppeteerViewport.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/QueryHandler.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/ScriptInjector.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/SecurityDetails.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/Target.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/TargetManager.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/TaskQueue.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/TextQueryHandler.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/TimeoutSettings.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/Tracing.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/USKeyboardLayout.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/WaitTask.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/WebWorker.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/XPathQueryHandler.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/bidi/BidiOverCDP.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/bidi/Browser.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/bidi/BrowserContext.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/bidi/Connection.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/bidi/Context.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/bidi/ElementHandle.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/bidi/JSHandle.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/bidi/Page.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/bidi/Serializer.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/bidi/bidi.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/bidi/utils.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/common.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/fetch.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/types.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/common/util.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/environment.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/generated/injected.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/generated/version.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/injected/ARIAQuerySelector.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/injected/CustomQuerySelector.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/injected/PQuerySelector.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/injected/PSelectorParser.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/injected/PierceQuerySelector.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/injected/Poller.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/injected/TextContent.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/injected/TextQuerySelector.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/injected/XPathQuerySelector.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/injected/injected.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/injected/util.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/node/ChromeLauncher.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/node/FirefoxLauncher.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/node/LaunchOptions.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/node/PipeTransport.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/node/ProductLauncher.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/node/PuppeteerNode.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/node/node.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/node/util/fs.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/puppeteer-core.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/revisions.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/templates/injected.ts.tmpl create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/templates/version.ts.tmpl create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/tsconfig.cjs.json create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/tsconfig.esm.json create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/util/AsyncIterableUtil.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/util/DebuggableDeferredPromise.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/util/DeferredPromise.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/util/ErrorLike.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/util/Function.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/util/assert.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/src/util/util.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/third_party/mitt/index.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/third_party/tsconfig.cjs.json create mode 100644 remote/test/puppeteer/packages/puppeteer-core/third_party/tsconfig.json create mode 100644 remote/test/puppeteer/packages/puppeteer-core/tools/ensure-correct-devtools-protocol-package.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/tools/generate_sources.ts create mode 100644 remote/test/puppeteer/packages/puppeteer-core/tsconfig.json create mode 100644 remote/test/puppeteer/packages/puppeteer/.gitignore create mode 100644 remote/test/puppeteer/packages/puppeteer/CHANGELOG.md create mode 100644 remote/test/puppeteer/packages/puppeteer/api-extractor.docs.json create mode 100644 remote/test/puppeteer/packages/puppeteer/api-extractor.json create mode 100644 remote/test/puppeteer/packages/puppeteer/install.js create mode 100644 remote/test/puppeteer/packages/puppeteer/package.json create mode 100644 remote/test/puppeteer/packages/puppeteer/src/getConfiguration.ts create mode 100644 remote/test/puppeteer/packages/puppeteer/src/node/install.ts create mode 100644 remote/test/puppeteer/packages/puppeteer/src/puppeteer.ts create mode 100644 remote/test/puppeteer/packages/puppeteer/src/tsconfig.cjs.json create mode 100644 remote/test/puppeteer/packages/puppeteer/src/tsconfig.esm.json create mode 100644 remote/test/puppeteer/packages/puppeteer/tsconfig.json create mode 100644 remote/test/puppeteer/packages/testserver/CHANGELOG.md create mode 100644 remote/test/puppeteer/packages/testserver/LICENSE create mode 100644 remote/test/puppeteer/packages/testserver/README.md create mode 100644 remote/test/puppeteer/packages/testserver/cert.pem create mode 100644 remote/test/puppeteer/packages/testserver/key.pem create mode 100644 remote/test/puppeteer/packages/testserver/package.json create mode 100644 remote/test/puppeteer/packages/testserver/src/index.ts create mode 100644 remote/test/puppeteer/packages/testserver/tsconfig.json create mode 100644 remote/test/puppeteer/release-please-config.json create mode 100644 remote/test/puppeteer/test-d/ElementHandle.test-d.ts create mode 100644 remote/test/puppeteer/test-d/JSHandle.test-d.ts create mode 100644 remote/test/puppeteer/test-d/NodeFor.test-d.ts create mode 100644 remote/test/puppeteer/test-d/puppeteer.test-d.ts create mode 100644 remote/test/puppeteer/test/.eslintrc.js create mode 100644 remote/test/puppeteer/test/README.md create mode 100644 remote/test/puppeteer/test/TestExpectations.json create mode 100644 remote/test/puppeteer/test/TestSuites.json create mode 100644 remote/test/puppeteer/test/assets/abort-request.html create mode 100644 remote/test/puppeteer/test/assets/beforeunload.html create mode 100644 remote/test/puppeteer/test/assets/cached/one-style-font.css create mode 100644 remote/test/puppeteer/test/assets/cached/one-style-font.html create mode 100644 remote/test/puppeteer/test/assets/cached/one-style.css create mode 100644 remote/test/puppeteer/test/assets/cached/one-style.html create mode 100644 remote/test/puppeteer/test/assets/chromium-linux.zip create mode 100644 remote/test/puppeteer/test/assets/consolelog.html create mode 100644 remote/test/puppeteer/test/assets/csp.html create mode 100644 remote/test/puppeteer/test/assets/csscoverage/Dosis-Regular.ttf create mode 100644 remote/test/puppeteer/test/assets/csscoverage/OFL.txt create mode 100644 remote/test/puppeteer/test/assets/csscoverage/empty.html create mode 100644 remote/test/puppeteer/test/assets/csscoverage/involved.html create mode 100644 remote/test/puppeteer/test/assets/csscoverage/media.html create mode 100644 remote/test/puppeteer/test/assets/csscoverage/multiple.html create mode 100644 remote/test/puppeteer/test/assets/csscoverage/simple.html create mode 100644 remote/test/puppeteer/test/assets/csscoverage/sourceurl.html create mode 100644 remote/test/puppeteer/test/assets/csscoverage/stylesheet1.css create mode 100644 remote/test/puppeteer/test/assets/csscoverage/stylesheet2.css create mode 100644 remote/test/puppeteer/test/assets/csscoverage/unused.html create mode 100644 remote/test/puppeteer/test/assets/detect-touch.html create mode 100644 remote/test/puppeteer/test/assets/digits/0.png create mode 100644 remote/test/puppeteer/test/assets/digits/1.png create mode 100644 remote/test/puppeteer/test/assets/digits/2.png create mode 100644 remote/test/puppeteer/test/assets/digits/3.png create mode 100644 remote/test/puppeteer/test/assets/digits/4.png create mode 100644 remote/test/puppeteer/test/assets/digits/5.png create mode 100644 remote/test/puppeteer/test/assets/digits/6.png create mode 100644 remote/test/puppeteer/test/assets/digits/7.png create mode 100644 remote/test/puppeteer/test/assets/digits/8.png create mode 100644 remote/test/puppeteer/test/assets/digits/9.png create mode 100644 remote/test/puppeteer/test/assets/dynamic-oopif.html create mode 100644 remote/test/puppeteer/test/assets/empty.html create mode 100644 remote/test/puppeteer/test/assets/error.html create mode 100644 remote/test/puppeteer/test/assets/es6/.eslintrc create mode 100644 remote/test/puppeteer/test/assets/es6/es6import.js create mode 100644 remote/test/puppeteer/test/assets/es6/es6module.js create mode 100644 remote/test/puppeteer/test/assets/es6/es6pathimport.js create mode 100644 remote/test/puppeteer/test/assets/favicon.ico create mode 100644 remote/test/puppeteer/test/assets/file-to-upload.txt create mode 100644 remote/test/puppeteer/test/assets/firefox-75.0a1.en-US.linux-x86_64.tar.bz2 create mode 100644 remote/test/puppeteer/test/assets/frames/frame.html create mode 100644 remote/test/puppeteer/test/assets/frames/frameset.html create mode 100644 remote/test/puppeteer/test/assets/frames/lazy-frame.html create mode 100644 remote/test/puppeteer/test/assets/frames/nested-frames.html create mode 100644 remote/test/puppeteer/test/assets/frames/one-frame-url-fragment.html create mode 100644 remote/test/puppeteer/test/assets/frames/one-frame.html create mode 100644 remote/test/puppeteer/test/assets/frames/script.js create mode 100644 remote/test/puppeteer/test/assets/frames/style.css create mode 100644 remote/test/puppeteer/test/assets/frames/two-frames.html create mode 100644 remote/test/puppeteer/test/assets/global-var.html create mode 100644 remote/test/puppeteer/test/assets/grid.html create mode 100644 remote/test/puppeteer/test/assets/historyapi.html create mode 100644 remote/test/puppeteer/test/assets/idle-detector.html create mode 100644 remote/test/puppeteer/test/assets/initiator.html create mode 100644 remote/test/puppeteer/test/assets/initiator.js create mode 100644 remote/test/puppeteer/test/assets/injectedfile.js create mode 100644 remote/test/puppeteer/test/assets/injectedstyle.css create mode 100644 remote/test/puppeteer/test/assets/inline-svg.html create mode 100644 remote/test/puppeteer/test/assets/inner-frame1.html create mode 100644 remote/test/puppeteer/test/assets/inner-frame2.html create mode 100644 remote/test/puppeteer/test/assets/input/button.html create mode 100644 remote/test/puppeteer/test/assets/input/checkbox.html create mode 100644 remote/test/puppeteer/test/assets/input/drag-and-drop.html create mode 100644 remote/test/puppeteer/test/assets/input/fileupload.html create mode 100644 remote/test/puppeteer/test/assets/input/keyboard.html create mode 100644 remote/test/puppeteer/test/assets/input/mouse-helper.js create mode 100644 remote/test/puppeteer/test/assets/input/rotatedButton.html create mode 100644 remote/test/puppeteer/test/assets/input/scrollable.html create mode 100644 remote/test/puppeteer/test/assets/input/select.html create mode 100644 remote/test/puppeteer/test/assets/input/textarea.html create mode 100644 remote/test/puppeteer/test/assets/input/touches-move.html create mode 100644 remote/test/puppeteer/test/assets/input/touches.html create mode 100644 remote/test/puppeteer/test/assets/input/wheel.html create mode 100644 remote/test/puppeteer/test/assets/jscoverage/eval.html create mode 100644 remote/test/puppeteer/test/assets/jscoverage/involved.html create mode 100644 remote/test/puppeteer/test/assets/jscoverage/multiple.html create mode 100644 remote/test/puppeteer/test/assets/jscoverage/ranges.html create mode 100644 remote/test/puppeteer/test/assets/jscoverage/script1.js create mode 100644 remote/test/puppeteer/test/assets/jscoverage/script2.js create mode 100644 remote/test/puppeteer/test/assets/jscoverage/simple.html create mode 100644 remote/test/puppeteer/test/assets/jscoverage/sourceurl.html create mode 100644 remote/test/puppeteer/test/assets/jscoverage/unused.html create mode 100644 remote/test/puppeteer/test/assets/lazy-oopif-frame.html create mode 100644 remote/test/puppeteer/test/assets/main-frame.html create mode 100644 remote/test/puppeteer/test/assets/mobile.html create mode 100644 remote/test/puppeteer/test/assets/modernizr.js create mode 100644 remote/test/puppeteer/test/assets/networkidle.html create mode 100644 remote/test/puppeteer/test/assets/offscreenbuttons.html create mode 100644 remote/test/puppeteer/test/assets/one-style.css create mode 100644 remote/test/puppeteer/test/assets/one-style.html create mode 100644 remote/test/puppeteer/test/assets/oopif.html create mode 100644 remote/test/puppeteer/test/assets/p-selectors.html create mode 100644 remote/test/puppeteer/test/assets/pdf.html create mode 100644 remote/test/puppeteer/test/assets/playground.html create mode 100644 remote/test/puppeteer/test/assets/popup/popup.html create mode 100644 remote/test/puppeteer/test/assets/popup/window-open.html create mode 100644 remote/test/puppeteer/test/assets/pptr.png create mode 100644 remote/test/puppeteer/test/assets/resetcss.html create mode 100644 remote/test/puppeteer/test/assets/self-request.html create mode 100644 remote/test/puppeteer/test/assets/serviceworkers/empty/sw.html create mode 100644 remote/test/puppeteer/test/assets/serviceworkers/empty/sw.js create mode 100644 remote/test/puppeteer/test/assets/serviceworkers/extension/background.js create mode 100644 remote/test/puppeteer/test/assets/serviceworkers/extension/manifest.json create mode 100644 remote/test/puppeteer/test/assets/serviceworkers/fetch/style.css create mode 100644 remote/test/puppeteer/test/assets/serviceworkers/fetch/sw.html create mode 100644 remote/test/puppeteer/test/assets/serviceworkers/fetch/sw.js create mode 100644 remote/test/puppeteer/test/assets/shadow.html create mode 100644 remote/test/puppeteer/test/assets/simple-extension/content-script.js create mode 100644 remote/test/puppeteer/test/assets/simple-extension/index.js create mode 100644 remote/test/puppeteer/test/assets/simple-extension/manifest.json create mode 100644 remote/test/puppeteer/test/assets/simple.json create mode 100644 remote/test/puppeteer/test/assets/tamperable.html create mode 100644 remote/test/puppeteer/test/assets/title.html create mode 100644 remote/test/puppeteer/test/assets/worker/worker.html create mode 100644 remote/test/puppeteer/test/assets/worker/worker.js create mode 100644 remote/test/puppeteer/test/assets/wrappedlink.html create mode 100644 remote/test/puppeteer/test/fixtures/closeme.js create mode 100644 remote/test/puppeteer/test/fixtures/dumpio.js create mode 100644 remote/test/puppeteer/test/golden-chrome/csscoverage-involved.txt create mode 100644 remote/test/puppeteer/test/golden-chrome/grid-cell-0.png create mode 100644 remote/test/puppeteer/test/golden-chrome/grid-cell-1.png create mode 100644 remote/test/puppeteer/test/golden-chrome/grid-cell-2.png create mode 100644 remote/test/puppeteer/test/golden-chrome/grid-cell-3.png create mode 100644 remote/test/puppeteer/test/golden-chrome/jscoverage-involved.txt create mode 100644 remote/test/puppeteer/test/golden-chrome/mock-binary-response.png create mode 100644 remote/test/puppeteer/test/golden-chrome/screenshot-clip-odd-size.png create mode 100644 remote/test/puppeteer/test/golden-chrome/screenshot-clip-rect-scale2.png create mode 100644 remote/test/puppeteer/test/golden-chrome/screenshot-clip-rect.png create mode 100644 remote/test/puppeteer/test/golden-chrome/screenshot-element-bounding-box.png create mode 100644 remote/test/puppeteer/test/golden-chrome/screenshot-element-fractional-offset.png create mode 100644 remote/test/puppeteer/test/golden-chrome/screenshot-element-fractional.png create mode 100644 remote/test/puppeteer/test/golden-chrome/screenshot-element-larger-than-viewport.png create mode 100644 remote/test/puppeteer/test/golden-chrome/screenshot-element-padding-border.png create mode 100644 remote/test/puppeteer/test/golden-chrome/screenshot-element-rotate.png create mode 100644 remote/test/puppeteer/test/golden-chrome/screenshot-element-scrolled-into-view.png create mode 100644 remote/test/puppeteer/test/golden-chrome/screenshot-grid-fullpage.png create mode 100644 remote/test/puppeteer/test/golden-chrome/screenshot-offscreen-clip.png create mode 100644 remote/test/puppeteer/test/golden-chrome/screenshot-sanity.png create mode 100644 remote/test/puppeteer/test/golden-chrome/transparent.png create mode 100644 remote/test/puppeteer/test/golden-chrome/vision-deficiency-achromatopsia.png create mode 100644 remote/test/puppeteer/test/golden-chrome/vision-deficiency-blurredVision.png create mode 100644 remote/test/puppeteer/test/golden-chrome/vision-deficiency-deuteranopia.png create mode 100644 remote/test/puppeteer/test/golden-chrome/vision-deficiency-protanopia.png create mode 100644 remote/test/puppeteer/test/golden-chrome/vision-deficiency-tritanopia.png create mode 100644 remote/test/puppeteer/test/golden-chrome/white.jpg create mode 100644 remote/test/puppeteer/test/golden-firefox/grid-cell-0.png create mode 100644 remote/test/puppeteer/test/golden-firefox/grid-cell-1.png create mode 100644 remote/test/puppeteer/test/golden-firefox/screenshot-clip-odd-size.png create mode 100644 remote/test/puppeteer/test/golden-firefox/screenshot-clip-rect-scale2.png create mode 100644 remote/test/puppeteer/test/golden-firefox/screenshot-clip-rect.png create mode 100644 remote/test/puppeteer/test/golden-firefox/screenshot-element-bounding-box.png create mode 100644 remote/test/puppeteer/test/golden-firefox/screenshot-element-fractional-offset.png create mode 100644 remote/test/puppeteer/test/golden-firefox/screenshot-element-fractional.png create mode 100644 remote/test/puppeteer/test/golden-firefox/screenshot-element-larger-than-viewport.png create mode 100644 remote/test/puppeteer/test/golden-firefox/screenshot-element-padding-border.png create mode 100644 remote/test/puppeteer/test/golden-firefox/screenshot-element-rotate.png create mode 100644 remote/test/puppeteer/test/golden-firefox/screenshot-element-scrolled-into-view.png create mode 100644 remote/test/puppeteer/test/golden-firefox/screenshot-grid-fullpage.png create mode 100644 remote/test/puppeteer/test/golden-firefox/screenshot-offscreen-clip.png create mode 100644 remote/test/puppeteer/test/golden-firefox/screenshot-sanity.png create mode 100644 remote/test/puppeteer/test/installation/.mocharc.cjs create mode 100644 remote/test/puppeteer/test/installation/assets/puppeteer-core/imports.js create mode 100644 remote/test/puppeteer/test/installation/assets/puppeteer-core/launch.js create mode 100644 remote/test/puppeteer/test/installation/assets/puppeteer-core/requires.cjs create mode 100644 remote/test/puppeteer/test/installation/assets/puppeteer/basic.js create mode 100644 remote/test/puppeteer/test/installation/assets/puppeteer/configuration/.puppeteerrc.cjs create mode 100644 remote/test/puppeteer/test/installation/assets/puppeteer/imports.js create mode 100644 remote/test/puppeteer/test/installation/assets/puppeteer/requires.cjs create mode 100644 remote/test/puppeteer/test/installation/assets/puppeteer/webpack/webpack.config.js create mode 100644 remote/test/puppeteer/test/installation/package.json create mode 100644 remote/test/puppeteer/test/installation/src/browsers.spec.ts create mode 100644 remote/test/puppeteer/test/installation/src/constants.ts create mode 100644 remote/test/puppeteer/test/installation/src/puppeteer-configuration.spec.ts create mode 100644 remote/test/puppeteer/test/installation/src/puppeteer-core.spec.ts create mode 100644 remote/test/puppeteer/test/installation/src/puppeteer-firefox.spec.ts create mode 100644 remote/test/puppeteer/test/installation/src/puppeteer-webpack.spec.ts create mode 100644 remote/test/puppeteer/test/installation/src/puppeteer.spec.ts create mode 100644 remote/test/puppeteer/test/installation/src/sandbox.ts create mode 100644 remote/test/puppeteer/test/installation/src/util.ts create mode 100644 remote/test/puppeteer/test/installation/tsconfig.json create mode 100644 remote/test/puppeteer/test/package.json create mode 100644 remote/test/puppeteer/test/src/CDPSession.spec.ts create mode 100644 remote/test/puppeteer/test/src/DeviceRequestPrompt.spec.ts create mode 100644 remote/test/puppeteer/test/src/EventEmitter.spec.ts create mode 100644 remote/test/puppeteer/test/src/NetworkManager.spec.ts create mode 100644 remote/test/puppeteer/test/src/TargetManager.spec.ts create mode 100644 remote/test/puppeteer/test/src/accessibility.spec.ts create mode 100644 remote/test/puppeteer/test/src/ariaqueryhandler.spec.ts create mode 100644 remote/test/puppeteer/test/src/bidi/Connection.spec.ts create mode 100644 remote/test/puppeteer/test/src/browser.spec.ts create mode 100644 remote/test/puppeteer/test/src/browsercontext.spec.ts create mode 100644 remote/test/puppeteer/test/src/chromiumonly.spec.ts create mode 100644 remote/test/puppeteer/test/src/click.spec.ts create mode 100644 remote/test/puppeteer/test/src/cookies.spec.ts create mode 100644 remote/test/puppeteer/test/src/coverage.spec.ts create mode 100644 remote/test/puppeteer/test/src/defaultbrowsercontext.spec.ts create mode 100644 remote/test/puppeteer/test/src/dialog.spec.ts create mode 100644 remote/test/puppeteer/test/src/diffstyle.css create mode 100644 remote/test/puppeteer/test/src/drag-and-drop.spec.ts create mode 100644 remote/test/puppeteer/test/src/elementhandle.spec.ts create mode 100644 remote/test/puppeteer/test/src/emulation.spec.ts create mode 100644 remote/test/puppeteer/test/src/evaluation.spec.ts create mode 100644 remote/test/puppeteer/test/src/fixtures.spec.ts create mode 100644 remote/test/puppeteer/test/src/frame.spec.ts create mode 100644 remote/test/puppeteer/test/src/golden-utils.ts create mode 100644 remote/test/puppeteer/test/src/headful.spec.ts create mode 100644 remote/test/puppeteer/test/src/idle_override.spec.ts create mode 100644 remote/test/puppeteer/test/src/ignorehttpserrors.spec.ts create mode 100644 remote/test/puppeteer/test/src/injected.spec.ts create mode 100644 remote/test/puppeteer/test/src/input.spec.ts create mode 100644 remote/test/puppeteer/test/src/jshandle.spec.ts create mode 100644 remote/test/puppeteer/test/src/keyboard.spec.ts create mode 100644 remote/test/puppeteer/test/src/launcher.spec.ts create mode 100644 remote/test/puppeteer/test/src/mocha-utils.ts create mode 100644 remote/test/puppeteer/test/src/mouse.spec.ts create mode 100644 remote/test/puppeteer/test/src/navigation.spec.ts create mode 100644 remote/test/puppeteer/test/src/network.spec.ts create mode 100644 remote/test/puppeteer/test/src/oopif.spec.ts create mode 100644 remote/test/puppeteer/test/src/page.spec.ts create mode 100644 remote/test/puppeteer/test/src/proxy.spec.ts create mode 100644 remote/test/puppeteer/test/src/queryhandler.spec.ts create mode 100644 remote/test/puppeteer/test/src/queryselector.spec.ts create mode 100644 remote/test/puppeteer/test/src/requestinterception-experimental.spec.ts create mode 100644 remote/test/puppeteer/test/src/requestinterception.spec.ts create mode 100644 remote/test/puppeteer/test/src/screenshot.spec.ts create mode 100644 remote/test/puppeteer/test/src/target.spec.ts create mode 100644 remote/test/puppeteer/test/src/touchscreen.spec.ts create mode 100644 remote/test/puppeteer/test/src/tracing.spec.ts create mode 100644 remote/test/puppeteer/test/src/utils.ts create mode 100644 remote/test/puppeteer/test/src/waittask.spec.ts create mode 100644 remote/test/puppeteer/test/src/worker.spec.ts create mode 100644 remote/test/puppeteer/test/tsconfig.json create mode 100755 remote/test/puppeteer/tools/analyze_issue.mjs create mode 100755 remote/test/puppeteer/tools/assets/verify_issue.ts create mode 100644 remote/test/puppeteer/tools/chmod.ts create mode 100644 remote/test/puppeteer/tools/cp.ts create mode 100644 remote/test/puppeteer/tools/ensure-pinned-deps.ts create mode 100644 remote/test/puppeteer/tools/generate-matrix.js create mode 100644 remote/test/puppeteer/tools/generate_docs.ts create mode 100644 remote/test/puppeteer/tools/generate_module_package_json.ts create mode 100644 remote/test/puppeteer/tools/get_deprecated_version_range.js create mode 100644 remote/test/puppeteer/tools/internal/custom_markdown_action.ts create mode 100644 remote/test/puppeteer/tools/internal/custom_markdown_documenter.ts create mode 100644 remote/test/puppeteer/tools/internal/job.ts create mode 100644 remote/test/puppeteer/tools/internal/util.ts create mode 100644 remote/test/puppeteer/tools/mochaRunner/README.md create mode 100644 remote/test/puppeteer/tools/mochaRunner/src/interface.ts create mode 100644 remote/test/puppeteer/tools/mochaRunner/src/main.ts create mode 100644 remote/test/puppeteer/tools/mochaRunner/src/reporter.ts create mode 100644 remote/test/puppeteer/tools/mochaRunner/src/test.ts create mode 100644 remote/test/puppeteer/tools/mochaRunner/src/types.ts create mode 100644 remote/test/puppeteer/tools/mochaRunner/src/utils.ts create mode 100644 remote/test/puppeteer/tools/mochaRunner/tsconfig.json create mode 100644 remote/test/puppeteer/tools/remove_version_suffix.js create mode 100644 remote/test/puppeteer/tools/sort-test-expectations.js create mode 100644 remote/test/puppeteer/tools/third_party/validate-licenses.ts create mode 100644 remote/test/puppeteer/tools/tsconfig.json create mode 100644 remote/test/puppeteer/tsconfig.base.json create mode 100644 remote/test/puppeteer/versions.js create mode 100644 remote/webdriver-bidi/NewSessionHandler.sys.mjs create mode 100644 remote/webdriver-bidi/RemoteValue.sys.mjs create mode 100644 remote/webdriver-bidi/WebDriverBiDi.sys.mjs create mode 100644 remote/webdriver-bidi/WebDriverBiDiConnection.sys.mjs create mode 100644 remote/webdriver-bidi/jar.mn create mode 100644 remote/webdriver-bidi/modules/ModuleRegistry.sys.mjs create mode 100644 remote/webdriver-bidi/modules/WindowGlobalBiDiModule.sys.mjs create mode 100644 remote/webdriver-bidi/modules/root/browsingContext.sys.mjs create mode 100644 remote/webdriver-bidi/modules/root/input.sys.mjs create mode 100644 remote/webdriver-bidi/modules/root/log.sys.mjs create mode 100644 remote/webdriver-bidi/modules/root/network.sys.mjs create mode 100644 remote/webdriver-bidi/modules/root/script.sys.mjs create mode 100644 remote/webdriver-bidi/modules/root/session.sys.mjs create mode 100644 remote/webdriver-bidi/modules/windowglobal-in-root/browsingContext.sys.mjs create mode 100644 remote/webdriver-bidi/modules/windowglobal-in-root/log.sys.mjs create mode 100644 remote/webdriver-bidi/modules/windowglobal-in-root/script.sys.mjs create mode 100644 remote/webdriver-bidi/modules/windowglobal/browsingContext.sys.mjs create mode 100644 remote/webdriver-bidi/modules/windowglobal/input.sys.mjs create mode 100644 remote/webdriver-bidi/modules/windowglobal/log.sys.mjs create mode 100644 remote/webdriver-bidi/modules/windowglobal/script.sys.mjs create mode 100644 remote/webdriver-bidi/moz.build create mode 100644 remote/webdriver-bidi/test/browser/browser.ini create mode 100644 remote/webdriver-bidi/test/browser/browser_RemoteValue.js create mode 100644 remote/webdriver-bidi/test/xpcshell/test_WebDriverBiDiConnection.js create mode 100644 remote/webdriver-bidi/test/xpcshell/xpcshell.ini (limited to 'remote') diff --git a/remote/.gitignore b/remote/.gitignore new file mode 100644 index 0000000000..cb484e3189 --- /dev/null +++ b/remote/.gitignore @@ -0,0 +1,20 @@ +test/puppeteer/**/.wireit +test/puppeteer/**/*.tsbuildinfo +test/puppeteer/**/lib +test/puppeteer/.github +test/puppeteer/.husky +test/puppeteer/coverage/ +test/puppeteer/.devcontainer/ +test/puppeteer/docker/ +test/puppeteer/docs/puppeteer-core.api.json +test/puppeteer/docs/puppeteer.api.json +test/puppeteer/experimental/ +test/puppeteer/node_modules/ +test/puppeteer/package-lock.json +test/puppeteer/packages/ng-schematics/test/build +test/puppeteer/test/installation/puppeteer*.tgz +test/puppeteer/src/generated +test/puppeteer/test/**/build +test/puppeteer/test/output-firefox +test/puppeteer/test/output-chromium +test/puppeteer/website diff --git a/remote/README.md b/remote/README.md new file mode 100644 index 0000000000..d9b8a73467 --- /dev/null +++ b/remote/README.md @@ -0,0 +1,74 @@ +The Firefox remote agent is a low-level debugging interface based +on the CDP protocol. + +With it, you can inspect the state and control execution of documents +running in web content, instrument Gecko in interesting ways, +simulate user interaction for automation purposes, and debug +JavaScript execution. + +This component provides an experimental and partial implementation +of a remote devtools interface using the CDP protocol and transport +layer. + +See https://firefox-source-docs.mozilla.org/remote/ for documentation. + +It is available in Firefox and is started this way: + + % ./mach run --remote-debugging-port + + +Puppeteer +========= +Puppeteer is a Node library which provides a high-level API to control Chrome, +Chromium, and Firefox over the Chrome DevTools Protocol. Puppeteer runs headless +by default, but can be configured to run full (non-headless) browsers. + +To verify that our implementation of the CDP protocol is valid we do not only +run xpcshell and browser-chrome mochitests in Firefox CI but also the Puppeteer +unit tests. + +Expectation Data +---------------- + +With the tests coming from upstream, it is not guaranteed that they +all pass in Gecko-based browsers. For this reason it is necessary to +provide metadata about the expected results of each test. This is +provided in a manifest file under `test/puppeteer-expected.json`. + +For each test of the Puppeteer unit test suite an equivalent entry will exist +in this manifest file. By default tests are expected to `PASS`. + +Tests that are intermittent may be marked with multiple statuses using +a list of possibilities e.g. for a test that usually passes, but +intermittently fails: + + "Page.click should click the button (click.spec.ts)": [ + "PASS", "FAIL" + ], + +Disabling Tests +--------------- + +Tests are disabled by using the manifest file `test/puppeteer-expected.json`. +For example, if a test is unstable, it can be disabled using `SKIP`: + + "Workers Page.workers (worker.spec.ts)": [ + "SKIP" + ], + +For intermittents it's generally preferable to give the test multiple +expectations rather than disable it. + +Autogenerating Expectation Data +------------------------------- + +After changing some code it may be necessary to update the expectation +data for the relevant tests. This can of course be done manually, but +`mach` is able to automate the process: + + mach puppeteer-test --write-results + +By default it writes the output to `test/puppeteer-expected.json`. + +Given that the unit tests run in Firefox CI only for Linux it is advised to +download the expectation data (available as artifact) from the TaskCluster job. diff --git a/remote/cdp/CDP.sys.mjs b/remote/cdp/CDP.sys.mjs new file mode 100644 index 0000000000..b8ace7efc9 --- /dev/null +++ b/remote/cdp/CDP.sys.mjs @@ -0,0 +1,147 @@ +/* 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/. */ + +import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs"; + +const lazy = {}; + +ChromeUtils.defineESModuleGetters(lazy, { + JSONHandler: "chrome://remote/content/cdp/JSONHandler.sys.mjs", + Log: "chrome://remote/content/shared/Log.sys.mjs", + RecommendedPreferences: + "chrome://remote/content/shared/RecommendedPreferences.sys.mjs", + TargetList: "chrome://remote/content/cdp/targets/TargetList.sys.mjs", +}); + +XPCOMUtils.defineLazyGetter(lazy, "logger", () => + lazy.Log.get(lazy.Log.TYPES.CDP) +); +XPCOMUtils.defineLazyGetter(lazy, "textEncoder", () => new TextEncoder()); + +// Map of CDP-specific preferences that should be set via +// RecommendedPreferences. +const RECOMMENDED_PREFS = new Map([ + // Prevent various error message on the console + // jest-puppeteer asserts that no error message is emitted by the console + [ + "browser.contentblocking.features.standard", + "-tp,tpPrivate,cookieBehavior0,-cm,-fp", + ], + // Accept all cookies (see behavior definitions in nsICookieService.idl) + ["network.cookie.cookieBehavior", 0], +]); + +/** + * Entry class for the Chrome DevTools Protocol support. + * + * It holds the list of available targets (tabs, main browser), and also + * sets up the necessary handlers for the HTTP server. + * + * @see https://chromedevtools.github.io/devtools-protocol + */ +export class CDP { + /** + * Creates a new instance of the CDP class. + * + * @param {RemoteAgent} agent + * Reference to the Remote Agent instance. + */ + constructor(agent) { + this.agent = agent; + this.targetList = null; + + this._running = false; + this._activePortPath; + } + + get address() { + const mainTarget = this.targetList.getMainProcessTarget(); + return mainTarget.wsDebuggerURL; + } + + get mainTargetPath() { + const mainTarget = this.targetList.getMainProcessTarget(); + return mainTarget.path; + } + + /** + * Starts the CDP support. + */ + async start() { + if (this._running) { + return; + } + + // Note: Ideally this would only be set at the end of the method. However + // since start() is async, we prefer to set the flag early in order to + // avoid potential race conditions. + this._running = true; + + lazy.RecommendedPreferences.applyPreferences(RECOMMENDED_PREFS); + + // Starting CDP too early can cause issues with clients in not being able + // to find any available target. Also when closing the application while + // it's still starting up can cause shutdown hangs. As such CDP will be + // started when the initial application window has finished initializing. + lazy.logger.debug(`Waiting for initial application window`); + await this.agent.browserStartupFinished; + + this.agent.server.registerPrefixHandler("/", new lazy.JSONHandler(this)); + + this.targetList = new lazy.TargetList(); + this.targetList.on("target-created", (eventName, target) => { + this.agent.server.registerPathHandler(target.path, target); + }); + this.targetList.on("target-destroyed", (eventName, target) => { + this.agent.server.registerPathHandler(target.path, null); + }); + + await this.targetList.watchForTargets(); + + Cu.printStderr(`DevTools listening on ${this.address}\n`); + + // Write connection details to DevToolsActivePort file within the profile. + this._activePortPath = PathUtils.join( + PathUtils.profileDir, + "DevToolsActivePort" + ); + + const data = `${this.agent.port}\n${this.mainTargetPath}`; + try { + await IOUtils.write(this._activePortPath, lazy.textEncoder.encode(data)); + } catch (e) { + lazy.logger.warn( + `Failed to create ${this._activePortPath} (${e.message})` + ); + } + } + + /** + * Stops the CDP support. + */ + async stop() { + if (!this._running) { + return; + } + + try { + await IOUtils.remove(this._activePortPath); + } catch (e) { + lazy.logger.warn( + `Failed to remove ${this._activePortPath} (${e.message})` + ); + } + + try { + this.targetList?.destructor(); + this.targetList = null; + + lazy.RecommendedPreferences.restorePreferences(RECOMMENDED_PREFS); + } catch (e) { + lazy.logger.error("Failed to stop protocol", e); + } finally { + this._running = false; + } + } +} diff --git a/remote/cdp/CDPConnection.sys.mjs b/remote/cdp/CDPConnection.sys.mjs new file mode 100644 index 0000000000..dfbb94ee09 --- /dev/null +++ b/remote/cdp/CDPConnection.sys.mjs @@ -0,0 +1,290 @@ +/* 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/. */ + +import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs"; + +import { WebSocketConnection } from "chrome://remote/content/shared/WebSocketConnection.sys.mjs"; + +const lazy = {}; + +ChromeUtils.defineESModuleGetters(lazy, { + Log: "chrome://remote/content/shared/Log.sys.mjs", + UnknownMethodError: "chrome://remote/content/cdp/Error.sys.mjs", +}); + +XPCOMUtils.defineLazyGetter(lazy, "logger", () => + lazy.Log.get(lazy.Log.TYPES.CDP) +); + +export class CDPConnection extends WebSocketConnection { + /** + * @param {WebSocket} webSocket + * The WebSocket server connection to wrap. + * @param {Connection} httpdConnection + * Reference to the httpd.js's connection needed for clean-up. + */ + constructor(webSocket, httpdConnection) { + super(webSocket, httpdConnection); + + this.sessions = new Map(); + this.defaultSession = null; + } + + /** + * Register a new Session to forward the messages to. + * + * A session without any `id` attribute will be considered to be the + * default one, to which messages without `sessionId` attribute are + * forwarded to. Only one such session can be registered. + * + * @param {Session} session + * The session to register. + */ + registerSession(session) { + // CDP is not compatible with Fission by default, check the appropriate + // preferences are set to ensure compatibility. + if ( + Services.prefs.getIntPref("fission.webContentIsolationStrategy") !== 0 || + Services.prefs.getBoolPref("fission.bfcacheInParent") + ) { + lazy.logger.warn( + `Invalid browser preferences for CDP. Set "fission.webContentIsolationStrategy"` + + `to 0 and "fission.bfcacheInParent" to false before Firefox starts.` + ); + } + + if (!session.id) { + if (this.defaultSession) { + throw new Error( + "Default session is already set on Connection, " + + "can't register another one." + ); + } + this.defaultSession = session; + } + + this.sessions.set(session.id, session); + } + + /** + * Send an error back to the CDP client. + * + * @param {number} id + * Id of the packet which lead to an error. + * @param {Error} err + * Error object with `message` and `stack` attributes. + * @param {string=} sessionId + * Id of the session used to send this packet. Falls back to the + * default session if not specified. + */ + sendError(id, err, sessionId) { + const error = { + message: err.message, + data: err.stack, + }; + + this.send({ id, error, sessionId }); + } + + /** + * Send an event coming from a Domain to the CDP client. + * + * @param {string} method + * The event name. This is composed by a domain name, a dot character + * followed by the event name, e.g. `Target.targetCreated`. + * @param {object} params + * A JSON-serializable object, which is the payload of this event. + * @param {string=} sessionId + * The sessionId from which this packet is emitted. Falls back to the + * default session if not specified. + */ + sendEvent(method, params, sessionId) { + this.send({ method, params, sessionId }); + + if (Services.profiler?.IsActive()) { + ChromeUtils.addProfilerMarker( + "CDP: Event", + { category: "Remote-Protocol" }, + method + ); + } + + // When a client attaches to a secondary target via + // `Target.attachToTarget`, we should emit an event back with the + // result including the `sessionId` attribute of this secondary target's + // session. `Target.attachToTarget` creates the secondary session and + // returns the session ID. + if (sessionId) { + // receivedMessageFromTarget is expected to send a raw CDP packet + // in the `message` property and it to be already serialized to a + // string + this.send({ + method: "Target.receivedMessageFromTarget", + params: { sessionId, message: JSON.stringify({ method, params }) }, + }); + } + } + + /** + * Interpret a given CDP packet for a given Session. + * + * @param {string} sessionId + * ID of the session for which we should execute a command. + * @param {string} message + * The stringified JSON payload of the CDP packet, which is about + * executing a Domain's function. + */ + sendMessageToTarget(sessionId, message) { + const session = this.sessions.get(sessionId); + if (!session) { + throw new Error(`Session '${sessionId}' doesn't exist.`); + } + // `message` is received from `Target.sendMessageToTarget` where the + // message attribute is a stringified JSON payload which represent a CDP + // packet. + const packet = JSON.parse(message); + + // The CDP packet sent by the client shouldn't have a sessionId attribute + // as it is passed as another argument of `Target.sendMessageToTarget`. + // Set it here in order to reuse the codepath of flatten session, where + // the client sends CDP packets with a `sessionId` attribute instead + // of going through the old and probably deprecated + // `Target.sendMessageToTarget` API. + packet.sessionId = sessionId; + this.onPacket(packet); + } + + /** + * Send the result of a call to a Domain's function back to the CDP client. + * + * @param {number} id + * The request id being sent by the client to call the domain's method. + * @param {object} result + * A JSON-serializable object, which is the actual result. + * @param {string=} sessionId + * The sessionId from which this packet is emitted. Falls back to the + * default session if not specified. + */ + sendResult(id, result, sessionId) { + result = typeof result != "undefined" ? result : {}; + this.send({ id, result, sessionId }); + + // When a client attaches to a secondary target via + // `Target.attachToTarget`, and it executes a command via + // `Target.sendMessageToTarget`, we should emit an event back with the + // result including the `sessionId` attribute of this secondary target's + // session. `Target.attachToTarget` creates the secondary session and + // returns the session ID. + if (sessionId) { + // receivedMessageFromTarget is expected to send a raw CDP packet + // in the `message` property and it to be already serialized to a + // string + this.send({ + method: "Target.receivedMessageFromTarget", + params: { sessionId, message: JSON.stringify({ id, result }) }, + }); + } + } + + // Transport hooks + + /** + * Called by the `transport` when the connection is closed. + */ + onClosed() { + // Cleanup all the registered sessions. + for (const session of this.sessions.values()) { + session.destructor(); + } + this.sessions.clear(); + + super.onClosed(); + } + + /** + * Receive a packet from the WebSocket layer. + * + * This packet is sent by a CDP client and is meant to execute + * a particular function on a given Domain. + * + * @param {object} packet + * JSON-serializable object sent by the client. + */ + async onPacket(packet) { + super.onPacket(packet); + + const { id, method, params, sessionId } = packet; + const startTime = Cu.now(); + + try { + // First check for mandatory field in the packets + if (typeof id == "undefined") { + throw new TypeError("Message missing 'id' field"); + } + if (typeof method == "undefined") { + throw new TypeError("Message missing 'method' field"); + } + + // Extract the domain name and the method name out of `method` attribute + const { domain, command } = splitMethod(method); + + // If a `sessionId` field is passed, retrieve the session to which we + // should forward this packet. Otherwise send it to the default session. + let session; + if (!sessionId) { + if (!this.defaultSession) { + throw new Error("Connection is missing a default Session."); + } + session = this.defaultSession; + } else { + session = this.sessions.get(sessionId); + if (!session) { + throw new Error(`Session '${sessionId}' doesn't exists.`); + } + } + + // Bug 1600317 - Workaround to deny internal methods to be called + if (command.startsWith("_")) { + throw new lazy.UnknownMethodError(command); + } + + // Finally, instruct the targeted session to execute the command + const result = await session.execute(id, domain, command, params); + this.sendResult(id, result, sessionId); + } catch (e) { + this.sendError(id, e, packet.sessionId); + } + + if (Services.profiler?.IsActive()) { + ChromeUtils.addProfilerMarker( + "CDP: Command", + { startTime, category: "Remote-Protocol" }, + `${method} (${id})` + ); + } + } +} + +/** + * Splits a CDP method into domain and command components. + * + * @param {string} method + * Name of the method to split, e.g. "Browser.getVersion". + * + * @returns {Object} + * Object with the domain ("Browser") and command ("getVersion") + * as properties. + */ +export function splitMethod(method) { + const parts = method.split("."); + + if (parts.length != 2 || !parts[0].length || !parts[1].length) { + throw new TypeError(`Invalid method format: '${method}'`); + } + + return { + domain: parts[0], + command: parts[1], + }; +} diff --git a/remote/cdp/Error.sys.mjs b/remote/cdp/Error.sys.mjs new file mode 100644 index 0000000000..084d8c55f2 --- /dev/null +++ b/remote/cdp/Error.sys.mjs @@ -0,0 +1,132 @@ +/* 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/. */ + +import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs"; + +const lazy = {}; + +ChromeUtils.defineESModuleGetters(lazy, { + Log: "chrome://remote/content/shared/Log.sys.mjs", +}); + +XPCOMUtils.defineLazyGetter(lazy, "logger", () => + lazy.Log.get(lazy.Log.TYPES.CDP) +); + +export class RemoteAgentError extends Error { + constructor(message = "", cause = undefined) { + cause = cause || message; + super(cause); + + this.name = this.constructor.name; + this.message = message; + this.cause = cause; + + this.notify(); + } + + notify() { + console.error(this); + lazy.logger.error(this.toString({ stack: true })); + } + + toString({ stack = false } = {}) { + return RemoteAgentError.format(this, { stack }); + } + + static format(e, { stack = false } = {}) { + return formatError(e, { stack }); + } + + /** + * Takes a serialised CDP error and reconstructs it + * as a RemoteAgentError. + * + * The error must be of this form: + * + * {"message": "TypeError: foo is not a function\n + * execute@chrome://remote/content/cdp/sessions/Session.jsm:73:39\n + * onMessage@chrome://remote/content/cdp/sessions/TabSession.jsm:65:20"} + * + * This approach has the notable deficiency that it cannot deal + * with causes to errors because of the unstructured nature of CDP + * errors. A possible future improvement would be to extend the + * error serialisation to include discrete fields for each data + * property. + * + * @param {object} json + * CDP error encoded as a JSON object, which must have a + * "message" field, where the first line will make out the error + * message and the subsequent lines the stacktrace. + * + * @returns {RemoteAgentError} + */ + static fromJSON(json) { + const [message, ...stack] = json.message.split("\n"); + const err = new RemoteAgentError(); + err.message = message.slice(0, -1); + err.stack = stack.map(s => s.trim()).join("\n"); + err.cause = null; + return err; + } +} + +/** + * A fatal error that it is not possible to recover from + * or send back to the client. + * + * Constructing this error will force the application to quit. + */ +export class FatalError extends RemoteAgentError { + constructor(...args) { + super(...args); + this.quit(); + } + + notify() { + lazy.logger.fatal(this.toString({ stack: true })); + } + + quit(mode = Ci.nsIAppStartup.eForceQuit) { + Services.startup.quit(mode); + } +} + +/** When an operation is not yet implemented. */ +export class UnsupportedError extends RemoteAgentError {} + +/** The requested remote method does not exist. */ +export class UnknownMethodError extends RemoteAgentError { + constructor(domain, command = null) { + if (command) { + super(`${domain}.${command}`); + } else { + super(domain); + } + } +} + +function formatError(error, { stack = false } = {}) { + const els = []; + + els.push(error.name); + if (error.message) { + els.push(": "); + els.push(error.message); + } + + if (stack && error.stack) { + els.push(":\n"); + + const stack = error.stack.trim().split("\n"); + els.push(stack.map(line => `\t${line}`).join("\n")); + + if (error.cause) { + els.push("\n"); + els.push("caused by: " + formatError(error.cause, { stack })); + } + } + + return els.join(""); +} diff --git a/remote/cdp/JSONHandler.sys.mjs b/remote/cdp/JSONHandler.sys.mjs new file mode 100644 index 0000000000..89e7ddab7c --- /dev/null +++ b/remote/cdp/JSONHandler.sys.mjs @@ -0,0 +1,93 @@ +/* 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/. */ + +import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs"; + +const lazy = {}; + +ChromeUtils.defineESModuleGetters(lazy, { + Log: "chrome://remote/content/shared/Log.sys.mjs", + Protocol: "chrome://remote/content/cdp/Protocol.sys.mjs", + RemoteAgentError: "chrome://remote/content/cdp/Error.sys.mjs", +}); + +XPCOMUtils.defineLazyModuleGetters(lazy, { + HTTP_404: "chrome://remote/content/server/HTTPD.jsm", + HTTP_505: "chrome://remote/content/server/HTTPD.jsm", +}); + +export class JSONHandler { + constructor(cdp) { + this.cdp = cdp; + this.routes = { + "/json/version": this.getVersion.bind(this), + "/json/protocol": this.getProtocol.bind(this), + "/json/list": this.getTargetList.bind(this), + "/json": this.getTargetList.bind(this), + }; + } + + getVersion() { + const mainProcessTarget = this.cdp.targetList.getMainProcessTarget(); + + const { userAgent } = Cc[ + "@mozilla.org/network/protocol;1?name=http" + ].getService(Ci.nsIHttpProtocolHandler); + + return { + Browser: `${Services.appinfo.name}/${Services.appinfo.version}`, + "Protocol-Version": "1.3", + "User-Agent": userAgent, + "V8-Version": "1.0", + "WebKit-Version": "1.0", + webSocketDebuggerUrl: mainProcessTarget.toJSON().webSocketDebuggerUrl, + }; + } + + getProtocol() { + return lazy.Protocol.Description; + } + + getTargetList() { + return [...this.cdp.targetList].filter(x => x.type !== "browser"); + } + + // nsIHttpRequestHandler + + handle(request, response) { + if (request.method != "GET") { + throw lazy.HTTP_404; + } + + // Trim trailing slashes to conform with expected routes + const path = request.path.replace(/\/+$/, ""); + + if (!(path in this.routes)) { + throw lazy.HTTP_404; + } + + try { + const body = this.routes[path](); + const payload = JSON.stringify( + body, + null, + lazy.Log.verbose ? "\t" : null + ); + + response.setStatusLine(request.httpVersion, 200, "OK"); + response.setHeader("Content-Type", "application/json"); + response.setHeader("Content-Security-Policy", "frame-ancestors 'none'"); + response.write(payload); + } catch (e) { + new lazy.RemoteAgentError(e).notify(); + throw lazy.HTTP_505; + } + } + + // XPCOM + + get QueryInterface() { + return ChromeUtils.generateQI(["nsIHttpRequestHandler"]); + } +} diff --git a/remote/cdp/Protocol.sys.mjs b/remote/cdp/Protocol.sys.mjs new file mode 100644 index 0000000000..f239c82b42 --- /dev/null +++ b/remote/cdp/Protocol.sys.mjs @@ -0,0 +1,17358 @@ +/* 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/. */ + +// The `Description` below is imported from Chromium Code. + +// TODO(ato): We send back a description of the protocol +// when the user makes the initial HTTP request, +// but the following is pure fiction. +const Description = { + "domains": [ + { + "domain": "Accessibility", + "experimental": true, + "dependencies": [ + "DOM" + ], + "types": [ + { + "id": "AXNodeId", + "description": "Unique accessibility node identifier.", + "type": "string" + }, + { + "id": "AXValueType", + "description": "Enum of possible property types.", + "type": "string", + "enum": [ + "boolean", + "tristate", + "booleanOrUndefined", + "idref", + "idrefList", + "integer", + "node", + "nodeList", + "number", + "string", + "computedString", + "token", + "tokenList", + "domRelation", + "role", + "internalRole", + "valueUndefined" + ] + }, + { + "id": "AXValueSourceType", + "description": "Enum of possible property sources.", + "type": "string", + "enum": [ + "attribute", + "implicit", + "style", + "contents", + "placeholder", + "relatedElement" + ] + }, + { + "id": "AXValueNativeSourceType", + "description": "Enum of possible native property sources (as a subtype of a particular AXValueSourceType).", + "type": "string", + "enum": [ + "figcaption", + "label", + "labelfor", + "labelwrapped", + "legend", + "tablecaption", + "title", + "other" + ] + }, + { + "id": "AXValueSource", + "description": "A single source for a computed AX property.", + "type": "object", + "properties": [ + { + "name": "type", + "description": "What type of source this is.", + "$ref": "AXValueSourceType" + }, + { + "name": "value", + "description": "The value of this property source.", + "optional": true, + "$ref": "AXValue" + }, + { + "name": "attribute", + "description": "The name of the relevant attribute, if any.", + "optional": true, + "type": "string" + }, + { + "name": "attributeValue", + "description": "The value of the relevant attribute, if any.", + "optional": true, + "$ref": "AXValue" + }, + { + "name": "superseded", + "description": "Whether this source is superseded by a higher priority source.", + "optional": true, + "type": "boolean" + }, + { + "name": "nativeSource", + "description": "The native markup source for this value, e.g. a