diff options
Diffstat (limited to 'testing/raptor/browsertime/speculative-connect.js')
-rw-r--r-- | testing/raptor/browsertime/speculative-connect.js | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/testing/raptor/browsertime/speculative-connect.js b/testing/raptor/browsertime/speculative-connect.js new file mode 100644 index 0000000000..e984b21d92 --- /dev/null +++ b/testing/raptor/browsertime/speculative-connect.js @@ -0,0 +1,44 @@ +/* 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/. */ + +/* eslint-env node */ + +module.exports = async function (context, commands) { + context.log.info( + "Starting a pageload for which we will first make a speculative connection to the host" + ); + + const url = "https://en.wikipedia.org/wiki/Barack_Obama"; + + await commands.navigate("about:blank"); + await commands.wait.byTime(1000); + + context.log.debug("Make privileged call to speculativeConnect"); + const script = ` + var URI = Services.io.newURI("${url}"); + var principal = Services.scriptSecurityManager.createContentPrincipal(URI, {}); + Services.io.QueryInterface(Ci.nsISpeculativeConnect).speculativeConnect(URI, principal, null, false); + `; + + commands.js.runPrivileged(script); + + // More than enough time for the connection to be made + await commands.wait.byTime(1000); + + await commands.measure.start(); + await commands.navigate(url); + await commands.measure.stop(); + + let connect_time = await commands.js.run( + `return (window.performance.timing.connectEnd - window.performance.timing.navigationStart);` + ); + context.log.info("connect_time: " + connect_time); + + await commands.measure.addObject({ + custom_data: { connect_time }, + }); + + context.log.info("Speculative connect test finished."); + return true; +}; |