firebug / rdp-inspector Goto Github PK
View Code? Open in Web Editor NEWRemote debugger protocol inspector
Remote debugger protocol inspector
I am seeing this error (FBTrace console, browser console) sometimes when trying to select a packet in the list.
Any clues?
Honza
It looks like we need to change the inspector-actor.js
to support changes in the protocol.js ActorClass, which currently raises the following error:
console.error: rdpinspector: JPM [error] Message: TypeError: actorProto is undefined Stack: ActorClass@resource://devtools/shared/protocol.js:1107:3 @resource://rdpinspector-at-getfirebug-dot-com/lib/inspector-actor.js:108:22
...
By looking at the usage of ActorClass in the actors define in the mozilla-central repo, it looks like we need to make the same change introduced to the standard RDP actors into our custom "lazily injected" inspector-actor, e.g. the protocol specs needs to be passed as a separate parameter and created using the new generateActorSpec
helper defined in the protocol.js module.
Useful references:
Every time the packet summary (clicked on the Summary button in the toolbar) is created, the packet list should automatically scroll down, so it's visible.
Honza
Open RDP connection with a simulator (using WebIDE) and try to listen to the RDP packets. The problem is that the connection is not listed in the Connections window - the WebIDE tab is empty.
STR:
Connecting through the Connect page should also be supported (Web Developer -> Connect ...)
Note: checking the 'Open automatically on new WebIDE connections' option doesn't work either. If I checked and re-open the menu, it's unchecked again.
Honza
In 47, we enabled warnings for old DevTools paths. It should be safe to just update old paths without maintaining both versions, since the "new" paths are in Release now.
13:53:27.830 DEPRECATION WARNING: This path to gDevTools.jsm is deprecated. Please use Cu.import("resource://devtools/client/framework/gDevTools.jsm") to load this module.
You may find more details about this deprecation at: https://bugzil.la/912121
resource:///modules/devtools/client/framework/gDevTools.jsm 19 null
resource://gre/modules/commonjs/toolkit/loader.js -> resource://rdpinspector-at-getfirebug-dot-com/node_modules/firebug.sdk/lib/core/devtools.js 18 safeImport
resource://gre/modules/commonjs/toolkit/loader.js -> resource://rdpinspector-at-getfirebug-dot-com/node_modules/firebug.sdk/lib/core/devtools.js 97 null
resource://gre/modules/commonjs/toolkit/loader.js 279 evaluate
resource://gre/modules/commonjs/toolkit/loader.js 331 load
resource://gre/modules/commonjs/toolkit/loader.js 653 _require
resource://gre/modules/commonjs/toolkit/loader.js 607 require
resource://gre/modules/commonjs/toolkit/loader.js -> resource://rdpinspector-at-getfirebug-dot-com/node_modules/firebug.sdk/lib/core/window.js 11 null
resource://gre/modules/commonjs/toolkit/loader.js 279 evaluate
resource://gre/modules/commonjs/toolkit/loader.js 331 load
resource://gre/modules/commonjs/toolkit/loader.js 653 _require
resource://gre/modules/commonjs/toolkit/loader.js 607 require
resource://gre/modules/commonjs/toolkit/loader.js -> resource://rdpinspector-at-getfirebug-dot-com/node_modules/firebug.sdk/lib/context.js 12 null
resource://gre/modules/commonjs/toolkit/loader.js 279 evaluate
resource://gre/modules/commonjs/toolkit/loader.js 331 load
resource://gre/modules/commonjs/toolkit/loader.js 653 _require
resource://gre/modules/commonjs/toolkit/loader.js 607 require
resource://gre/modules/commonjs/toolkit/loader.js -> resource://rdpinspector-at-getfirebug-dot-com/node_modules/firebug.sdk/lib/toolbox-chrome.js 18 null
resource://gre/modules/commonjs/toolkit/loader.js 279 evaluate
resource://gre/modules/commonjs/toolkit/loader.js 331 load
resource://gre/modules/commonjs/toolkit/loader.js 653 _require
resource://gre/modules/commonjs/toolkit/loader.js 607 require
resource://gre/modules/commonjs/toolkit/loader.js -> resource://rdpinspector-at-getfirebug-dot-com/lib/main.js 8 null
resource://gre/modules/commonjs/toolkit/loader.js 279 evaluate
resource://gre/modules/commonjs/toolkit/loader.js 331 load
resource://gre/modules/commonjs/toolkit/loader.js 768 main
resource://gre/modules/commonjs/toolkit/loader.js -> resource://rdpinspector-at-getfirebug-dot-com/index.js 32 null
resource://gre/modules/commonjs/toolkit/loader.js 279 evaluate
resource://gre/modules/commonjs/toolkit/loader.js 331 load
resource://gre/modules/commonjs/toolkit/loader.js 768 main
resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/addon/runner.js 147 run
resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/addon/runner.js 87 startup/</<
resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js 937 Handler.prototype.process
resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js 816 this.PromiseWalker.walkerLoop
Trying devtools in Nightly (47.0a1 from 8ef94be995a453f5c464278c53478ba8c8554f81)
Having trouble
Trying to install rdpinspector to debug
Having more trouble:
rdpinspector:TypeError: gDevTools is undefined
Stack trace:
ToolboxChrome<.initialize@resource://gre/modules/commonjs/toolkit/loader.js -> resource://rdpinspector-at-getfirebug-dot-com/node_modules/firebug.sdk/lib/toolbox-chrome.js:48:5
main@resource://gre/modules/commonjs/toolkit/loader.js -> resource://rdpinspector-at-getfirebug-dot-com/lib/main.js:29:3
run@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/addon/runner.js:153:7
startup/</<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/addon/runner.js:87:9
Handler.prototype.process@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:937:23
this.PromiseWalker.walkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:816:7
Promise*this.PromiseWalker.scheduleWalkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:747:11
this.PromiseWalker.schedulePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:779:7
this.PromiseWalker.completePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:714:7
handler@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/addon/window.js:56:3
EventListener.handleEvent*EventTargetInterposition.methods.addEventListener@resource://gre/modules/RemoteAddonsParent.jsm:626:5
AddonInterpositionService.prototype.interposeProperty/desc.value@resource://gre/components/multiprocessShims.js:160:52
@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/addon/window.js:54:1
evaluate@resource://gre/modules/commonjs/toolkit/loader.js:279:19
load@resource://gre/modules/commonjs/toolkit/loader.js:331:5
_require@resource://gre/modules/commonjs/toolkit/loader.js:653:16
require@resource://gre/modules/commonjs/toolkit/loader.js:607:12
startup/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/addon/runner.js:72:21
Handler.prototype.process@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:937:23
this.PromiseWalker.walkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:816:7
Promise*this.PromiseWalker.scheduleWalkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:747:11
this.PromiseWalker.schedulePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:779:7
this.PromiseWalker.completePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:714:7
listener/<@resource://gre/modules/sdk/system/Startup.js:51:46
etc..
yo, wassup?
I've a feeling that I broke it, but not sure where :-)
Honza
RDPi is also using the protocol and it would be great to identify and hide these packets. It's a bit confusing for the user since those aren't expected.
Honza
This is a follow up for issue #52
The following description taken from related pull request: #60
Currently if you open RDPi window with WebIDE you can't inspect RDP communication for a Toolbox. Similar problem was there already before, it isn't possible to intercept packets for the second opened Toolbox.
I think we still need a drop-down list (a combo-box) with list of all available connections (including Toolbox and WebIDE connections) displayed at the top of the RDPi window allowing the user to pick a connection to observe...
I am thinking about the following use cases:
A RDPi opened when there is no connection
Q: we could auto-select connection in the list according to the currently selected toolbox (can be a follow up).
B RDPi opened when there is a connection
Further comments:
Honza
It would be great to see packet generated by WebIDE tool. Both should be supported, communication with the simulator and real remote devices.
The WebIDE runs in its own window and don't have the RDP Inspector icon, so currently there is no (user) way to attach to its Connection object.
UX:
I thinks that there could be a list of all connections in RDPi toolbar and the user could just pick the one that should be intercepted.
Let's discuss on our meeting.
Honza
The main tab bar should have a search box on the right side. Just like a panel in the developer Toolbox.
The search box should be used to filter the packet list
It should be possible to filter according to:
(can be implemented as follows ups)
Honza
Packets in the packet list should have little arrows:
Just like every modern chat app does with text messages.
Honza
The Actors tab should show:
It should be possible to refresh the view anytime using a 'Refresh' button on the panel's toolbar.
Honza
If the initial packet cache reaches its limit, it should remember number of removed packets and make sure it's displayed at the top of the packet list.
Honza
STR:
Error: Wrong State: Expected 'detached', but current state is 'attached'
Stack trace:
expectState/<@resource://rdpinspector-at-getfirebug-dot-com/lib/inspector-actor.js:57:29
actorProto/</handler@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/protocol.js:1013:19
DSC_onPacket@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/main.js:1601:15
LocalDebuggerTransport.prototype.send/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/shared/transport/transport.js:569:11
makeInfallible/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/shared/DevToolsUtils.js:87:14
makeInfallible/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/shared/DevToolsUtils.js:87:14
Honza
I am seeing the following error when opening RDPi Console:
(Firefox Nightly)
Console Service ERROR [JavaScript Error: "TypeError: Rdp.registerGlobalActor(...) is undefined" {file: "resource://gre/modules/commonjs/toolkit/loader.js -> resource://rdpinspector-at-getfirebug-dot-com/lib/inspector-service.js" line: 280}] [JavaScript Error: "TypeError: Rdp.registerGlobalActor(...) is undefined" {file: "resource://gre/modules/commonjs/toolkit/loader.js -> resource://rdpinspector-at-getfirebug-dot-com/lib/inspector-service.js" line: 280}]
@rpl Any tips why this happens?
Honza
There is a 'Bookmark' button in the main toolbar and clicking on it should insert horizontal separator into the list of packets.
The separator should:
Honza
There is an 'Options' button in the Packets panel.
There is an option waiting to be implemented
Cache packets before the inspector is opened
Packets are cached till the inspector window is opened, so the user can see also packets fired at the very beginning. It should be possible to switch this off (to avoid performance penalties)
Honza
Packet filtering should be case insensitive by default.
There can be an option that allows both: case sensitive and insensitive filtering.
(can be done as a followup)
Honza
There should be an option (in the Options button on the main toolbar) that allows to open the Inspector window by default when the Firefox is launched.
Honza
I would really love to have a way to edit and resend an RDP packet (like the DevTools do in the Network panel).
Here is a test case:
version: 1.0.4.1-signed
Florent
On the latest Nightly, RDP inspector doesn't work and there is this error in the browser console:
TypeError: postChromeMessage is not a function main.js:52:1
The postChromeMessage
function is defined in frame-script.js
, where there's another error reported, so the definition code is never even called:
SyntaxError: "use strict" not allowed in function with destructuring parameter frame-script.js:12
This error seems like something recently introduced in SpiderMonkey?
A splitter reactjs component is needed.
Usage as follows:
Splitter({mode: "vertical", left: DIV(), right: DIV()};
Rendered e.g. in between the packet list and packet details component.
Honza
There is an 'Options' button in the Packets panel.
There is an option waiting to be implemented
Show inline packets details
An inline property preview is displayed within a packet in the packet list.
Search for TreeView({data: previewData, mode: mode}) in packet.js
Honza
Since around 15-Dec-2016, the RDP inspector is broken - no packets are ever displayed in the UI and the addon logs an error about "window.postChromeMessage" being null.
Mozregression told me that the breaking change is bug 1322414. This changed the syntax for:
<browser type="content-primary">
to
<browser type="content" primary="true">
with no backward compatibility.
Fixing the <browser>
elements in connections-window.xul
and inspector-window.xul
makes the RDP inspector work again.
A bad thing is that there is no way to specify content-primary
in a way that works both before and after. But even if I remove the primary
attribute, the inspector still works well, so maybe just <browser type="content">
is good enough in this case.
The readme file should contain a download link.
Florent
It should be possible to show/hide the side panel using a button on the right side of the console toolbar. Check out Firebug.next theme to see how this should look like.
Honza
React components should be directly exported from modules (not using createFactory).
The client should be always responsible for calling createFactory.
This will also help to write tests.
Honza
There should be context menu within the RDP console window.
Honza
In a local fxteam build, I see the following error. In https://bugzilla.mozilla.org/show_bug.cgi?id=912121 the path to some devtools modules (including DevToolsUtils) has changed:
console.error: rdpinspector:
Message: Module `devtools/toolkit/DevToolsUtils.js` is not found at resource://gre/modules/devtools/toolkit/DevToolsUtils.js
Stack:
@resource://rdpinspector-at-getfirebug-dot-com/node_modules/firebug.sdk/lib/core/window.js:13:28
@resource://rdpinspector-at-getfirebug-dot-com/node_modules/firebug.sdk/lib/context.js:13:17
@resource://rdpinspector-at-getfirebug-dot-com/node_modules/firebug.sdk/lib/toolbox-chrome.js:17:21
@resource://rdpinspector-at-getfirebug-dot-com/lib/main.js:8:27
@resource://rdpinspector-at-getfirebug-dot-com/index.js:32:15
run@resource://gre/modules/commonjs/sdk/addon/runner.js:145:19
startup/</<@resource://gre/modules/commonjs/sdk/addon/runner.js:86:7
Handler.prototype.process@resource://gre/modules/Promise-backend.js:934:23
this.PromiseWalker.walkerLoop@resource://gre/modules/Promise-backend.js:813:7
Promise*this.PromiseWalker.scheduleWalkerLoop@resource://gre/modules/Promise-backend.js:744:11
this.PromiseWalker.schedulePromise@resource://gre/modules/Promise-backend.js:776:7
this.PromiseWalker.completePromise@resource://gre/modules/Promise-backend.js:711:7
handler@resource://gre/modules/commonjs/sdk/addon/window.js:56:3
The Inspector should support built-in light theme.
Honza
The packet list should have a limit of displayed packets. If the limit is reached there should be "more" link at the top of the list.
Honza
An icon is needed for the extension
Honza
It should be possible to load and save collected packets.
Honza
STR:
Honza
It should be possible to find a place which initiated RDP communication. The user should be able to click on a stack frame and see the source code (e.g. using View Source window)
This depends on platform support:
https://bugzilla.mozilla.org/show_bug.cgi?id=1151414
Honza
Adopt platform changes introduced in bug:
https://bugzilla.mozilla.org/show_bug.cgi?id=1290599
Honza
It should be possible to send packet to the backend.
(see also: firebug/firebug.next#375)
From the pull:
Honza
STR
npm run karma-tests
... and see the following warning:
Firefox 38.0.0 (Windows 7) WARN LOG: 'Warning: Each child in an array or iterator should have a unique "key" prop. Check the render method of ActorsToolbar. See https://fb.me/react-warning-keys for more information.'
Honza
It should be possible to monitor even connection that are initiated by custom clients (e.g.coming from extensions) not only the Toolbox and WebIDE
Honza
There is a 'Clear' button in the Packet's panel toolbar and clicking on it should remove all packets from the list.
Honza
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.