Bug 1675266 - [remote] Report correct browser name/version, and user agent string for "/json/version" httpd handler. r=remote-protocol-reviewers,maja_zf

Differential Revision: https://phabricator.services.mozilla.com/D96009
This commit is contained in:
Henrik Skupin 2020-11-06 18:36:46 +00:00
parent 28bce1f7d9
commit c113dc1c42
3 changed files with 52 additions and 2 deletions

View File

@ -6,6 +6,8 @@
var EXPORTED_SYMBOLS = ["JSONHandler"];
const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
const { HTTP_404, HTTP_505 } = ChromeUtils.import(
"chrome://remote/content/server/HTTPD.jsm"
);
@ -27,10 +29,15 @@ class JSONHandler {
getVersion() {
const mainProcessTarget = this.agent.targets.getMainProcessTarget();
const { userAgent } = Cc[
"@mozilla.org/network/protocol;1?name=http"
].getService(Ci.nsIHttpProtocolHandler);
return {
Browser: "Firefox",
Browser: `${Services.appinfo.name}/${Services.appinfo.version}`,
"Protocol-Version": "1.0",
"User-Agent": "Mozilla",
"User-Agent": userAgent,
"V8-Version": "1.0",
"WebKit-Version": "1.0",
webSocketDebuggerUrl: mainProcessTarget.toJSON().webSocketDebuggerUrl,

View File

@ -10,6 +10,7 @@ support-files =
[browser_agent.js]
[browser_cdp.js]
skip-if = socketprocess_networking
[browser_httpd.js]
[browser_main_target.js]
skip-if = socketprocess_networking
[browser_session.js]

View File

@ -0,0 +1,42 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
add_task(async function json_version() {
await RemoteAgent.listen(`http://localhost:0`);
const { userAgent } = Cc[
"@mozilla.org/network/protocol;1?name=http"
].getService(Ci.nsIHttpProtocolHandler);
const json = await requestJSON("/version");
is(
json.Browser,
`${Services.appinfo.name}/${Services.appinfo.version}`,
"Browser name and version found"
);
is(json["Protocol-Version"], "1.0", "Protocol version found");
is(json["User-Agent"], userAgent, "User agent found");
is(json["V8-Version"], "1.0", "V8 version found");
is(json["WebKit-Version"], "1.0", "Webkit version found");
is(
json.webSocketDebuggerUrl,
RemoteAgent.targets.getMainProcessTarget().wsDebuggerURL,
"Websocket URL for main process target found"
);
});
function requestJSON(path) {
const url = `http://${RemoteAgent.debuggerAddress}`;
return new Promise(resolve => {
var xhr = new XMLHttpRequest();
xhr.open("GET", `${url}/json${path}`);
xhr.responseType = "json";
xhr.onloadend = () => {
resolve(xhr.response);
};
xhr.send();
});
}