Convert ThreadClient to protocol.js front
Categories
(DevTools :: Framework, task, P1)
Tracking
(Fission Milestone:M3, firefox69 fixed)
Tracking | Status | |
---|---|---|
firefox69 | --- | fixed |
People
(Reporter: ochameau, Assigned: yulia)
References
(Blocks 4 open bugs)
Details
(Whiteboard: [devtools-backward-compat] dt-fission-m1)
Attachments
(22 files, 5 obsolete files)
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details |
ThreadClient is the client class to connect to the thread actor. We should convert that client class to a protocol.js front. It may help us later in fission ongoing work to more easily manage multiple thread fronts. We could use target.getFront instead of having to come up with another mechanism specific to it. Note that this can be done before converting the actor to protocol.js. Both refactoring are independant. Also note that it must be the hardest client to refactor to protocol.js. That's because low level transport layer contains various code that are specific to the thread client. We don't do that for any other client/actor! https://searchfox.org/mozilla-central/rev/6d1ab84b4b39fbfb9505d4399857239bc15202ef/devtools/shared/client/debugger-client.js#845-846 https://searchfox.org/mozilla-central/rev/6d1ab84b4b39fbfb9505d4399857239bc15202ef/devtools/shared/client/debugger-client.js#856-861 https://searchfox.org/mozilla-central/rev/6d1ab84b4b39fbfb9505d4399857239bc15202ef/devtools/shared/client/constants.js#55-67 https://searchfox.org/mozilla-central/rev/6d1ab84b4b39fbfb9505d4399857239bc15202ef/devtools/shared/client/constants.js#7-16 These specifics might be necessary? But hopefully they could also be historical cruft that could be replace with regular protocol.js requests/events...
Reporter | ||
Updated•6 years ago
|
Reporter | ||
Updated•6 years ago
|
Assignee | ||
Updated•6 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Assignee | ||
Comment 1•5 years ago
|
||
This is preparation for moving the threadClient to a front. Fronts do not support the
callback style that clients have, they only support promises. As such, this patch migrates all
instances of the threadClient using callback style methods to promises. I have cc'd the debugger
team so that they are aware of this change and it doesn't take them by surprise.
Pushed by ystartsev@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/92678c01ead7 Use promise pattern rather than callback pattern for threadClient methods; r=ochameau
Assignee | ||
Updated•5 years ago
|
Comment 3•5 years ago
|
||
bugherder |
Updated•5 years ago
|
Assignee | ||
Comment 4•5 years ago
|
||
This is the first part of the threadClient refactor. It only moves the methods to the new
front. and does some basic fixes.
Assignee | ||
Comment 5•5 years ago
|
||
This is part one of removing threadClient specifics out of the debuggerClient. We were
managing messages from the thread client in a special way -- this was the "Unsolicited Pauses"
object that we had before. This patch updates the threadClient to use Front style events. This
required updating the spec for the threadClient, and several of the methods. What has not been fully
migrated here is the "resumed" event, as this is much more complex. This is taken care of in the
next patch.
Assignee | ||
Comment 6•5 years ago
|
||
The resume case is much more complex than the other events, because we do an
unsafeSynchronize to send an unsolicited pause. In the old system, the resume response would have
been ignored, but that is no longer the case. With the new system, we do not want to send a response
to a resume action if it did not come from the UI. This also update the debugger panel code to
accept a resume.
Assignee | ||
Comment 7•5 years ago
|
||
In order for a front to be available to getFront on a given target, it must be first --
registered on the target scope, and second -- set on the target's targetForm. This makes that update
for both browsing context and worker targets. This works as part of a work around until we can get
the server into better shape.
Assignee | ||
Comment 8•5 years ago
|
||
The webConsoleFront and the threadClient front both used to depend on the debugger-client
to destroy them via registered clients. This is no longer the case, and this code can be deleted
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Assignee | ||
Comment 9•5 years ago
|
||
The front destroy method is async, but this is not respected if the client suddenly
disconnects. This causes issues with tests. This change introduces a mechanism for waiting on asyn
fronts to close.
Assignee | ||
Comment 10•5 years ago
|
||
This was a difficult situation. We are not waiting for a server response when setting or
removing breakpoints. The result is that the server has not completed those actions by the time the
test closed, leaving setBreakpoint or removeBreakpoint requests hanging, causing a number of tests
to fail. In order to get around this, I made the panel action "SET_BREAKPOINT" and
"REMOVE_BREAKPOINT" aware of the server response. This involved rewriting the helper methods
clientSetBreakpoint
and clientRemoveBreakpoint
so that they no longer relied on the dispatch.
It was not possible to use the dispatches to wait, as they had no event exposed to the tests,
especially in cases when we triggered these requests via button presses.
Assignee | ||
Comment 11•5 years ago
|
||
There were a few miscellaneous situations in which the test would fail due to a hanging
request. These tests passed in the past because the old way of using the threadActor did not
identify which requests had been responded to.
Assignee | ||
Comment 12•5 years ago
|
||
this patch fixes a few tests that had miscellanous timeouts
Assignee | ||
Comment 13•5 years ago
|
||
the test browser_net_params_sorted
may not have been functioning for some time. While
investigating this, I discovered that we were getting an empty array for actualKeys
. Iterating
over this array returned immediately. As a result the test always passed, even though the shape of
the data changed. I updated this code so that it waits for the dom to be populated with the number
of keys expected. I also updated the test to reflect the data the front end has today.
Assignee | ||
Comment 14•5 years ago
|
||
There was an issue where this test was timing out, and due to the way it was written it was
very hard to identify where -- there were many nested promises. I rewrote the test in order to
identify the time out.
Assignee | ||
Comment 15•5 years ago
|
||
this test was failing because the threadClient was posting messages due to being unable to
find the source map. After investigating, I found that the sourcemap was formatted incorrectly. I do
not know if this was intentional. If it wasn't this fix works. If it was, then we need to find a way
to wait on source map failures, and the test name might need to be updated
Assignee | ||
Comment 16•5 years ago
|
||
This test was failing due to the tab closing before a response from the tab was recieved.
It is due to the threadClient closing more quickly. This waits for the last message before closing
Assignee | ||
Comment 17•5 years ago
|
||
this test was failing because it did not wait for the debugger to finish reloading.
Assignee | ||
Comment 18•5 years ago
|
||
we shouldn't have this code, but we do
Assignee | ||
Comment 19•5 years ago
|
||
Alternative fix here is to only update telemetry after the response. I do not know if there
was a product decision here.
Assignee | ||
Comment 20•5 years ago
|
||
this is the weird one. we have a Debugger.executeSoon call for the destruction of the host.
However, before this happened immediately after the test closed. Now, it happens a little later, and
this messes up the data set up. The comment says that we cannot remove this.
Assignee | ||
Comment 21•5 years ago
|
||
Assignee | ||
Comment 22•5 years ago
|
||
Assignee | ||
Comment 23•5 years ago
|
||
Assignee | ||
Comment 24•5 years ago
|
||
Assignee | ||
Comment 25•5 years ago
|
||
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Assignee | ||
Comment 26•5 years ago
|
||
The ChromeDebuggerActor extends the methods from threadActor but didn't have an event
emitter. I updated it to function the same as other actors
Assignee | ||
Comment 27•5 years ago
|
||
make sure we have a copy of thread client for old servers
Updated•5 years ago
|
Assignee | ||
Comment 28•5 years ago
|
||
Introduce a flag to maintain backwards compatibility with old servers
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Comment 29•5 years ago
|
||
Pushed by ystartsev@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/c5408cf27728 fix timing issues in debugger tests due to threadClient refactor; r=jlast https://hg.mozilla.org/integration/autoland/rev/b77955eb4a71 fix timing issues in general tests due to threadClient refactor; r=jdescottes https://hg.mozilla.org/integration/autoland/rev/3a9e09d5a4d7 fix netmonitor test to ensure elements exist on the dom before testing; r=Honza https://hg.mozilla.org/integration/autoland/rev/3c5a0b786ffb fix timing issue and rewrite object grip test; r=nchevobbe https://hg.mozilla.org/integration/autoland/rev/986402a59722 fix blob stylesheet test to not fail retrieving sourcemap; r=nchevobbe https://hg.mozilla.org/integration/autoland/rev/d2b8576bf67c wait in aboutdebugging addons nobg test for tabs before closing; r=jdescottes https://hg.mozilla.org/integration/autoland/rev/818e2521980c wait for paintflash requests to settle r=jdescottes
Comment 30•5 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/c5408cf27728
https://hg.mozilla.org/mozilla-central/rev/b77955eb4a71
https://hg.mozilla.org/mozilla-central/rev/3a9e09d5a4d7
https://hg.mozilla.org/mozilla-central/rev/3c5a0b786ffb
https://hg.mozilla.org/mozilla-central/rev/986402a59722
https://hg.mozilla.org/mozilla-central/rev/d2b8576bf67c
https://hg.mozilla.org/mozilla-central/rev/818e2521980c
Comment 31•5 years ago
|
||
Pushed by ystartsev@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/c2a034e34fa6 fork threadclient for backwards compatibility r=jdescottes https://hg.mozilla.org/integration/autoland/rev/b900d41c8ae8 Convert ThreadClient into a Front; r=jdescottes https://hg.mozilla.org/integration/autoland/rev/25e69c21dc2e get rid of ThreadClient specifics in DebuggerClient ; r=jdescottes https://hg.mozilla.org/integration/autoland/rev/33eec873a43e get rid of ThreadClient specifics in DebuggerClient, attach/detach methods and events; r=jdescottes https://hg.mozilla.org/integration/autoland/rev/1d21a55cae15 get rid of ThreadClient specifics in DebuggerClient, interrupt method; r=jdescottes https://hg.mozilla.org/integration/autoland/rev/35d967de4223 Removing threadClient specifics from DebuggerClient Special case resume; r=jdescottes,jlast https://hg.mozilla.org/integration/autoland/rev/fe1559f5f1d4 use getFront to retrieve threadClient; r=jdescottes https://hg.mozilla.org/integration/autoland/rev/1a4ab8b35a85 maintain backwards compatibility r=jdescottes https://hg.mozilla.org/integration/autoland/rev/0e214d450b35 Delete registerClient functionality; r=jdescottes https://hg.mozilla.org/integration/autoland/rev/a14e820311bc Fix host resize test caused by timing issue; r=jdescottes https://hg.mozilla.org/integration/autoland/rev/591453b88e8b change test code for reaching into the server; r=jdescottes https://hg.mozilla.org/integration/autoland/rev/c48f00f0df72 update setBreakpoint action on the debugger to be aware of server response; r=jdescottes,jlast https://hg.mozilla.org/integration/autoland/rev/5db908b26d50 exit gracefully if docShell has been destroyed; r=jdescottes
Assignee | ||
Updated•5 years ago
|
Updated•5 years ago
|
Assignee | ||
Updated•5 years ago
|
Assignee | ||
Comment 32•5 years ago
|
||
Comment 33•5 years ago
|
||
Backed out for dt failures
Backout link: https://hg.mozilla.org/integration/autoland/rev/97d91e58ce25a28bbfe95128b2a8a542c6fe8e20
Push link: https://treeherder.mozilla.org/#/jobs?repo=autoland&resultStatus=testfailed%2Cbusted%2Cexception%2Crunnable&selectedJob=251819678&revision=5db908b26d508d9369153131e969bd665028d4d9
Log link1: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=251819931&repo=autoland&lineNumber=5207
Log link2: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=251823135&repo=autoland&lineNumber=1547
Log link3: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=251819928&repo=autoland&lineNumber=2196
Comment 34•5 years ago
|
||
Pushed by ystartsev@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/5ea8582b48c0 fork threadclient for backwards compatibility r=jdescottes https://hg.mozilla.org/integration/autoland/rev/9d24fd51deb4 Convert ThreadClient into a Front; r=jdescottes https://hg.mozilla.org/integration/autoland/rev/eacdf422f586 get rid of ThreadClient specifics in DebuggerClient ; r=jdescottes https://hg.mozilla.org/integration/autoland/rev/2a4f4639567a get rid of ThreadClient specifics in DebuggerClient, attach/detach methods and events; r=jdescottes https://hg.mozilla.org/integration/autoland/rev/3c1c8393c6e8 get rid of ThreadClient specifics in DebuggerClient, interrupt method; r=jdescottes https://hg.mozilla.org/integration/autoland/rev/9732099eeb56 Removing threadClient specifics from DebuggerClient Special case resume; r=jdescottes,jlast https://hg.mozilla.org/integration/autoland/rev/2494fafdeae7 use getFront to retrieve threadClient; r=jdescottes https://hg.mozilla.org/integration/autoland/rev/1d3845e33eb9 maintain backwards compatibility r=jdescottes https://hg.mozilla.org/integration/autoland/rev/01195404b5ea Delete registerClient functionality; r=jdescottes https://hg.mozilla.org/integration/autoland/rev/caefc0b61c81 Fix host resize test caused by timing issue; r=jdescottes https://hg.mozilla.org/integration/autoland/rev/7408af62d6bb change test code for reaching into the server; r=jdescottes https://hg.mozilla.org/integration/autoland/rev/0013565e760d update setBreakpoint action on the debugger to be aware of server response; r=jdescottes,jlast https://hg.mozilla.org/integration/autoland/rev/67445d8e4d05 exit gracefully if docShell has been destroyed; r=jdescottes https://hg.mozilla.org/integration/autoland/rev/ec5d586ced75 fix verify test r=jdescottes
Comment 35•5 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/5ea8582b48c0
https://hg.mozilla.org/mozilla-central/rev/9d24fd51deb4
https://hg.mozilla.org/mozilla-central/rev/eacdf422f586
https://hg.mozilla.org/mozilla-central/rev/2a4f4639567a
https://hg.mozilla.org/mozilla-central/rev/3c1c8393c6e8
https://hg.mozilla.org/mozilla-central/rev/9732099eeb56
https://hg.mozilla.org/mozilla-central/rev/2494fafdeae7
https://hg.mozilla.org/mozilla-central/rev/1d3845e33eb9
https://hg.mozilla.org/mozilla-central/rev/01195404b5ea
https://hg.mozilla.org/mozilla-central/rev/caefc0b61c81
https://hg.mozilla.org/mozilla-central/rev/7408af62d6bb
https://hg.mozilla.org/mozilla-central/rev/0013565e760d
https://hg.mozilla.org/mozilla-central/rev/67445d8e4d05
https://hg.mozilla.org/mozilla-central/rev/ec5d586ced75
Updated•5 years ago
|
Assignee | ||
Updated•5 years ago
|
Assignee | ||
Updated•5 years ago
|
Updated•5 years ago
|
Comment 36•5 years ago
|
||
Comment on attachment 9069357 [details]
Bug 1494796 - update chromeDebugger to use event emitter
Revision D33498 was moved to bug 1239008. Setting attachment 9069357 [details] to obsolete.
Comment 37•5 years ago
|
||
Comment on attachment 9068068 [details]
Bug 1494796 - rename context to thread; r=jdescottes
Revision D32849 was moved to bug 1559819. Setting attachment 9068068 [details] to obsolete.
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Updated•3 years ago
|
Description
•