tor-browser

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

commit da3530396238bed78b46aaf9a1951f17144c2b5b
parent 4948cc8c8100d9657a1d3388c04bb8f336cb0017
Author: Nicolas Chevobbe <nchevobbe@mozilla.com>
Date:   Tue,  7 Oct 2025 05:35:36 +0000

Bug 1599082 - [devtools] Remove external usage of static EventEmitter methods. r=devtools-reviewers,jdescottes.

Replace those with inheritance/decorations, extends classes that needed it.
Next patch in stack will remove the static methods alltogether.

Differential Revision: https://phabricator.services.mozilla.com/D267589

Diffstat:
Mdevtools/client/fronts/accessibility.js | 7+++----
Mdevtools/docs/contributor/backend/protocol.js.md | 4+---
Mdevtools/server/actors/accessibility/accessible.js | 7+------
Mdevtools/server/actors/accessibility/walker.js | 44+++++++++++++++++---------------------------
Mdevtools/server/actors/highlighters/measuring-tool.js | 3---
Mdevtools/server/actors/highlighters/rulers.js | 3---
Mdevtools/server/actors/highlighters/viewport-size.js | 3---
Mdevtools/server/actors/webconsole.js | 10++++------
Mdevtools/server/connectors/content-process-connector.js | 4++--
Mdevtools/server/connectors/frame-connector.js | 4++--
Mdevtools/server/performance/memory.js | 4++--
Mdevtools/server/tests/chrome/test_memory_gc_events.html | 12+++---------
Mdevtools/shared/protocol/tests/xpcshell/test_protocol_longstring.js | 13++-----------
Mdevtools/shared/protocol/tests/xpcshell/test_protocol_simple.js | 5++---
14 files changed, 39 insertions(+), 84 deletions(-)

diff --git a/devtools/client/fronts/accessibility.js b/devtools/client/fronts/accessibility.js @@ -15,7 +15,6 @@ const { parentAccessibilitySpec, simulatorSpec, } = require("resource://devtools/shared/specs/accessibility.js"); -const events = require("resource://devtools/shared/event-emitter.js"); class AccessibleFront extends FrontClassWithSpec(accessibleSpec) { constructor(client, targetFront, parentFront) { @@ -102,7 +101,7 @@ class AccessibleFront extends FrontClassWithSpec(accessibleSpec) { // accessibility walker as the point of interaction for UI. const accessibilityWalkerFront = this.getParent(); if (accessibilityWalkerFront) { - events.emit(accessibilityWalkerFront, "name-change", this, parent); + accessibilityWalkerFront.emit("name-change", this, parent); } } @@ -124,7 +123,7 @@ class AccessibleFront extends FrontClassWithSpec(accessibleSpec) { // accessibility walker as the point of interaction for UI. const accessibilityWalkerFront = this.getParent(); if (accessibilityWalkerFront) { - events.emit(accessibilityWalkerFront, "reorder", this); + accessibilityWalkerFront.emit("reorder", this); } } @@ -133,7 +132,7 @@ class AccessibleFront extends FrontClassWithSpec(accessibleSpec) { // accessibility walker as the point of interaction for UI. const accessibilityWalkerFront = this.getParent(); if (accessibilityWalkerFront) { - events.emit(accessibilityWalkerFront, "text-change", this); + accessibilityWalkerFront.emit("text-change", this); } } diff --git a/devtools/docs/contributor/backend/protocol.js.md b/devtools/docs/contributor/backend/protocol.js.md @@ -464,11 +464,9 @@ Here's how you'd set it up in a spec: Here's how the implementation would look: - const EventEmitter = require("devtools/shared/event-emitter"); - // In your Actor class: giveGoodNews(news) { - EventEmitter.emit(this, "good-news", news); + this.emit("good-news", news); } Now you can listen to events on a front: diff --git a/devtools/server/actors/accessibility/accessible.js b/devtools/server/actors/accessibility/accessible.js @@ -45,11 +45,6 @@ loader.lazyRequireGetter( ); loader.lazyRequireGetter( this, - "events", - "resource://devtools/shared/event-emitter.js" -); -loader.lazyRequireGetter( - this, "getBounds", "resource://devtools/server/actors/highlighters/utils/accessibility.js", true @@ -627,7 +622,7 @@ class AccessibleActor extends Actor { }, {}); this._lastAudit = this._lastAudit || {}; Object.assign(this._lastAudit, audit); - events.emit(this, "audited", audit); + this.emit("audited", audit); return audit; }) diff --git a/devtools/server/actors/accessibility/walker.js b/devtools/server/actors/accessibility/walker.js @@ -639,7 +639,7 @@ class AccessibleWalkerActor extends Actor { this.clearRefs(); // If it's a top level document notify listeners about the document // being ready. - events.emit(this, "document-ready", rawAccessible); + this.emit("document-ready", rawAccessible); } } @@ -658,15 +658,14 @@ class AccessibleWalkerActor extends Actor { } return; } - events.emit(accessible, "states-change", accessible.states); + accessible.emit("states-change", accessible.states); } break; } case EVENT_NAME_CHANGE: if (accessible) { - events.emit( - accessible, + accessible.emit( "name-change", rawAccessible.name, event.DOMNode == this.rootDoc @@ -677,16 +676,12 @@ class AccessibleWalkerActor extends Actor { break; case EVENT_VALUE_CHANGE: if (accessible) { - events.emit(accessible, "value-change", rawAccessible.value); + accessible.emit("value-change", rawAccessible.value); } break; case EVENT_DESCRIPTION_CHANGE: if (accessible) { - events.emit( - accessible, - "description-change", - rawAccessible.description - ); + accessible.emit("description-change", rawAccessible.description); } break; case EVENT_REORDER: @@ -694,9 +689,9 @@ class AccessibleWalkerActor extends Actor { accessible .children() .forEach(child => - events.emit(child, "index-in-parent-change", child.indexInParent) + child.emit("index-in-parent-change", child.indexInParent) ); - events.emit(accessible, "reorder", rawAccessible.childCount); + accessible.emit("reorder", rawAccessible.childCount); } break; case EVENT_HIDE: @@ -709,17 +704,16 @@ class AccessibleWalkerActor extends Actor { case EVENT_DEFACTION_CHANGE: case EVENT_ACTION_CHANGE: if (accessible) { - events.emit(accessible, "actions-change", accessible.actions); + accessible.emit("actions-change", accessible.actions); } break; case EVENT_TEXT_CHANGED: case EVENT_TEXT_INSERTED: case EVENT_TEXT_REMOVED: if (accessible) { - events.emit(accessible, "text-change"); + accessible.emit("text-change"); if (NAME_FROM_SUBTREE_RULE_ROLES.has(rawAccessible.role)) { - events.emit( - accessible, + accessible.emit( "name-change", rawAccessible.name, event.DOMNode == this.rootDoc @@ -733,17 +727,13 @@ class AccessibleWalkerActor extends Actor { case EVENT_OBJECT_ATTRIBUTE_CHANGED: case EVENT_TEXT_ATTRIBUTE_CHANGED: if (accessible) { - events.emit(accessible, "attributes-change", accessible.attributes); + accessible.emit("attributes-change", accessible.attributes); } break; // EVENT_ACCELERATOR_CHANGE is currently not fired by gecko accessibility. case EVENT_ACCELERATOR_CHANGE: if (accessible) { - events.emit( - accessible, - "shortcut-change", - accessible.keyboardShortcut - ); + accessible.emit("shortcut-change", accessible.keyboardShortcut); } break; default: @@ -961,7 +951,7 @@ class AccessibleWalkerActor extends Actor { if (!this._currentAccessible) { this._currentAccessible = this._findAndAttachAccessible(event); } - events.emit(this, "picker-accessible-previewed", this._currentAccessible); + this.emit("picker-accessible-previewed", this._currentAccessible); return; } @@ -970,7 +960,7 @@ class AccessibleWalkerActor extends Actor { if (!this._currentAccessible) { this._currentAccessible = this._findAndAttachAccessible(event); } - events.emit(this, "picker-accessible-picked", this._currentAccessible); + this.emit("picker-accessible-picked", this._currentAccessible); } /** @@ -1000,7 +990,7 @@ class AccessibleWalkerActor extends Actor { // the most current accessible again. const shown = await this.highlightAccessible(accessible); if (this._isPicking && shown && accessible === this._currentAccessible) { - events.emit(this, "picker-accessible-hovered", accessible); + this.emit("picker-accessible-hovered", accessible); } } @@ -1033,7 +1023,7 @@ class AccessibleWalkerActor extends Actor { // Cancel pick mode. case event.DOM_VK_ESCAPE: this.cancelPick(); - events.emit(this, "picker-accessible-canceled"); + this.emit("picker-accessible-canceled"); break; case event.DOM_VK_C: if ( @@ -1041,7 +1031,7 @@ class AccessibleWalkerActor extends Actor { (!IS_OSX && event.ctrlKey && event.shiftKey) ) { this.cancelPick(); - events.emit(this, "picker-accessible-canceled"); + this.emit("picker-accessible-canceled"); } break; default: diff --git a/devtools/server/actors/highlighters/measuring-tool.js b/devtools/server/actors/highlighters/measuring-tool.js @@ -4,7 +4,6 @@ "use strict"; -const EventEmitter = require("resource://devtools/shared/event-emitter.js"); const { getCurrentZoom, getWindowDimensions, @@ -232,8 +231,6 @@ class MeasuringToolHighlighter { } this.markup.destroy(); - - EventEmitter.emit(this, "destroy"); } show() { diff --git a/devtools/server/actors/highlighters/rulers.js b/devtools/server/actors/highlighters/rulers.js @@ -4,7 +4,6 @@ "use strict"; -const EventEmitter = require("resource://devtools/shared/event-emitter.js"); const { getCurrentZoom, setIgnoreLayoutChanges, @@ -277,8 +276,6 @@ class RulersHighlighter { } this.markup.destroy(); - - EventEmitter.emit(this, "destroy"); } show() { diff --git a/devtools/server/actors/highlighters/viewport-size.js b/devtools/server/actors/highlighters/viewport-size.js @@ -4,7 +4,6 @@ "use strict"; -const EventEmitter = require("resource://devtools/shared/event-emitter.js"); const { setIgnoreLayoutChanges, } = require("resource://devtools/shared/layout/utils.js"); @@ -139,8 +138,6 @@ class ViewportSizeHighlighter { this.parent = null; this.markup = null; this.isReady = null; - - EventEmitter.emit(this, "destroy"); } show() { diff --git a/devtools/server/actors/webconsole.js b/devtools/server/actors/webconsole.js @@ -154,8 +154,7 @@ class WebConsoleActor extends Actor { this.onConsoleAPICall = this.onConsoleAPICall.bind(this); this.onDocumentEvent = this.onDocumentEvent.bind(this); - EventEmitter.on( - this.targetActor, + this.targetActor.on( "changed-toplevel-document", this._onChangedToplevelDocument ); @@ -278,7 +277,7 @@ class WebConsoleActor extends Actor { this._evalGlobal = global; if (!this._progressListenerActive) { - EventEmitter.on(this.targetActor, "will-navigate", this._onWillNavigate); + this.targetActor.on("will-navigate", this._onWillNavigate); this._progressListenerActive = true; } } @@ -328,8 +327,7 @@ class WebConsoleActor extends Actor { this.stopListeners(); super.destroy(); - EventEmitter.off( - this.targetActor, + this.targetActor.off( "changed-toplevel-document", this._onChangedToplevelDocument ); @@ -1654,7 +1652,7 @@ class WebConsoleActor extends Actor { _onWillNavigate({ isTopLevel }) { if (isTopLevel) { this._evalGlobal = null; - EventEmitter.off(this.targetActor, "will-navigate", this._onWillNavigate); + this.targetActor.off("will-navigate", this._onWillNavigate); this._progressListenerActive = false; } } diff --git a/devtools/server/connectors/content-process-connector.js b/devtools/server/connectors/content-process-connector.js @@ -88,7 +88,7 @@ function connectToContentProcess(connection, mm, onDestroy) { onMessageManagerClose, "message-manager-close" ); - EventEmitter.off(connection, "closed", onClose); + connection.off("closed", onClose); if (childTransport) { // If we have a child transport, the actor has already // been created. We need to stop using this message manager. @@ -116,7 +116,7 @@ function connectToContentProcess(connection, mm, onDestroy) { }); Services.obs.addObserver(onMessageManagerClose, "message-manager-close"); - EventEmitter.on(connection, "closed", onClose); + connection.on("closed", onClose); }); } diff --git a/devtools/server/connectors/frame-connector.js b/devtools/server/connectors/frame-connector.js @@ -88,7 +88,7 @@ function connectToFrame(connection, frame, onDestroy) { }); const destroy = DevToolsUtils.makeInfallible(function () { - EventEmitter.off(connection, "closed", destroy); + connection.off("closed", destroy); Services.obs.removeObserver( onMessageManagerClose, "message-manager-close" @@ -153,7 +153,7 @@ function connectToFrame(connection, frame, onDestroy) { // Listen for connection close to cleanup things // when user unplug the device or we lose the connection somehow. - EventEmitter.on(connection, "closed", destroy); + connection.on("closed", destroy); mm.sendAsyncMessage("debug:connect", { prefix, diff --git a/devtools/server/performance/memory.js b/devtools/server/performance/memory.js @@ -66,12 +66,12 @@ function Memory(parent, frameCache = new StackFrameCache()) { this._emitAllocations = this._emitAllocations.bind(this); this._onWindowReady = this._onWindowReady.bind(this); - EventEmitter.on(this.parent, "window-ready", this._onWindowReady); + this.parent.on("window-ready", this._onWindowReady); } Memory.prototype = { destroy() { - EventEmitter.off(this.parent, "window-ready", this._onWindowReady); + this.parent.off("window-ready", this._onWindowReady); this._mgr = null; if (this.state === "attached") { diff --git a/devtools/server/tests/chrome/test_memory_gc_events.html b/devtools/server/tests/chrome/test_memory_gc_events.html @@ -18,21 +18,15 @@ Bug 1137527 - Test receiving GC events from the memory actor. window.onload = function() { SimpleTest.waitForExplicitFinish(); - const EventEmitter = require("devtools/shared/event-emitter"); - (async function() { const { memory, target } = await startServerAndGetSelectedTabMemory(); await memory.attach(); - const gotGcEvent = new Promise(resolve => { - EventEmitter.on(memory, "garbage-collection", gcData => { - ok(gcData, "Got GC data"); - resolve(); - }); - }); + const onGcEvent = memory.once("garbage-collection"); memory.forceGarbageCollection(); - await gotGcEvent; + const gcData = await onGcEvent; + ok(gcData, "Got GC data"); await memory.detach(); destroyServerAndFinish(target); diff --git a/devtools/shared/protocol/tests/xpcshell/test_protocol_longstring.js b/devtools/shared/protocol/tests/xpcshell/test_protocol_longstring.js @@ -9,7 +9,6 @@ */ var protocol = require("resource://devtools/shared/protocol.js"); var { RetVal, Arg } = protocol; -var EventEmitter = require("resource://devtools/shared/event-emitter.js"); var { LongStringActor, } = require("resource://devtools/server/actors/string.js"); @@ -79,19 +78,11 @@ class RootActor extends protocol.Actor { } emitShortString() { - EventEmitter.emit( - this, - "string-event", - new LongStringActor(this.conn, SHORT_STR) - ); + this.emit("string-event", new LongStringActor(this.conn, SHORT_STR)); } emitLongString() { - EventEmitter.emit( - this, - "string-event", - new LongStringActor(this.conn, LONG_STR) - ); + this.emit("string-event", new LongStringActor(this.conn, LONG_STR)); } } diff --git a/devtools/shared/protocol/tests/xpcshell/test_protocol_simple.js b/devtools/shared/protocol/tests/xpcshell/test_protocol_simple.js @@ -9,7 +9,6 @@ var protocol = require("resource://devtools/shared/protocol.js"); var { Arg, Option, RetVal } = protocol; -var EventEmitter = require("resource://devtools/shared/event-emitter.js"); const rootSpec = protocol.generateActorSpec({ typeName: "root", @@ -141,11 +140,11 @@ class RootActor extends protocol.Actor { testOneWay(a) { // Emit to show that we got this message, because there won't be a response. - EventEmitter.emit(this, "oneway", a); + this.emit("oneway", a); } emitFalsyOptions() { - EventEmitter.emit(this, "falsyOptions", { zero: 0, farce: false }); + this.emit("falsyOptions", { zero: 0, farce: false }); } }