tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 4c22dc03ca3867563856176c9601d1bc3f5d165f
parent a78963d92bddf9b255081ff1c4dd56f1eba06709
Author: Cosmin Sabou <csabou@mozilla.com>
Date:   Thu, 18 Dec 2025 13:08:59 +0200

Revert "Bug 1955682, Bug 1909662 - Marionette server/client implementation of generate_test_report command r=whimboo,jgraham" for causing non-unified build bustages on TestReportGenerator

This reverts commit 51d77af25f2437292d3f3f6a8e1cc5a7c9e6baf5.

Revert "Bug 1955682 - C++ platform implementation of generate_test_report command r=webidl,smaug"

This reverts commit 4dcfde8752c07dfd8cd8d3ed763609863d3f857f.

Diffstat:
Mdom/reporting/CSPViolationReportBody.cpp | 4++--
Ddom/reporting/TestReportBody.cpp | 36------------------------------------
Ddom/reporting/TestReportBody.h | 36------------------------------------
Ddom/reporting/TestReportGenerator.cpp | 68--------------------------------------------------------------------
Ddom/reporting/TestReportGenerator.h | 24------------------------
Mdom/reporting/moz.build | 4----
Mdom/reporting/tests/browser.toml | 2--
Ddom/reporting/tests/browser_reportGeneration.js | 52----------------------------------------------------
Mdom/webidl/Reporting.webidl | 20--------------------
Mremote/marionette/actors/MarionetteCommandsChild.sys.mjs | 14--------------
Mremote/marionette/actors/MarionetteCommandsParent.sys.mjs | 7-------
Mremote/marionette/driver.sys.mjs | 38--------------------------------------
Mtesting/marionette/client/marionette_driver/marionette.py | 12------------
Dtesting/marionette/harness/marionette_harness/tests/unit/test_generate_test_report.py | 19-------------------
Mtesting/marionette/harness/marionette_harness/tests/unit/unit-tests.toml | 2--
Atesting/web-platform/meta/reporting/bufferSize.html.ini | 4++++
Atesting/web-platform/meta/reporting/disconnect.html.ini | 5+++++
Atesting/web-platform/meta/reporting/generateTestReport-honors-endpoint.https.sub.html.ini | 8++++++++
Atesting/web-platform/meta/reporting/generateTestReport.html.ini | 5+++++
Atesting/web-platform/meta/reporting/nestedReport.html.ini | 7+++++++
Atesting/web-platform/meta/reporting/order.html.ini | 7+++++++
Mtesting/web-platform/meta/reporting/reporting-api-honors-limits.https.sub.html.ini | 12++++--------
Mtesting/web-platform/tests/tools/wptrunner/wptrunner/executors/executormarionette.py | 4++--
23 files changed, 44 insertions(+), 346 deletions(-)

diff --git a/dom/reporting/CSPViolationReportBody.cpp b/dom/reporting/CSPViolationReportBody.cpp @@ -35,11 +35,11 @@ JSObject* CSPViolationReportBody::WrapObject( } void CSPViolationReportBody::GetBlockedURL(nsAString& aURL) const { - aURL = mBlockedURL; + aURL = mDocumentURL; } void CSPViolationReportBody::GetDocumentURL(nsAString& aURL) const { - aURL = mDocumentURL; + aURL = mBlockedURL; } void CSPViolationReportBody::GetReferrer(nsAString& aReferrer) const { diff --git a/dom/reporting/TestReportBody.cpp b/dom/reporting/TestReportBody.cpp @@ -1,36 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set ts=8 sts=2 et sw=2 tw=80: */ -/* 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/. */ - -#include "mozilla/dom/TestReportBody.h" - -#include "mozilla/JSONWriter.h" -#include "mozilla/dom/ReportingBinding.h" - -namespace mozilla::dom { - -TestReportBody::TestReportBody(nsIGlobalObject* aGlobal, - const nsString& aMessage) - : ReportBody(aGlobal), mMessage(aMessage) {} - -JSObject* TestReportBody::WrapObject(JSContext* aCx, - JS::Handle<JSObject*> aGivenProto) { - return TestReportBody_Binding::Wrap(aCx, this, aGivenProto); -} - -TestReportBody::~TestReportBody() = default; - -void TestReportBody::GetMessage(nsAString& aMessage) const { - aMessage = mMessage; -} - -void TestReportBody::ToJSON(JSONWriter& aJSONWriter) const { - if (mMessage.IsEmpty()) { - aJSONWriter.NullProperty("message"); - } else { - aJSONWriter.StringProperty("message", NS_ConvertUTF16toUTF8(mMessage)); - } -} -} // namespace mozilla::dom diff --git a/dom/reporting/TestReportBody.h b/dom/reporting/TestReportBody.h @@ -1,36 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set ts=8 sts=2 et sw=2 tw=80: */ -/* 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/. */ - -#ifndef mozilla_dom_TestReportBody_h -#define mozilla_dom_TestReportBody_h - -#include "mozilla/dom/Nullable.h" -#include "mozilla/dom/ReportBody.h" -#include "mozilla/dom/SecurityPolicyViolationEvent.h" - -namespace mozilla::dom { - -class TestReportBody final : public ReportBody { - public: - TestReportBody(nsIGlobalObject* aGlobal, const nsString& aBody); - - JSObject* WrapObject(JSContext* aCx, - JS::Handle<JSObject*> aGivenProto) override; - - void GetMessage(nsAString& aMessage) const; - - protected: - void ToJSON(JSONWriter& aJSONWriter) const override; - - private: - ~TestReportBody(); - - const nsString mMessage; -}; - -} // namespace mozilla::dom - -#endif // mozilla_dom_TestReportBody_h diff --git a/dom/reporting/TestReportGenerator.cpp b/dom/reporting/TestReportGenerator.cpp @@ -1,68 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set ts=8 sts=2 et sw=2 tw=80: */ -/* 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/. */ - -#include "mozilla/dom/TestReportGenerator.h" - -#include "mozilla/dom/ReportingBinding.h" - -namespace mozilla::dom { - -/* static */ -already_AddRefed<Promise> TestReportGenerator::GenerateReport( - const GlobalObject& aGlobal, const GenerateTestReportParameters& aParams, - ErrorResult& aRv) { - nsCOMPtr<nsIGlobalObject> global = do_QueryInterface(aGlobal.GetAsSupports()); - MOZ_ASSERT(global); - - RefPtr<Promise> promise = Promise::Create(global, aRv); - if (NS_WARN_IF(aRv.Failed())) { - return nullptr; - } - MOZ_ASSERT(promise); - - nsString messageBody = aParams.mMessage; - if (messageBody.IsEmpty()) { - promise->MaybeRejectWithNotSupportedError( - "Report must have a message string"); - return promise.forget(); - } - - nsString reportGroup = aParams.mGroup; - - nsPIDOMWindowInner* window = global->GetAsInnerWindow(); - if (NS_WARN_IF(!window)) { - promise->MaybeRejectWithNotSupportedError( - "Failed to convert global object to window"); - return promise.forget(); - } - - RefPtr<TestReportBody> reportBody = new TestReportBody(global, messageBody); - - nsCOMPtr<nsIURI> docURI = window->GetDocumentURI(); - nsAutoCString spec; - if (!docURI || NS_FAILED(docURI->GetSpec(spec))) { - promise->MaybeRejectWithNotSupportedError( - "Failed to retrieve active document's URI from window"); - return promise.forget(); - } - - NS_ConvertUTF8toUTF16 docURIString(spec); - - ReportingUtils::Report(global, nsGkAtoms::test, reportGroup, docURIString, - reportBody); - - AutoJSAPI jsapi; - if (!jsapi.Init(global)) { - promise->MaybeRejectWithNotSupportedError( - "Failed to initialize JS context"); - return promise.forget(); - } - - promise->MaybeResolveWithUndefined(); - return promise.forget(); -} - -} // namespace mozilla::dom diff --git a/dom/reporting/TestReportGenerator.h b/dom/reporting/TestReportGenerator.h @@ -1,24 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set ts=8 sts=2 et sw=2 tw=80: */ -/* 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/. */ - -#ifndef mozilla_dom_TestReportGenerator_h -#define mozilla_dom_TestReportGenerator_h - -#include "mozilla/dom/Promise.h" - -namespace mozilla::dom { - -struct GenerateTestReportParameters; - -class TestReportGenerator { - public: - static already_AddRefed<Promise> GenerateReport( - const GlobalObject& aGlobal, const GenerateTestReportParameters& aParams, - ErrorResult& aRv); -}; -} // namespace mozilla::dom - -#endif // mozilla_dom_TestReportGenerator_h diff --git a/dom/reporting/moz.build b/dom/reporting/moz.build @@ -18,8 +18,6 @@ EXPORTS.mozilla.dom = [ "ReportingObserver.h", "ReportingUtils.h", "TestingDeprecatedInterface.h", - "TestReportBody.h", - "TestReportGenerator.h", ] UNIFIED_SOURCES += [ @@ -36,8 +34,6 @@ UNIFIED_SOURCES += [ "ReportingObserver.cpp", "ReportingUtils.cpp", "TestingDeprecatedInterface.cpp", - "TestReportBody.cpp", - "TestReportGenerator.cpp", ] IPDL_SOURCES += [ diff --git a/dom/reporting/tests/browser.toml b/dom/reporting/tests/browser.toml @@ -5,5 +5,3 @@ support-files = [ ] ["browser_cleanup.js"] - -["browser_reportGeneration.js"] diff --git a/dom/reporting/tests/browser_reportGeneration.js b/dom/reporting/tests/browser_reportGeneration.js @@ -1,52 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - https://creativecommons.org/publicdomain/zero/1.0/ */ - -add_task(async function () { - await SpecialPowers.pushPrefEnv({ - set: [ - ["dom.reporting.enabled", true], - ["dom.reporting.header.enabled", true], - ["dom.reporting.testing.enabled", true], - ], - }); -}); - -add_task(async function () { - let o = new ReportingObserver(() => {}); - o.observe(); - - await window.TestReportGenerator.generateReport({ - message: "test", - group: "test", - }); - - let r = o.takeRecords(); - is(r.length, 1, "Report delivery was observed"); - is(r[0].body.message, "test", "Message is correct"); - - await window.TestReportGenerator.generateReport({ message: "test" }); - - r = o.takeRecords(); - is(r.length, 1, "Report delivery was observed when no group was provided"); - - await Assert.rejects( - window.TestReportGenerator.generateReport(), - /TypeError/, - "generateReport emits a TypeError when message isn't provided" - ); -}); - -// test serialization of message as null property -add_task(async function () { - let o = new ReportingObserver(() => {}); - o.observe(); - - await window.TestReportGenerator.generateReport({ - message: null, - group: "test", - }); - - let r = o.takeRecords(); - is(r.length, 1, "Report delivery was observed"); - is(r[0].body.message, "null", "Message is correct"); -}); diff --git a/dom/webidl/Reporting.webidl b/dom/webidl/Reporting.webidl @@ -7,8 +7,6 @@ * https://w3c.github.io/reporting/#interface-reporting-observer */ -interface nsISupports; - [Pref="dom.reporting.enabled", Exposed=(Window,Worker)] interface ReportBody { @@ -114,21 +112,3 @@ dictionary ReportingEndpoint { // This is an unsigned long. any weight; }; - -dictionary GenerateTestReportParameters -{ - required DOMString message; - DOMString group = "default"; -}; - -[ChromeOnly, Pref="dom.reporting.enabled", Exposed=Window] -namespace TestReportGenerator { - [Throws] - Promise<undefined> generateReport(GenerateTestReportParameters params); -}; - -[LegacyNoInterfaceObject, Exposed=Window] -interface TestReportBody : ReportBody { - [Default] object toJSON(); - readonly attribute DOMString message; -}; diff --git a/remote/marionette/actors/MarionetteCommandsChild.sys.mjs b/remote/marionette/actors/MarionetteCommandsChild.sys.mjs @@ -220,9 +220,6 @@ export class MarionetteCommandsChild extends JSWindowActorChild { case "MarionetteCommandsParent:findElements": result = await this.findElements(data); break; - case "MarionetteCommandsParent:generateTestReport": - result = await this.generateTestReport(data); - break; case "MarionetteCommandsParent:getActiveElement": result = await this.getActiveElement(); break; @@ -390,17 +387,6 @@ export class MarionetteCommandsChild extends JSWindowActorChild { } /** - * Generates and sends a test report to be observed by any registered reporting observers - */ - async generateTestReport(options = {}) { - const { message, group } = options; - return this.browsingContext.window.TestReportGenerator.generateReport({ - message, - group, - }); - } - - /** * Return the active element in the document. */ async getActiveElement() { diff --git a/remote/marionette/actors/MarionetteCommandsParent.sys.mjs b/remote/marionette/actors/MarionetteCommandsParent.sys.mjs @@ -188,13 +188,6 @@ export class MarionetteCommandsParent extends JSWindowActorParent { }); } - generateTestReport(messageBody, messageGroup) { - return this.sendQuery("MarionetteCommandsParent:generateTestReport", { - message: messageBody, - group: messageGroup, - }); - } - async getShadowRoot(webEl) { return this.sendQuery("MarionetteCommandsParent:getShadowRoot", { elem: webEl, diff --git a/remote/marionette/driver.sys.mjs b/remote/marionette/driver.sys.mjs @@ -3598,41 +3598,6 @@ GeckoDriver.prototype.teardownReftest = function () { }; /** - * Implements the GenerateTestReport functionality of the Reporting API. - * - * @see https://w3c.github.io/reporting/#generate-test-report-command * - * - * @param {object} cmd - * @param {string} cmd.parameters.message - * The message contents of the report being generated. - * @param {string=} cmd.parameters.group - * The name of the reporting endpoint that the report should be sent to. - * @see https://www.w3.org/TR/reporting-1/#endpoint - * - * @throws {InvalidArgumentError} - * If a message argument wasn't passed in the parameters. - */ - -GeckoDriver.prototype.generateTestReport = async function (cmd) { - const { message, group = "default" } = cmd.parameters; - - lazy.assert.open(this.getBrowsingContext()); - await this._handleUserPrompts(); - - lazy.assert.string( - message, - lazy.pprint(`Expected "message" to be a string, got ${message}`) - ); - - lazy.assert.string( - group, - lazy.pprint(`Expected "group" to be a string, got ${group}`) - ); - - await this.getActor().generateTestReport(message, group); -}; - -/** * Print page as PDF. * * @param {object} cmd @@ -4095,9 +4060,6 @@ GeckoDriver.prototype.commands = { "GPC:GetGlobalPrivacyControl": GeckoDriver.prototype.getGlobalPrivacyControl, "GPC:SetGlobalPrivacyControl": GeckoDriver.prototype.setGlobalPrivacyControl, - // Reporting API test generation of reports - "Reporting:GenerateTestReport": GeckoDriver.prototype.generateTestReport, - // WebAuthn "WebAuthn:AddVirtualAuthenticator": GeckoDriver.prototype.addVirtualAuthenticator, diff --git a/testing/marionette/client/marionette_driver/marionette.py b/testing/marionette/client/marionette_driver/marionette.py @@ -2010,18 +2010,6 @@ class Marionette: return self._send_message("WebDriver:FindElements", body) - def generate_test_report(self, message, group=None): - """Generates a test report to be observed by registered reporting observers - - :param message: The message string to be used as the body of the generated report - :param group: The name of the endpoint that will receive the report - """ - body = {"message": message} - if group is not None: - body["group"] = group - - self._send_message("Reporting:GenerateTestReport", body) - def get_active_element(self): el_or_ref = self._send_message("WebDriver:GetActiveElement", key="value") return el_or_ref diff --git a/testing/marionette/harness/marionette_harness/tests/unit/test_generate_test_report.py b/testing/marionette/harness/marionette_harness/tests/unit/test_generate_test_report.py @@ -1,19 +0,0 @@ -from marionette_harness import MarionetteTestCase - - -class TestGenerateTestReport(MarionetteTestCase): - def setUp(self): - MarionetteTestCase.setUp(self) - self.prefsToSet = ["dom.reporting.enabled", "dom.reporting.testing.enabled"] - for pref in self.prefsToSet: - self.marionette.set_pref(pref, True) - - def tearDown(self): - for pref in self.prefsToSet: - self.marionette.clear_pref(pref) - - def test_generate_test_report(self): - self.marionette.generate_test_report("Test") - - def test_generate_test_report_different_group(self): - self.marionette.generate_test_report("Test", "different") diff --git a/testing/marionette/harness/marionette_harness/tests/unit/unit-tests.toml b/testing/marionette/harness/marionette_harness/tests/unit/unit-tests.toml @@ -104,8 +104,6 @@ skip-if = [ ["test_geckoinstance.py"] -["test_generate_test_report.py"] - ["test_get_computed_label.py"] ["test_get_computed_role.py"] diff --git a/testing/web-platform/meta/reporting/bufferSize.html.ini b/testing/web-platform/meta/reporting/bufferSize.html.ini @@ -0,0 +1,4 @@ +[bufferSize.html] + [Buffer size] + expected: FAIL + diff --git a/testing/web-platform/meta/reporting/disconnect.html.ini b/testing/web-platform/meta/reporting/disconnect.html.ini @@ -0,0 +1,5 @@ +[disconnect.html] + expected: + if (os == "android") and fission: [OK, TIMEOUT] + [Disconnect] + expected: FAIL diff --git a/testing/web-platform/meta/reporting/generateTestReport-honors-endpoint.https.sub.html.ini b/testing/web-platform/meta/reporting/generateTestReport-honors-endpoint.https.sub.html.ini @@ -0,0 +1,8 @@ +[generateTestReport-honors-endpoint.https.sub.html] + expected: + if (os == "android") and fission: [OK, TIMEOUT] + [Generate Test Report] + expected: FAIL + + [Reporting-Endpoints target received the test report.] + expected: FAIL diff --git a/testing/web-platform/meta/reporting/generateTestReport.html.ini b/testing/web-platform/meta/reporting/generateTestReport.html.ini @@ -0,0 +1,5 @@ +[generateTestReport.html] + expected: + if (os == "android") and fission: [OK, TIMEOUT] + [Generate Test Report] + expected: FAIL diff --git a/testing/web-platform/meta/reporting/nestedReport.html.ini b/testing/web-platform/meta/reporting/nestedReport.html.ini @@ -0,0 +1,7 @@ +[nestedReport.html] + expected: + if (os == "android") and debug and fission: [ERROR, TIMEOUT] + if (os == "android") and debug and not fission: [ERROR, TIMEOUT] + ERROR + [Nested report] + expected: TIMEOUT diff --git a/testing/web-platform/meta/reporting/order.html.ini b/testing/web-platform/meta/reporting/order.html.ini @@ -0,0 +1,7 @@ +[order.html] + expected: + if (os == "android") and debug and not fission: [ERROR, TIMEOUT] + if (os == "android") and debug and fission: [ERROR, TIMEOUT] + ERROR + [Order] + expected: TIMEOUT diff --git a/testing/web-platform/meta/reporting/reporting-api-honors-limits.https.sub.html.ini b/testing/web-platform/meta/reporting/reporting-api-honors-limits.https.sub.html.ini @@ -1,14 +1,10 @@ [reporting-api-honors-limits.https.sub.html] expected: TIMEOUT + [Buffer filled] + expected: FAIL - [CSP Report limits were honored] - expected: TIMEOUT - bug: 2003729 + [Test Report limits were honored] + expected: TIMEOUT # see bug 1909662 [Combined report limits were honored] expected: NOTRUN - bug: 2003729 - - [Test Report limits were honored] - expected: NOTRUN - bug: 2003729 diff --git a/testing/web-platform/tests/tools/wptrunner/wptrunner/executors/executormarionette.py b/testing/web-platform/tests/tools/wptrunner/wptrunner/executors/executormarionette.py @@ -577,8 +577,8 @@ class MarionetteGenerateTestReportProtocolPart(GenerateTestReportProtocolPart): def setup(self): self.marionette = self.parent.marionette - def generate_test_report(self, message): - self.marionette.generate_test_report(message) + def generate_test_report(self, config): + raise NotImplementedError("generate_test_report not yet implemented") class MarionetteVirtualAuthenticatorProtocolPart(VirtualAuthenticatorProtocolPart): def setup(self):