Commit Graph

684 Commits

Author SHA1 Message Date
Pascal Hartig
2a94da7db3 Best-effort fix for crash
Summary:
The keys in WeakMaps have to be Objects (i.e. can't be primitives) as
they have to be fall under the responsibility of the GC.

Without this check, we may get "TypeError: Invalid value used as weak map key"
as we accept `any` as `data` for the inspector. I'm not entirely
confident if this check is enough, but I also don't have a way of reproducing
the error we got reported.

Reviewed By: jknoxville

Differential Revision: D14182463

fbshipit-source-id: 3397678935f08513e485bf5654377b54053ee32f
2019-02-22 11:07:55 -08:00
Daniel Büchele
8ff625397b persist search
Summary:
The search query can only be persisted if we have an identifier for the searchable component. For this we already have a property `tableKey` on our `ManagedTable`. However, we don't want to require every plugin to provide a key for their table.

In this diff, a tableKey is auto-generated from the table's column configuration. This should be good enough to uniquely identify a table and persist it's query.

Reviewed By: passy

Differential Revision: D14168577

fbshipit-source-id: 13e928a606c3a05096dfbfb01ae90b15aa085bf2
2019-02-21 10:02:45 -08:00
Pritesh Nandgaonkar
863088e7cf Filter Images by surfaces
Summary:
Adds a capability to filter images by surfaces.

Note: I will allow multi select in the next diff, stacked on the current one.

Reviewed By: passy

Differential Revision: D14158223

fbshipit-source-id: d96d73b94a8a442f3b60f656bc573b328c5500ad
2019-02-21 09:46:55 -08:00
Pritesh Nandgaonkar
01ee57c601 Move fresco plugin to use redux store
Summary: This diff moves the state to PersistedState

Reviewed By: danielbuechele

Differential Revision: D14126419

fbshipit-source-id: aaf5f035ddc7e64ad2602ae4b80c9901a20df144
2019-02-21 07:16:12 -08:00
Pritesh Nandgaonkar
6ee8d72a1e Move Fresco plugin to oss directory
Summary: Moved the fresco plugin folder to open source directory

Reviewed By: passy

Differential Revision: D14126407

fbshipit-source-id: 15b2d1698e18b951742ec37ca94642e6511094b0
2019-02-21 07:16:11 -08:00
Daniel Büchele
13f7444013 electron update
Summary:
Started with upgrading electron from 3.0.0 to 4.0.5. This required a bunch of subsequent updates:
* upgrading `electron-builder` to latest version, because the old version couldn't build electron 4 apps.
  * `appDir` is deprecated in builder config, `projectDir` is used instead, which we already had set, so its fine to just remove this ([see GitHub commit](a5e457163e)).
* upgrading `jest-runner/electron` because the old version couldn't run electron 4 tests.
  * upgrading our custom dependency resolution to use electron 4.0.5, because the test runner still resolves to 2.0.8 ([see GitHub issue](https://github.com/facebook-atom/jest-electron-runner/issues/31)).
* updating `sandcastle.sh` to use the new cache files from D14131344.
* removing `package-lock.json` as is was causing warnings. We use `yarn` and `yarn.lock` anyways. This file must have been committed by accident.
* updating our check to only run one version of Flipper at a time to use the new electron API `app.requestSingleInstanceLock` as the old one was removed in electron 4.
* updating the snapshot test that checks App rendering, which changed a little due to the electron upgrade.
* upgrading flow-type definitions to `electron-v4.0.5.js` generated by [electron-flowtype-definitions](https://github.com/danielbuechele/electron-flowtype-definitions).

**PS: Best new feature in Electron 4: Copy&paste working in dev tools**

Reviewed By: jknoxville

Differential Revision: D14131360

fbshipit-source-id: d7ed9643875629a1fa1860bb61b11dd0c64112ab
2019-02-21 02:46:12 -08:00
Artur Pyrogovskyi
0a59dc2918 Added onSort and a fix for columnOrder to ManagedTable
Summary:
1. Added onSort() pass-through to ManagedTable which allows to handle sort order changes.

2. columnOrder now gets updated when the corresponding prop is changed indepedently from ref.

Reviewed By: danielbuechele

Differential Revision: D14147857

fbshipit-source-id: 03300629a3316a69be6b745810516966b8060aa6
2019-02-21 02:02:09 -08:00
Daniel Büchele
6c0a534e15 fix logs
Summary:
Logs were not collected in headless mode, because there was no subscriber listening to the logs. Now they are always stored, even if there is no subscriber. Actually this makes more sense even for the desktop UI, as subscribers could subscribe later.
The only reason this was working on the desktop app was because the log plugin automatically subscribed on launch.

This brings us to the actual question: If a message is logged in a forest and no one is around to read it, is it actually logged? 🤯

Reviewed By: passy

Differential Revision: D14149691

fbshipit-source-id: 212f1b0a69bd0cc8ae0ba3592f29ca90b7a5a475
2019-02-20 06:42:21 -08:00
Pritesh Nandgaonkar
92cc78c41d Handle the Logs when it is undefined
Summary: As per the title

Reviewed By: danielbuechele

Differential Revision: D14131195

fbshipit-source-id: 3b053c04e27de9faa8b8395bf4b0f6fe3d7c58dc
2019-02-19 05:33:43 -08:00
John Knox
6bdbb4f763 Wait 2s before checking for matching devices for connected clients
Summary:
Currently when a client connects, if there's no matching device we know of, it emits an error.

The problem is that there's a race between clients connecting and devices being detected, if the client connects first, then we'll emit this error, even though the device is displayed shortly afterwards.

Fixing this by waiting 2 seconds after a client connects, and then if it's still connected, checking for a matching device. This should be enough time to make this error more reliable.

Reviewed By: passy

Differential Revision: D14126315

fbshipit-source-id: c81b2c6d9a6e0639a656d1a4d7a8f999f715bfbf
2019-02-19 03:46:55 -08:00
Pritesh Nandgaonkar
5ad41b48ff Solves the bug which destroyed multi selection on ctrl+click
Summary: Soves the bug which caused the multiselection to clear off when one did ctrl+click

Reviewed By: jknoxville

Differential Revision: D14103906

fbshipit-source-id: 834d79e1c86a89b4d90c26e8db1850c1e8712a5d
2019-02-18 14:44:18 -08:00
Pritesh Nandgaonkar
cab61b0c15 Serialize and Deserialize helper function
Summary: This diff adds a helper function to serialize and deserialize javascript Objects

Reviewed By: danielbuechele

Differential Revision: D14101483

fbshipit-source-id: 3e1f37076ccc04b83cf7de5f10900e21e6474c1d
2019-02-18 14:44:18 -08:00
Daniel Büchele
84240ede4e fix scrolling
Summary: "Plugin not showing" was scrolling with the sidebar. Fixed that.

Reviewed By: jknoxville

Differential Revision: D14123853

fbshipit-source-id: 12358bb3bd040701bafa080c2bcc27d8c837ea39
2019-02-18 07:22:59 -08:00
Daniel Büchele
9bf41f7bb7 add GK
Summary:
Users passing the GK `flipper_layout_inspector_new` will see then new layout inspector instead of the old one.

Hopefully users won't realize that they are on the new Layout Inspector. To make them aware of it, I added a bar on the bottom linking to the support group that is used for the GK.

Reviewed By: jknoxville

Differential Revision: D14100392

fbshipit-source-id: 78d561a3ab8ac035e5b439799c395901be086b1b
2019-02-18 05:17:52 -08:00
Daniel Büchele
a8a1869bc8 adding Searchbar
Summary: Adding the searchbar to layout inspector. Most of it's functionality is taken from the existing implementation.

Reviewed By: jknoxville

Differential Revision: D14100533

fbshipit-source-id: 6c3a49658d53c676489886b2599bef425f8f20d3
2019-02-18 05:17:52 -08:00
Daniel Büchele
649688db2a Sidebar
Summary:
This is mostly only moving the Sidebar from the old LayoutInspctor to a separate file. The old file was part of the UI component, however, it was super specific to the layout inspector, so I felt it makes sense moving it there.

Here is a diff between the new `src/plugins/layout/layout2/InspectorSidebar.js` and `src/ui/components/elements-inspector/sidebar.js`: P60951781

The old file is still kept around, as long as the old and new layout inspector are run side by side.

Reviewed By: passy

Differential Revision: D14100537

fbshipit-source-id: b5a6fbae9866732800bb9b2b8fb1b996b9861db6
2019-02-18 05:17:52 -08:00
Daniel Büchele
4f425b05b4 Alignment mode
Summary: Adding a toggle to enable/disable alignment mode

Reviewed By: jknoxville

Differential Revision: D14100534

fbshipit-source-id: e3a49f1f31112ca2c99c2246a12c4f34be1ec61a
2019-02-18 05:17:52 -08:00
Daniel Büchele
53f3f2d40f Target mode
Summary: Adding a toggle to enable/disable target mode

Reviewed By: jknoxville

Differential Revision: D14100535

fbshipit-source-id: 9251f2d2f9d3013650421be62719ad5fb254e804
2019-02-18 05:17:52 -08:00
Daniel Büchele
c21875e168 refactoring
Summary:
This is refactoring the layout inspector. The old layout inspector was a single file with more than 1200 LOC which was really hard to debug and extend. This aims for splitting it up into smaller, easier to maintain components.

This version of the layout inspector only shows the view hierarchy for the regular view tree and the a11y tree. Additional features are added in stacked diffs.

Reviewed By: jknoxville

Differential Revision: D14100536

fbshipit-source-id: ca5e22dbb6ed9e34ce208a2a699ebfeb083904ad
2019-02-18 05:17:52 -08:00
Daniel Büchele
b70a18cef2 ToolbarIcon component
Summary: Adding a ToolbarIcon component that displays an icon in the toolbar that can be toggled on and off. This is used in subsequent diffs.

Reviewed By: passy

Differential Revision: D14100393

fbshipit-source-id: d814b52cf77585c4e8d090e11399e005713efb5e
2019-02-18 05:17:51 -08:00
John Knox
d5dc3f9c2a Add timestamp columns to network inspector
Summary: Adds requestTimestamp, and responseTimestamp which is hidden by default.

Reviewed By: passy

Differential Revision: D14088403

fbshipit-source-id: c451a428d8068c5bfce199cda5502361c12d1667
2019-02-15 04:57:38 -08:00
John Knox
ee54a54ff2 Clean up log statement
Summary: Looks like a left over debug log

Reviewed By: danielbuechele

Differential Revision: D14086508

fbshipit-source-id: 6bf3ef40746d8d248ed38071107cae00ba3040f9
2019-02-15 04:32:43 -08:00
John Knox
d95e81b17d Deprecate client.send()
Summary:
Adds a warning when not in production and client.send() is used.

We could just delete it but there may be open source users of the API.

Reviewed By: passy

Differential Revision: D14085002

fbshipit-source-id: 39f965b59540bd5b7059ec8d6b1c274146699d2d
2019-02-14 09:55:50 -08:00
John Knox
2a938c5b81 Change all plugin uses of client.send to client.call
Summary: client.send will be deprecated because it doesn't allow handling or detection of errors.

Reviewed By: passy

Differential Revision: D14084786

fbshipit-source-id: 7ebe4a7f3f8536c705e1c9302f38db0a34d99dc4
2019-02-14 09:55:50 -08:00
John Knox
e33e2d4d06 Unify Logger interface usage
Summary:
Unified all imports of Logger. Some were called LogManager before.
Now the fb-stub and the fb variants use the same interface.
Constructor of Logger is no longer exposed so it can't be initialized twice, unless in the case you're explicitly using the fb variant, which has extra functionality.

Reviewed By: danielbuechele

Differential Revision: D14083929

fbshipit-source-id: 9b61a06e1264d5f142b5a9188465c99deaf18193
2019-02-14 09:23:41 -08:00
John Knox
8ff4c4f56d Remove duplicate Logger in headless/index.js
Summary:
init() was being misused. This returns a Logger instance, so there's no need to create one as well.
This was a problem because different arguments were being passed to each (isHeadless in this case).

Reviewed By: passy

Differential Revision: D14083320

fbshipit-source-id: b0001a2b3cdd914609d54382575e3b0fa4b5f077
2019-02-14 09:23:41 -08:00
Pritesh Nandgaonkar
b9db2411cf Add archived device type
Summary:
This diff adds archived device type. This diff solves the following two problems.

- The Plugin which are device plugins and are device plugins will not show up. Look at the video, where the CPU plugin was showed, even though the imported file didn't have any information.
- An icon of 📦 will make much clearer which one is archived device and which isn't

Reviewed By: passy

Differential Revision: D14066399

fbshipit-source-id: 59b740d7fe9532e665d6b1ec6ad0124fb63ac45d
2019-02-14 06:34:02 -08:00
Pascal Hartig
c0b5f10693 Add --launcher-msg option to pass to desktop app
Summary:
Allows the launcher to provide messages to the user. Currently, in the form
of the red notification bar at the bottom. This is just meant as a temporary measure
during the alpha to have some clearly noticeable way of getting the user's attention.

I consider removing this a blocker for the release as this mechanism is not well
suited for this in many ways.

The current use case for this is providing a warning if a cached version is used
instead of the requested one, e.g. "Could not fetch requested Flipper version 'deadbeef', using cached version instead."

Reviewed By: jknoxville, priteshrnandgaonkar

Differential Revision: D14073687

fbshipit-source-id: 85630347027063103315eeb1286731fe2478e261
2019-02-14 06:02:44 -08:00
John Knox
3caa0da887 Use call instead of send
Summary: Going to deprecate send, so changing these to call so the plugins can respond to errors.

Reviewed By: passy

Differential Revision: D14066981

fbshipit-source-id: 440563f1bf1a1a145fcfd0e6f36af63bf27836ed
2019-02-14 05:18:19 -08:00
Pritesh Nandgaonkar
9a8e30681b Handle the case of Logs not being present
Summary:
- handles the case when log is not present
- solved the cpu plugin error
- now `fileversion` is the flipper version

Reviewed By: jknoxville, danielbuechele

Differential Revision: D14065882

fbshipit-source-id: f88414bbb3d766f8ab6e0ec00943b59738918a0e
2019-02-14 04:53:56 -08:00
Pascal Hartig
2b9e3c54c6 Set up --no-launcher flag
Summary: For future use to disable launcher loops.

Reviewed By: jknoxville

Differential Revision: D13979653

fbshipit-source-id: db56f7d71d7a4d1322cb36622313dbad4307396d
2019-02-14 02:33:06 -08:00
Pritesh Nandgaonkar
059ac83fcf Do not import already imported data
Summary: Before this diff, if one imported same file twice, it duplicated app data.This diff fixes that. When one tries to import the already imported file then this diff will select that flipper files device in the UI.

Reviewed By: jknoxville

Differential Revision: D14045145

fbshipit-source-id: f17c83486ffcdb0e2a57c70b1589e34567811d01
2019-02-12 08:37:14 -08:00
John Knox
c912dcaf48 Add isHeadless attribute to scribe messages
Summary:
So we can distinguish between humans and the machines.

We can redirect the traffic to different tables based on this attribute if necessary.

Reviewed By: danielbuechele

Differential Revision: D14025004

fbshipit-source-id: c3a24b5f8a30f24445eaee67843b78ddabfc9d51
2019-02-12 08:29:20 -08:00
Pritesh Nandgaonkar
029377a849 Change the export file extension type
Summary: This diff imports and exports data in a `.flipper` file extension. This diff also adds the support to open flipper app by double clicking on the `.flipper` file.

Reviewed By: danielbuechele

Differential Revision: D14042846

fbshipit-source-id: 17e6b55bf2796d9abdf985411fce799600f7792b
2019-02-12 06:48:06 -08:00
Pritesh Nandgaonkar
c28ef62f07 Import and export Logs
Summary: This diff adds import and export support for the logs plugin

Reviewed By: danielbuechele

Differential Revision: D13958713

fbshipit-source-id: a072de025f0b959302175ef0ccaf763ca41377e9
2019-02-12 02:47:55 -08:00
Pritesh Nandgaonkar
e5151b9994 Add salt to the exported device serial id
Summary:
This diff solves the following bug.

When the user imports the exported flipper data for the device which is currently running, there was a bug. A duplicate device with the same serial got created after importing the file. Due to the same `device_id`, the plugins of the exported device got imported in the already running device(which has the same device id).

To solve this problem, I have prefixed the exported `device_id` with a random string, so that the exported device is unique across the device list in the Flipper app.

Look at the vide to understand the bug

Also updated the test case accordingly

Reviewed By: danielbuechele

Differential Revision: D13973180

fbshipit-source-id: df6ee00987e81923914855cea4d76e2bd7167358
2019-02-12 02:47:55 -08:00
John Knox
fe0eeafd98 Fix issue with responses from de-inited plugins
Summary:
Now that flipper is using rsocket requestResponse, the SDK is responding with an error when the connection for this plugin has been torn down.

To avoid flipper interpreting these as bad, keep track of which plugins are inited, and only worry about responses from these.

Reviewed By: danielbuechele

Differential Revision: D13973745

fbshipit-source-id: d4e6916f89b3b562e5dcf23c4fe5b5cb384a6ec4
2019-02-11 14:06:56 -08:00
John Knox
ce5f739d81 Add sdkVersion to ping events
Summary: So we can see usage of old sdks.

Reviewed By: passy

Differential Revision: D14022623

fbshipit-source-id: 22f0681cbf4374e2cf3256e1049d154789e1959e
2019-02-11 14:06:56 -08:00
John Knox
92271d1454 Use rsocket requestResponse in desktop app
Summary:
Changes the desktop app to use requestResponse for communicating with the sdk, when the sdk is on a version that can handle it.
If it's an old sdk version, just use fire and forget. We can delete this code after a while, but keeping it for now to smooth things over during migration.

This should be fully backwards compatible both ways.

Reviewed By: passy

Differential Revision: D13971354

fbshipit-source-id: 60e18dda5c253c81ab7e62ca1aae4f4bc423f7e2
2019-02-11 14:06:56 -08:00
Mitch Ware
8f6138a41c Explicitly specify serial filename to openssl (#227)
Summary:
Manually add `serial.srl` as the `CAserial` param to `openssl`. This
fixes a permissions issue when generating certificates, which fixes some
of the issues explained in #101.
Pull Request resolved: https://github.com/facebook/flipper/pull/227

Reviewed By: passy

Differential Revision: D9316089

Pulled By: jknoxville

fbshipit-source-id: dd15e2f2f318d3a1217c6b4ffd0bb7e25b56d560
2019-02-11 04:58:46 -08:00
Daniel Büchele
c98047bbcf support DEVICE_SET_PATH env var
Summary: support for DEVICE_SET_PATH as used by 1W

Reviewed By: passy

Differential Revision: D14007285

fbshipit-source-id: 79f40355020c67efcb439f470af2fc35ec7fea7e
2019-02-11 02:57:19 -08:00
Daniel Büchele
6431d374c2 get adb config from env vars
Summary:
REact adb config from env vars:
- `ADB_SERVER_SOCKET`
- `ANDROID_ADB_SERVER_PORT`

Reviewed By: lawrencelomax

Differential Revision: D14002603

fbshipit-source-id: e30fa4354ab15048d4350654979fd0b6f394cd89
2019-02-11 02:51:25 -08:00
Pascal Hartig
351ac37fab Log to infinity_analytics_dev scribe cat in non-prod
Reviewed By: danielbuechele

Differential Revision: D13956251

fbshipit-source-id: a741ffc7f39b3a09eeb29b8b96c3a7183f630f84
2019-02-08 11:22:55 -08:00
Daniel Büchele
0ad13a0606 use ANDROID_ADB_SERVER_PORT in adbkit
Summary: Using `ANDROID_ADB_SERVER_PORT` env var to create adbkit instance.

Reviewed By: jknoxville

Differential Revision: D13987361

fbshipit-source-id: 2283b52466f8ad536aa3a8320a4ee8f4ce97321a
2019-02-07 06:36:49 -08:00
John Knox
8a5b5a0cba Allow underscore characters in app name (#368)
Summary:
This whitelist exists to prevent unauthorized code execution. But there's no need to exclude _, which is a valid character in android app names.
Pull Request resolved: https://github.com/facebook/flipper/pull/368

Reviewed By: passy

Differential Revision: D13987022

Pulled By: jknoxville

fbshipit-source-id: 920c5906513af9ba00ae6626b4790dfd021fe4a0
2019-02-07 05:56:37 -08:00
Daniel Büchele
765874f4be no bundled plugins while developing
Summary: While running in dev mode, there are no bundled plugins. This was causing an error messages being logged. Now we early return an empty array to prevent the error.

Reviewed By: passy

Differential Revision: D13971930

fbshipit-source-id: 4110a3ea5d6d2e60b3de17a43d497a3727b8e441
2019-02-06 08:10:43 -08:00
Pascal Hartig
14ae2fea2c Move configuration to module
Summary:
Moves the JSON config access to one module instead of
ad-hoc de-serialising the object all over the place.
This also adds a type for it so we hopefully won't typo things that easily.

Reviewed By: danielbuechele

Differential Revision: D13956612

fbshipit-source-id: 48098deafedf18cc86c8802a3c40fba9394b8262
2019-02-06 03:18:52 -08:00
Pritesh Nandgaonkar
dc9160d05c Use Archived device for test, as IOSDevice registers for log listeners and spits errors in tests
Summary:
Instead of using IOSDevice, used ArchivedDevice, as it doesn't instantiate the loglistener which printed erros in the console when one ran the tests.

Look at the attached task.

Reviewed By: passy

Differential Revision: D13941803

fbshipit-source-id: 3e504a02522719985afaad25caf4d2a576bfc338
2019-02-05 09:36:35 -08:00
Pritesh Nandgaonkar
d70e512889 Show save as dialog for export data
Summary: This diff adds support to specify custom location to save the flipper data to be exported

Reviewed By: passy

Differential Revision: D13916944

fbshipit-source-id: cfe816d07eb505d99c00f7798f3a97a2093ab265
2019-02-05 09:36:35 -08:00
Pritesh Nandgaonkar
9bc54597cf Import from exported file
Summary:
This diff adds the feature to import the exported flipper data. It has the following features

- Dialog to select the file
- Merges the data with an existing store.

Reviewed By: danielbuechele

Differential Revision: D13901944

fbshipit-source-id: 1b9755735419732a34254bdc39d911bcb51ad8fe
2019-02-05 09:36:35 -08:00