Open
Bug 1289193
Opened 8 years ago
Updated 2 years ago
[meta] Convert remaining devtools actors to protocol.js
Categories
(DevTools :: General, enhancement, P5)
Tracking
(Not tracked)
NEW
People
(Reporter: bgrins, Unassigned)
References
(Depends on 2 open bugs, Blocks 3 open bugs)
Details
(Keywords: meta)
This is a meta bug for converting the rest of the devtools actors to protocol.js
Reporter | ||
Updated•8 years ago
|
Summary: [meta] Convert remaining devtools actors to protocol.js → [meta-html] Convert remaining devtools actors to protocol.js
Severity: normal → enhancement
Priority: -- → P3
Updated•8 years ago
|
Summary: [meta-html] Convert remaining devtools actors to protocol.js → Convert remaining devtools actors to protocol.js
Whiteboard: [meta]
Comment 1•7 years ago
|
||
A quick overview of the last actors still not using protocol.js:
https://searchfox.org/mozilla-central/search?q=requestTypes&case=false®exp=false&path=devtools%2Fserver%2Factors%2F
There is 3 big buckets.
Here is the list of all the actors, with information about which actor and method instanciate them:
* RootActor and the various TabActor sub classes it instanciates
- RootActor
- TabActor (never directly instanciated, only via sub-classes)
ContentActor -> RootActor.getTab and RootActor.listTabs via BrowserTabActor.connect() and child.js
ChromeActor -> RootActor.getProcess(0)
WebExtensionChildActor -> (WebExtensionParentActor/webExtensionSpec).connect() via child.js
WindowActor -> RootActor.getWindow()
- BrowserAddonActor -> RootActor.listAddons
AddonConsoleActor -> in BrowserAddonActor.form(), so during RootActor.listAddons
- ChildProcessActor -> RootActor.getProcess via content-server.jsm
* ObjectActor and related
- ObjectActor -> From most methods of PromisesActor and WebConsoleActor
PausedScopedObjectActor -> From most methods of EnvironmentActor, FrameActor, SourceActor and ThreadActor
- SymbolActor -> via createValueGrip, so similar to ObjectActor and PauseScopedObjectActor
- LongStringActor -> via createValueGrip, so similar to ObjectActor and PauseScopedObjectActor
-> StyleSheetActor.getText, NodeActor.getNodeValue, Device.getWallpaper/screenshotToDataURL
-> From many methods of WebConsoleActor, StorageActors
- PropertyIteratorActor -> ObjectActor.enumProperties/enumEntries
- SymbolIteratorActor -> ObjectActor.enumSymbols
* Various ones
Related to debugger:
- ArrayBufferActor -> SourceActor.onSource
- ThreadActor -> TabActor.attach and WorkerActor.connect
Related to console and netmon:
- WebConsoleActor -> As a tab actor, so created automagically from here:
https://searchfox.org/mozilla-central/source/devtools/server/main.js#1610
- NetworkEventActor -> Emitted by WebConsoleActor in networkEvent events, and returned by WebConsoleActor.sendHTTPRequest
I'm expecting the second bucket to be the more tedious one as these actor are used in many places.
The first bucket may not be naive as well as RootActor's code to instanciate the TabActors is quite abstracted.
I imagine we should use the same approach Eddy had, by first refactoring only the actors to use protocol.js and eventually convert the clients to use fronts in followups.
Blocks: 1439048
Blocks: dt-polish-debt
Comment 2•7 years ago
|
||
Here is the lessons learned from bug 1449162:
* `actorPrefix` becomes `typeName` on the spec object,
* `grip()` function becomes `form()` on the actor,
* We can remove `from` attributes in all in returned responses and only keep actual data you want to send to the client,
* remember calling `protocol.Actor.prototype.initialize.call(this, conn);` from your actor's `initialize` method to get events to work as expected and `protocol.Actor.prototype.destroy.call(this);` if you overload `destroy` method, in order to cleans things up correctly.
Priority: P3 → P5
Summary: Convert remaining devtools actors to protocol.js → [meta] Convert remaining devtools actors to protocol.js
Blocks: 698841
No longer depends on: 1265733
No longer depends on: 1265717
Depends on: 1274681
Thanks Alex for summarizing the remaining work to convert the actor side to protocol.js. I have tried to clean up the bug zoo left behind during various prior attempts at this.
Bug 1037992 and dependencies cover debugger-related actors.
Bug 1265736 and dependencies cover console and network event related actors.
Bug 1274681 covers the add-on actor.
For other actors, there's no bug filed yet.
Yulia, maybe you could start by filing bugs for the remaining actors from Alex's list without bugs, so we have a complete picture of the work? If it's not clear what to file or where they should go, let's talk about it!
All such actor conversion bugs should fall somewhere under this bug directly or one it depends on, so that they appear in the dependency tree:
https://bugzilla.mozilla.org/showdependencytree.cgi?id=1289193&hide_resolved=1
Everything under this bug is just about actors only. Old-style clients should also be converted to protocol.js fronts as well. I have filed bug 1450150 to track the conversion to fronts.
Flags: needinfo?(ystartsev)
No longer blocks: dt-polish-debt, 1439048
Depends on: 1454827
Updated•6 years ago
|
Product: Firefox → DevTools
Comment 5•5 years ago
|
||
It looks like as of today, the only two actors which are not converted to protocol.js are:
- RootActor (bug 1450943), where I submitted a patch
- ThreadActor (bug 1037992)
Updated•2 years ago
|
Severity: normal → S3
You need to log in
before you can comment on or make changes to this bug.
Description
•