Closed Bug 1509781 Opened 6 years ago Closed 6 years ago

Inspector is broken when connecting to a server that doesn't support Changes actor

Categories

(DevTools :: Inspector, defect, P3)

defect

Tracking

(firefox65 fixed)

RESOLVED FIXED
Firefox 65
Tracking Status
firefox65 --- fixed

People

(Reporter: jdescottes, Assigned: jdescottes)

References

Details

Attachments

(2 files)

Attached image image.png
STRs to start remote debugging of another desktop Firefox:
- start firefox 63 (current release) in debugger-server mode (`./firefox --start-debugger-server`), note the port on which the server opens (6080 by default)
- start current Nightly, go to about:config
- set (or create) devtools.aboutdebugging.network to true
- set devtools.aboutdebugging.new-enabled to true
- open about:debugging, go to connect
- in network locations, add `localhost:6080` (or any other port from step 1)
- connect to this runtime from the sidebar, accept the prompt on Fx 63
- select the runtime
- inspect a tab, accept the prompt on Fx 63

ER: Inspector should work
AR: Inspector layout is broken

Error in the console:
> Error: "Can't manage front without an actor ID.
> Ensure server supports changes."
>    	manage resource://devtools/shared/protocol.js:1326
>    	initialize resource://devtools/shared/fronts/changes.js:16
>    	cls resource://devtools/shared/protocol.js:1617
>    	getFront resource://devtools/shared/protocol.js:1698
>    	getFront resource://devtools/client/framework/target.js:398
>    	_deferredOpen resource://devtools/client/inspector/inspector.js:275
>    	init resource://devtools/client/inspector/inspector.js:170
>    	open resource://devtools/client/inspector/panel.js:12
>     	onLoad resource://devtools/client/framework/toolbox.js:1793

Regression from Bug 1508353.

To fix it we need to check in the inspector if the server supports the changes actor before activating the panel:

> 
> if (Services.prefs.getBoolPref(TRACK_CHANGES_PREF)) {
>   // Get the Changes front, then call a method on it, which will instantiate
>   // the ChangesActor. We want the ChangesActor to be guaranteed available before
>   // the user makes any changes.
>   this.changesFront = await this.toolbox.target.getFront("changes");
>   this.changesFront.start();
> }
> 
https://searchfox.org/mozilla-central/rev/f997bd6bbfc4773e774fdb6cd010142370d186f9/devtools/client/inspector/inspector.js#272-278


Note that we should probably fix at least another spot which depends on the same preference. https://searchfox.org/mozilla-central/rev/f997bd6bbfc4773e774fdb6cd010142370d186f9/devtools/client/inspector/inspector.js#944-951
Assignee: nobody → jdescottes
Status: NEW → ASSIGNED
This will enable connecting to Firefox 63 (and 64? not sure in which release the changes actor
was introduced) from Nightly. Pinging yulia for review to check if there is a better way to handle such
backward compatible code when using the getFront API.
Pushed by jdescottes@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/f2f2f8b59557
Check if server supports changes actor to enable Changes panel;r=yulia,rcaliman
https://hg.mozilla.org/mozilla-central/rev/f2f2f8b59557
Status: ASSIGNED → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 65
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: