Commit Graph

25 Commits

Author SHA1 Message Date
Michel Weststrate
80f48b444c Fix pending connections for websocket browser connections
Summary:
Connections from VSCode and Kite would remain forever pending because they don't go through the secure connection handler. This diff fixes that. Also removed the separate event that existed for that, since registering a new client is already a 'success' signal, so it doesn't need a separate event.

It turned out that the VSCode pending connection is actually correct, as it never handles the `getPlugins` event, so apparently the handling is broken. Added timeouts to guard against that as well.

Applied several code simplications as well.

Introduced an explicit cert exchange medium 'NONE' so that in code it is a bit clearer where CSR negotiation is supposed to happen.

Changelog: Fixed an issue where Kite / Unity apps didn't connect anymore

Reviewed By: timur-valiev

Differential Revision: D30866301

fbshipit-source-id: 8bd214fd9eebcd9a7583f1b44ee283883002f62e
2021-09-10 07:04:43 -07:00
Michel Weststrate
d8f77db632 Code improvements and more logging on connection handling
Summary:
In an attempt to trace Android issues:

1. added more logging to the process (opted for info level for now since this is pretty critical for support requests, yet not super repetitive overall. We could maybe turn it into usage tracking at some point to have central stats?).
2. rewrote promise chains to async/await since they are easier to follow and harder to do accidentally wrong
3. fixed some minor potential problems, will highlights those in code.

Changelog: Improved handling of edge cases in certificate exchange, which should address cases where a Flipper connection wouldn't come up when connection to Android / IOS. Added explicit logging around connection negation.

Reviewed By: lblasa

Differential Revision: D30838947

fbshipit-source-id: a898c6d3be6edc22bd24f9d2bad76e81871360da
2021-09-10 07:04:43 -07:00
Michel Weststrate
946fc56b70 Don't eat exceptions
Summary:
if a resolved client doesn't become available, we were eating the exception. This diff changes that, as exceptions might actually occur (e.g. a timeout, indicating that for example the device didn't become available, which points out a bug in the example below).

We might now over report some issues, causing regressions in our monitoring, but let's work from there.

Reviewed By: timur-valiev

Differential Revision: D30806511

fbshipit-source-id: 09d62bd7c41439aa452b6df501426e239559eba2
2021-09-08 09:59:38 -07:00
Pascal Hartig
c05feb4f2b Fix file extension
Summary: A stray `.ts` in a `.tsx` world.

Reviewed By: lblasa

Differential Revision: D30774439

fbshipit-source-id: 69b570c85c4076fc523328323a5cbb6f770c95d2
2021-09-07 07:31:29 -07:00
Pascal Hartig
4ba9a334d5 Fix Flipper lints #7
Summary:
Fix lints according to https://www.internalfb.com/intern/staticdocs/flipper/docs/internals/linters.

Logic should be unchanged.

Reviewed By: timur-valiev

Differential Revision: D30766176

fbshipit-source-id: a7b3f78af66188704913c87321b07aff0fed270a
2021-09-06 08:26:54 -07:00
Michel Weststrate
bd8912080b Kill IPC rendering / connection
Summary:
Remove IPC rendering / connection implementation. This has been behind GK for a couple of weeks, and no one complained / white listed. See also D30367413.

flipper_js_client_emulator

Reviewed By: passy

Differential Revision: D30452442

fbshipit-source-id: fbe7b4914fecc023f3ec78a027106ea32c5a99bd
2021-09-01 11:46:27 -07:00
Pascal Hartig
9e8ec02bf7 Remove idb describe querying
Summary: This can cause a lot of spam in the logs (locally, doesn't log as errors) and we've now found that `idb connect` is a better way to support remote devices. See https://docs.google.com/document/d/1Ih5eCyisMIzgKSJV6xichUBJMiioSJltcJCh6LCLecg/edit#bookmark=id.zhwvc6wk2bbz for more information.

Reviewed By: fabiomassimo

Differential Revision: D30546664

fbshipit-source-id: 066ea7f2eef6f82d8d6ce70db44313472b637768
2021-08-26 09:10:14 -07:00
Pascal Hartig
89d7e17c26 Fix local CSR lookup
Summary:
From what I can tell, `idb file pull` seems to behave slightly differently for simulators. When pulling from a remote simulator, it appears to first create a directory for the local destination causing the read in line 508 to as it is trying to read the *folder* `app.csr` not `app.csr/app.csr`.

By omitting the destination file name, we avoid this behaviour.

Reviewed By: fabiomassimo

Differential Revision: D30541778

fbshipit-source-id: 851398aed5fd350a68ba0686707ce0f0aa09672c
2021-08-26 04:23:11 -07:00
Pascal Hartig
30d5170dee Fix lints in CertificateProvider
Summary:
Some of them got re-introduced after rebasing D30411434 (f60429cab5).
Soz for not checking the rebase result carefully enough.

Reviewed By: mweststrate

Differential Revision: D30450602

fbshipit-source-id: 6c45422f7f9e34419949cec936ffffbdf1c652a4
2021-08-23 05:22:56 -07:00
Pascal Hartig
f60429cab5 Small refactors in CertificateProvider
Summary:
- Remove `fs` dependency in favour of `fs-extra`.
- Replaced `Sync` variants with async wherever possible.
- Removed some unnecessary Promise constructions.

Reviewed By: timur-valiev

Differential Revision: D30411434

fbshipit-source-id: 9faebbc1f9fb2283fec895ce3397918bc85a6c51
2021-08-20 03:52:31 -07:00
Michel Weststrate
ebe5e7f9ff Make CertificateProvider side effect free in test (#2706)
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/2706

Creating a CertificateProvider in test had the side effect of generating certificate files, which fails in windows CI. This change makes sure the files aren't generated in test. See https://github.com/facebook/flipper/runs/3366318523.

Since it is not possible to start the flipper server 'physically' without writing file (for the secure server), figured to remove the test entirely, since there is high impact but little risk captured by it; if the server doesn't start, *any* manual / exploratory test will fail.

Reviewed By: lblasa

Differential Revision: D30423173

fbshipit-source-id: e411cc61df04120a7132983e9f8d3d140e4ca048
2021-08-19 04:08:18 -07:00
Pascal Hartig
393e47641b Asyncify complex promise function
Summary:
Linter flagged this as it's using promises inside
promises. This is a bit easier to read.

Reviewed By: timur-valiev

Differential Revision: D30402783

fbshipit-source-id: aee7dedc4468538bceec4fc64379f8b2d89a660c
2021-08-18 15:49:00 -07:00
Michel Weststrate
0cbe063c77 Move UnitializedClient to server
Summary: Move UnitializedClient interface to server namespace

Reviewed By: timur-valiev

Differential Revision: D30367328

fbshipit-source-id: 367a607fa2bb20dd140b1ad28946073ca764e517
2021-08-17 07:51:51 -07:00
Michel Weststrate
ea58f2b050 Decouple iOS devices from Store / core
Summary: Decouple iOS device detection from Redux

Reviewed By: timur-valiev

Differential Revision: D30309258

fbshipit-source-id: 74b4e3dd2e6b83fcefc75909794c39bfc8c987cf
2021-08-17 07:51:51 -07:00
Michel Weststrate
3736cbc480 Decouple JS device from Store
Summary: Made a start with decoupling JS device. Incomplete as there are still Electron deps.

Reviewed By: timur-valiev

Differential Revision: D30309257

fbshipit-source-id: b8002170cbbe8d68e1795ce7c12ffce4c8eac853
2021-08-17 07:51:51 -07:00
Michel Weststrate
4ae7d9c42b Decouple Metro device handling from Flipper core
Summary: Decoupled metro 'device' from Redux store. Extracting some commonalities with Android device management up into FlipperServer

Reviewed By: timur-valiev

Differential Revision: D30309256

fbshipit-source-id: 1a9ac01e3f21d2d08761554d3644a7ae8d00a93e
2021-08-17 04:46:37 -07:00
Michel Weststrate
03f2f95a31 Decouple android device management from Flipper core/store
Summary: See earlier diffs in the stack. This diff decouple android device management from the Redux store, replacing it with specific events.

Reviewed By: timur-valiev

Differential Revision: D30286345

fbshipit-source-id: 42f52056bf123b862e2fc087f2e7130c02bdd742
2021-08-17 04:46:37 -07:00
Pascal Hartig
797007f367 Make error message unique
Summary: We're currently getting errors for every duplicate key and can't easily unify them, so we're adding the additional information to a warning instead.

Reviewed By: mweststrate

Differential Revision: D30337821

fbshipit-source-id: db9dc44d7d3424de169bed9b4447b482e411eb19
2021-08-16 05:32:36 -07:00
Pascal Hartig
e880059167 Use idb describe to enumerate devices
Summary:
This works for forwarded as well as local devices.

There is a bunch more unification work that needs to be done here as we currently have three completely different ways of querying iOS devices. More on that next week.

Reviewed By: jknoxville

Differential Revision: D30308405

fbshipit-source-id: c58ac73e971ce2cc4da92e9508bc05dff9c1a95a
2021-08-16 05:27:29 -07:00
Michel Weststrate
c0cd32564a Organise files per device
Summary:
Moved all logic per device type we support to its own dir, including tools and utilities around it, which makes it easier to consolidate logic and decouple in turn per device type.

Per type, all logic can be found in

`server/devices/(desktop|metro|android|ios|webapp)`

Reviewed By: timur-valiev

Differential Revision: D30277817

fbshipit-source-id: 2b5339c363d5d31ceeba07cec03826fc67cf3748
2021-08-13 04:02:32 -07:00
Michel Weststrate
6175424d16 separate action dispatch from server
Summary: This diff moves the first small pieces of getting device detection up and running to `server/`, and the wiring between FlipperServer and flipper core / redux is setting up specific events and dispatch actions from there.

Reviewed By: timur-valiev

Differential Revision: D30276776

fbshipit-source-id: b30b996d03c27459815bebeb97b05b5fe5d24bec
2021-08-13 04:02:32 -07:00
Pascal Hartig
0de8a2eeb0 Support idb/physical devices for screen record
Summary: Another thing that's now supported by idb.

Reviewed By: mweststrate

Differential Revision: D30283450

fbshipit-source-id: fd973571c551b0823ba9c539c795d4dd526415b1
2021-08-13 03:29:30 -07:00
Pascal Hartig
87e5e18c46 Support idb/physical devices for navigation
Summary: idb has a command for doing the same now.

Reviewed By: timur-valiev

Differential Revision: D30277192

fbshipit-source-id: eb46cdc7a7218077a7da90f6182d5f17bfcc758a
2021-08-12 07:59:45 -07:00
Michel Weststrate
dd47d08444 move device dispatchers to server
Summary: move_complexity

Reviewed By: passy, timur-valiev

Differential Revision: D30250314

fbshipit-source-id: 92510b0ed2555d039b75b6de1c14fc92d94fbb19
2021-08-12 05:43:44 -07:00
Michel Weststrate
5e8c968222 Move devices to server folder
Summary:
This is the first of many diffs that extracts the connection, device, client detection out of the flipper core, to create a reusable flipper-server library that can be used in e.g. flipper-dump.

To keep diffs a little smaller, the current connection logic is first moved to the `server/` directory, and decoupled manually from the rest of the core, before moving it over to a separate package.

This first diffs moves the `comms/`, `devices/` and certificate utilities to the `server` directory.

Further untangling will follow in next diffs

Reviewed By: timur-valiev

Differential Revision: D30246551

fbshipit-source-id: c84259bfb1239119b3267a51b015e30c3c080866
2021-08-12 05:43:43 -07:00