Commit Graph

346 Commits

Author SHA1 Message Date
John Knox
b3a6bf3dba Use named args for ArchivedDevice constructor
Summary: The constructor is getting quite a few args now, so to avoid string, string mistakes I'm making sure you pass objects with named params.

Reviewed By: passy, mweststrate

Differential Revision: D20034012

fbshipit-source-id: 4e0d23eeaa9100c6c19d3e36fee62649659ad261
2020-02-24 19:43:22 -08:00
John Knox
20db85adf4 Add archived device visualizer
Summary:
Adds a visual indicator of layout nodes when using an archived device.

The "device" window isn't movable for some reason. I've tried the movable and draggable attributes but with no luck. It would obviously be good to fix that but I think its probably shippable as is, and I don't have any more ideas about how to do it.

Reviewed By: passy

Differential Revision: D19885719

fbshipit-source-id: 186ba38c85afee18ce111e30187bdccd9b919025
2020-02-21 07:19:13 -08:00
John Knox
c2dfa6ca6b Kill orphaned instruments processes (#819)
Summary:
Fix https://github.com/facebook/flipper/issues/808
Kills any orphaned Instruments processes belonging to the user.

In some cases, we've seen interactions between Instruments and the iOS
simulator that cause hung instruments and DTServiceHub processes. If
enough instances pile up, the host machine eventually becomes
unresponsive. Until the underlying issue is resolved, manually kill any
orphaned instances (where the parent process has died and PPID is 1)
before launching another instruments run.

Taking the same approach as done by flutter here.

Reviewed By: passy

Differential Revision: D20030005

Pulled By: jknoxville

fbshipit-source-id: aa80be78c80f7797e88bf29b15f90d4aad0c66e4
2020-02-21 06:53:44 -08:00
Michel Weststrate
4aec81b059 Fix issue where messages where not queued for non-selected apps
Summary: When determing whether to queue a message, the logic checked if the plugin is enabled on the currently selected app, rather than checking if it is enabled for the receiving app. This diff fixes that.

Reviewed By: passy

Differential Revision: D20000055

fbshipit-source-id: 665f0a650dcee8f7f46aa56f399a4f7d0d0aa1e0
2020-02-21 04:46:23 -08:00
John Knox
a24b043df0 Allow websocket connections from browser
Summary: Gets flipper to open up a websocket server for web browser connections.

Reviewed By: passy, priteshrnandgaonkar

Differential Revision: D19501123

fbshipit-source-id: e506f35d7ddce622128932494e8bb10802d3747b
2020-02-13 13:56:37 -08:00
Anton Nikolaev
707759f096 Install pre-bundled packages 2/N
Summary: A first simple version of pre-bundled plugin installation. Currently both pre-bundled and source-only plugins are supported. Pre-bundled plugins should have folder "dist" inside and package.json's "main" field should point to the entry point script there.

Reviewed By: passy

Differential Revision: D19834020

fbshipit-source-id: 7e0b495fb9666acbb22fc32ca2382339cd9dc72f
2020-02-12 04:57:31 -08:00
Anton Nikolaev
71928fdf08 Install pre-bundled packages 1/N
Summary: No functional changes in this diff. This is just plugin manager refactoring before implementing  new functionality for installing pre-bundled packages.

Reviewed By: passy

Differential Revision: D19832078

fbshipit-source-id: 56b7ff1c68b6beb4abb2941da607651268e5f71a
2020-02-11 12:54:06 -08:00
John Knox
6712182fd1 Capture screenshot during export
Summary:
^

context: https://fb.workplace.com/groups/flippersupport/permalink/804152663398727/

Reviewed By: passy

Differential Revision: D19747718

fbshipit-source-id: 30a06446ba3d7d103332580ab5baad59bbc2481c
2020-02-10 06:05:17 -08:00
Anton Nikolaev
611870e344 Some plugin dependencies are not installed on plugin installation (#787)
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/787

https://github.com/facebook/flipper/issues/785

Reviewed By: jknoxville

Differential Revision: D19813491

fbshipit-source-id: 3ae99720fc85d5bd46e91779cc8b10c2853e581f
2020-02-10 05:49:30 -08:00
John Knox
2acf81027e Refactor screenshot capturing
Summary: Adding a utility for capturing screenshots to the configured location without having to worry about where to store it or use buffers etc.

Reviewed By: mweststrate

Differential Revision: D19765926

fbshipit-source-id: d6b51c4ffafab7450e97a60468926d84a25a8c0f
2020-02-07 12:52:52 -08:00
Anton Nikolaev
e42e44c324 Support installation of plugins packaged as vsix
Summary: This is experimental feature to prove that vsix format can be used to publish plugins. Turns out there are almost no differences of vsix in comparison with npm packages.

Reviewed By: jknoxville

Differential Revision: D19770476

fbshipit-source-id: b3c62e7f2a4e8000113b9f1651e8657eb3e0d6fa
2020-02-06 11:14:15 -08:00
Anton Nikolaev
1b6ce47be2 Real restart in dev mode
Summary: To test plugin installation I need to restart Flipper often, however restart in dev mode is not "true" restart - instead it just reloads the window and doesn't load freshly installed plugins. To make my life easier I have implemented more realistic way for restart in dev mode.

Reviewed By: jknoxville

Differential Revision: D19770263

fbshipit-source-id: 8755663746dc265e0826ed79b9782e073132537f
2020-02-06 09:43:27 -08:00
Anton Nikolaev
b9e7f5d6d1 Install plugin from package file
Summary:
Adding a way to install plugins directly from package files. This is required for testing after packaging format changes.

Stage 3: Implemented installation of plugins directly from package file.

Reviewed By: jknoxville

Differential Revision: D19765619

fbshipit-source-id: 57f36c87d3cf5d4e1c9a1f8f9f9f32b14a18bc8b
2020-02-06 09:43:27 -08:00
Pritesh Nandgaonkar
d9c8b5dd64 Do not fail if there are entries in errorArray from exportStore
Summary:
Currently `exportStore` function returns the serialized string along with errorArray. errorArray contains an error when there is some issue with fetching metadata. Essentially, it keeps the error in the errorArray and continues with fetching the data for the next plugin. Previously we used to exit our submit form execution when the errorArray had any value. So this diff removes that check and instead logs it on the console and in our logging system.
It will handle the case mentioned [here](https://fb.workplace.com/groups/1430200360634661/permalink/2566831316971554/)

This diff also adds a log when there is failure to upload flipper data.

Reviewed By: mweststrate

Differential Revision: D19723674

fbshipit-source-id: 18bf90461156f67ecc2b4ce4b1eac4aa3485188d
2020-02-05 04:30:03 -08:00
greenkeeper[bot]
e48966f529 Update algoliasearch to the latest version � (#772)
Summary:
## The dependency [algoliasearch]() was updated from `3.35.1` to `4.0.0`.
This version is **not covered** by your **current version range**.

If you don’t accept this pull request, your project will work just like it did before. However, you might be missing out on a bunch of new features, fixes and/or performance improvements from the dependency update.

 ---

**Publisher:** [nunomaduro](https://www.npmjs.com/~nunomaduro)
**License:** MIT

[Find out more about this release]().

 ---

<details>
  <summary>FAQ and help</summary>

  There is a collection of [frequently asked questions](https://greenkeeper.io/faq.html). If those don’t help, you can always [ask the humans behind Greenkeeper](https://github.com/greenkeeperio/greenkeeper/issues/new).
</details>

 ---

Your [Greenkeeper](https://greenkeeper.io) bot 🌴
Pull Request resolved: https://github.com/facebook/flipper/pull/772

Test Plan: Manually tested searching and installing still works.

Reviewed By: jknoxville

Differential Revision: D19690706

Pulled By: passy

fbshipit-source-id: 46cb05fb2c0429c4a1f7fb31a833cd000805825d
2020-02-03 14:54:19 -08:00
Pritesh Nandgaonkar
c51797d194 Fix the plugin display logic to show enabled and device plugins
Summary: Changed the plugin display logic in SupportForm to show plugins which are enabled(includes device plugins) and plugins which has `exportPersistedState` defined.

Reviewed By: mweststrate

Differential Revision: D19643857

fbshipit-source-id: 7a4a5882507c06c6b6f9c481ee2c5c36ecc32ac6
2020-02-03 04:38:25 -08:00
John Knox
96de2e2dd1 Fix ios connection issue
Summary:
getTargetDeviceId is now being called directly from within server.tsx.
Since it's exported anyway, it should always sanitize its input.
Changed the ios method to sanitize the CSR in the same way that the android one does.

Reviewed By: cekkaewnumchai

Differential Revision: D19663992

fbshipit-source-id: 77662542b3a8767ecdd4e984a8e2d990761a9815
2020-01-31 10:47:37 -08:00
Michel Weststrate
3f45414846 Make sure important errors are always shown to the user
Summary:
This diff makes sure that important errors are always shown to the user, such as an xcode version mismatch.

Also made some small styling improvements

Reviewed By: jknoxville

Differential Revision: D19660337

fbshipit-source-id: 24dfb4d98bfdd1666164403f87b6a4e1dc915ddb
2020-01-31 05:09:23 -08:00
Pritesh Nandgaonkar
6a54216f1a Add a status message when the selected client doesn't have graphql plugin
Summary: Adds a status message when the one deeplinks to support form and the selectedClient doesn't support GraphQL plugin.

Reviewed By: jknoxville

Differential Revision: D19602900

fbshipit-source-id: 98a45ead2659bb229f4a1301e918e02dca05fc66
2020-01-29 10:31:48 -08:00
Michel Weststrate
bdd4516dc4 Track how much time people spend waiting for queues to be flushed
Summary: Added stats, so that we know how much people have to wait when opening plugin after we open the queue GK

Reviewed By: jknoxville

Differential Revision: D19598730

fbshipit-source-id: f955123f2bae5b870eada8f787385d6c0450453e
2020-01-28 05:07:22 -08:00
Michel Weststrate
6218b00e15 Fix issue where file / link export accidentally included support request details
Summary: When doing a Flipper trace export through the app menu (not the support form), the export still contained a support request details section, with the default data of a bug report. That doesn't make any sense and is confusing, so this change makes sure the report is only included if it is supported through the supportRequestForm

Reviewed By: passy

Differential Revision: D19499408

fbshipit-source-id: ff7a5333f2045f2465966dffa0c5fb03aaeaceb8
2020-01-27 07:22:32 -08:00
Michel Weststrate
82e65c68dc Make sure plugin name selections are displayed consistently with sidebar, [Flipper] Make sure plugins have the same name everywhere
Summary:
Not all plugin names are created equal in flipper. For example, plugins would bear different names in the sidebar and in the plugin selection when making a support request / flipper trace. Fixed this and also introduced a `getPluginTitle` utility that produces this name consistently.

Plugin listview now also sort their items consitently with the sidebar.

Probably also fixed an error in the flipper export screen, where a correct TS error was supressed.

Reviewed By: jknoxville

Differential Revision: D19499404

fbshipit-source-id: c5b23a170d41d96799eb7899e249f70778717d45
2020-01-27 07:22:32 -08:00
Michel Weststrate
434d75f362 Always process messages for navigation plugin
Summary: For the navigation plugin we want to opt-out from the "enabled" and "process messages later" optimizations, because it's events should be immediately processed to reflect the changes in the topbar for navigation purposes

Reviewed By: jknoxville

Differential Revision: D19554297

fbshipit-source-id: 4bd49b5d1327feea6dea52e86d9dbc9d54a5dbee
2020-01-27 04:04:20 -08:00
Michel Weststrate
e9ff9addc6 Fixed broken navigation plugin
Summary: The navigation plugin threw exceptions, as the defaultPersisted state was not mixed into the already stored state, making some fields unreadable

Reviewed By: jknoxville

Differential Revision: D19554291

fbshipit-source-id: 57f045aa1eae10682e44d479b9aecb51f0391b9e
2020-01-27 04:04:20 -08:00
Anton Nikolaev
aab004aa15 Allow disabling iOS development in Settings
Summary:
Currently Android development can be disabled in Settings, but iOS development not. Because of this Doctor always shows warnings to Android-only developers who has no iOS SDK installed. This change makes it possible to disable "iOS development" option in the same way as we already had for Android.

Additionally I changed Doctor warning to show more specific message if only iOS or only Android checks are failed with suggestion to disable the failing platform if it is not required.

Reviewed By: jknoxville

Differential Revision: D19538070

fbshipit-source-id: 234d2c6cf21083f9d6aebd63418aed7f9a78e922
2020-01-23 13:37:03 -08:00
Anton Nikolaev
b625efee3d Doctor complains Android SDK is not installed
Summary:
There are complaints about Android SDK being reported as "not installed" when it is actually installed. To address them, I changed the way how we detect SDK and also added some minimal actionable feedback for each check.

The problem with the previous implementation of Android SDK check via "envinfo" is that the library uses "sdkmanager" tool under the hood, and this tool doesn't work on Java 9+. To fix this I'm changing the way how we assume SDK is installed to simple check for "adb" tool existence.

Actionable feedback is shown on Doctor report when you click to an item.

Reviewed By: jknoxville

Differential Revision: D19517769

fbshipit-source-id: 1c21f1bdcd05c7c0ae3f97b9c3454efa2c861d26
2020-01-23 13:37:02 -08:00
Michel Weststrate
a9f2b67874 Fix background plugin stats
Summary: Discovered that all gathered plugin stats where empty due to mis-using Object.entries. Fixed that. Also added a accumulated cpuTime metric, which should be great for a uniform trend line.

Reviewed By: jknoxville

Differential Revision: D19517279

fbshipit-source-id: a6df83eea000a5d59fe692a3795fd58ae6457821
2020-01-23 02:04:06 -08:00
Pritesh Nandgaonkar
d31ea742f5 Fix broken URL export
Summary:
Fixes broken export through URL.
Also fixes an issue where we suppress an exception

Reviewed By: mweststrate

Differential Revision: D19517066

fbshipit-source-id: c68b6a1bcbc8b0588e0db9032268033a42b43c61
2020-01-22 10:07:59 -08:00
Michel Weststrate
a3a3db5363 Improve stats collection for plugins in the background
Summary:
This diff improves two things:
1. Stats are now gathered on every `trackUsage` tick, rather than only when there is a selection
2. The stats now include a delta to compare it with the previous tick

Reviewed By: passy

Differential Revision: D19514231

fbshipit-source-id: 1854c1dc03c63a03db8c7040c185d2629e1b9ea2
2020-01-22 07:10:52 -08:00
Anton Nikolaev
5fd8db294a Add Windows to GitHub Actions CI matrix
Summary: Pull Request resolved: https://github.com/facebook/flipper/pull/741

Reviewed By: jknoxville

Differential Revision: D19371114

fbshipit-source-id: 07c6bd71e58011cc3fffa34354546eb773e3fc3d
2020-01-14 03:52:52 -08:00
Anton Nikolaev
7da7df44ff Fixed tests
Summary: Fixed few tests which were failing on Windows

Reviewed By: mweststrate

Differential Revision: D19371105

fbshipit-source-id: 118a76783680a3efa0645321d8c88b4e6e754ce0
2020-01-13 06:22:18 -08:00
Anton Nikolaev
2599dffe48 Healthcheck failures analytics
Summary:
Send per-healthcheck success/failure event to be able to analyze most common problems.
Send event when doctor warning bar shown.
Send event when doctor report is opened by user.
Send event when user set flag "Do not show warning again" in the doctor report.

Reviewed By: passy

Differential Revision: D19312127

fbshipit-source-id: 01b648d1154a3aeadc85980190cb9e5e221b572e
2020-01-10 06:18:32 -08:00
Anton Nikolaev
751c778069 Use unique keys to identify healthchecks
Summary: Added unique keys for each healthcheck and used them to save already seen failures. Later I will also use them for gathering doctor analytics.

Reviewed By: jknoxville

Differential Revision: D19301583

fbshipit-source-id: 0c0aa977ea73ce555e0d9fb8e8ead844624fb9cd
2020-01-08 08:12:06 -08:00
Chaiwat Ekkaewnumchai
bacb1958fc Back out "Back out Electron 7.1.1/7.1.2 upgrades"
Summary:
Original commit changeset: 05d13aca7145

Attempt to upgrade `electron` as it instacrashed; `electron-builder` version 22.1.0 didn't sign package correctly and caused the instacrash,

Reduced the version to 21.2.0 (latest).

Reviewed By: passy, nikoant

Differential Revision: D18954671

fbshipit-source-id: bc2dbd4fec9afb51d9a535974651b13d195407b4
2020-01-06 09:44:13 -08:00
Michel Weststrate
8cfe06d530 New multi app supporting sidebar navigation
Summary:
This diff changes the sidebar navigation, fixing a bunch of issues:
It will be possible to quickly switch again between the same plugins in multiple apps
No need to expand-and-check the app dropdown until the app is connected
No need for ugly fallback selections if some app connects faster than another one

Reviewed By: nikoant

Differential Revision: D19272701

fbshipit-source-id: 10f5fab42391014ef4a4a4c91c529d93f8bfb125
2020-01-06 08:51:08 -08:00
Anton Nikolaev
901817040c Properly resolve path to icons.json in release build
Summary: Currently release build fails to launch, because path to icons.json is resolved incorrectly. This change should fix resolving so it will work for both dev and release build.

Reviewed By: jknoxville, mweststrate

Differential Revision: D19274410

fbshipit-source-id: 9c0a92e1f6808997d08366c8021cd57565c5ae2c
2020-01-03 10:57:13 -08:00
Michel Weststrate
8a84bcbe29 Make sure non-existing icons do break the build
Summary:
Builds didn't fail when using non-existing icons, and the error message was not very clear

Also added verification that, before automatically adding an icon to the prefetcher, that icon does exists

Reviewed By: jknoxville

Differential Revision: D19264063

fbshipit-source-id: 4320d5b960e85e3f15bbca13d69f3063b983a511
2020-01-02 10:45:59 -08:00
Anton Nikolaev
2bee021966 Do not show Doctor warning on startup for already seen problems
Summary: Doctor sometimes can show false-positives and in such case there is no way to suppress showing warning message on each startup. To reduce annoyance I've added an option to save the problems already seen by user and show the Doctor warning only for new problems.

Reviewed By: mweststrate

Differential Revision: D19187095

fbshipit-source-id: 14c1fcc9674f47fbe0b5b0f2d5d1bceb47f7b45d
2020-01-02 08:55:15 -08:00
Michel Weststrate
85992d354d Automatically add icons to prefetch in development mode
Summary:
When browing through flipper one gets random warnings about uncached icons. Since we can't predict which plugins use which icons, it is hard to keep the list in `icons.js` updated.

This diff extracts the table to a separate json file (static/icons.json) and if an icon is missing in development, it will automatically add it to the list, so that the icons will be part of the prefetch of the next build / restart

Reviewed By: jknoxville

Differential Revision: D19257253

fbshipit-source-id: c9c791d50fa5d66738d93873289fbde575f32d66
2020-01-02 08:22:31 -08:00
Michel Weststrate
59c9a10a73 Fix random warnings in several plugins
Summary: Click through plugins and fix warnings until tired.

Reviewed By: jknoxville

Differential Revision: D19253740

fbshipit-source-id: 87b6d6b103ee51c7b5579a128a15c3bb9d71b432
2020-01-02 08:22:31 -08:00
Michel Weststrate
5d25b77622 Bug: cannot export data / submit bug without selected device / client
Summary: Without selected device or client, it is currently impossible to submit a bug report. This diff fixes that.

Reviewed By: jknoxville

Differential Revision: D19251701

fbshipit-source-id: fd0dc0c779fb27d93ed02a404da76a7e6b251b94
2020-01-02 07:14:15 -08:00
Michel Weststrate
9acf23596e Show a message if a background plugin is not starred
Summary:
Since background plugins don't receive data anymore when not starred, we should hint the user about this.

For this diff, I reused the existing statusbar. Although this solution is quite ugly, I think it is better than introducing yet another notification / warning mechanism. Probably we should revisit the layout of this status bar in the future.

Reviewed By: jknoxville

Differential Revision: D19251588

fbshipit-source-id: 1dfd07be383d4ba318f344ebff4b08ed36194c58
2020-01-02 07:14:15 -08:00
Michel Weststrate
04fcaddded Only store messages for plugins that are starred
Summary:
From several reviews / early feedbacks it was suggested several times to use the star mechanism to distinguish which plugins are allowed to send messages. This diff implements that:

- If a plugin is not selected, and not starred, it will drop the messages it received in the background
- This logic is still behind the same GK
- I think this change warrants upping the message queue limits significantly
- A future optimization would be to disable sending messages from the device side of things to reduce bridge usage, but that change is probably a lot more complicated with less impact
- In the next diff I'll make clear from UI perspective that unstarred plugins don't queue messages

In the attach video one can see how graphQL plugin keeps storing messages if it is starred, but if it isn't starred and not selected either, it will skip messages

{F225692819}

Reviewed By: jknoxville

Differential Revision: D19250928

fbshipit-source-id: 7e6af0eb6830dc79951cfd206e05b44061f1b14a
2020-01-02 07:14:14 -08:00
Michel Weststrate
1caf5d5d3a Fix regression in background state
Summary: `flipperPrintPluginBackgroundStats()` tended to report the class name rather than the given plugin id

Reviewed By: jknoxville

Differential Revision: D19250706

fbshipit-source-id: 6035892bacf6a592d8c510320d5e003fac580ec7
2020-01-02 07:14:14 -08:00
Michel Weststrate
1f6a344f4d Make sure that failing to process an individual event, does not crash the plugin
Summary: See title

Reviewed By: jknoxville

Differential Revision: D19177573

fbshipit-source-id: 269a6a09887c930d446315eeaa31f28e1d100e7f
2020-01-02 07:14:13 -08:00
Michel Weststrate
b8e752412e Process queues before exporting plugins
Summary: This diff makes sure that pending queues for plugins that are selected are processed before making a flipper export.

Reviewed By: jknoxville

Differential Revision: D19194211

fbshipit-source-id: e076375889450407e7f94384051719f3bbc415ee
2020-01-02 07:14:13 -08:00
Michel Weststrate
0494a84d98 Make sure that plugins don't store events unbounded
Summary:
To avoid plugins to collect data forever and store it (if they are never opened), introduced a hard-coded default limit on how many events will be preserved.

A semantic change is that plugins have to be potentially resistant against missing events. So far, during testing, this didn't seem to cause any problems.

Reviewed By: jonathoma

Differential Revision: D19175912

fbshipit-source-id: 828be941e76b7356c9f5be7e5a49de9a7a31b0d2
2020-01-02 07:14:13 -08:00
Michel Weststrate
8c8f360572 Process and render messages when a plugin is opened
Summary: This introduces the necessary UI changes, to kick off and render event progressing process where needed

Reviewed By: jknoxville

Differential Revision: D19175450

fbshipit-source-id: 61e3e8f59eeebf97eedbe715fa7db320286543e2
2020-01-02 07:14:13 -08:00
Michel Weststrate
d2a2e2ab75 Introduce async message queuing
Summary:
This diff introduces the logic for queueing incoming messages rather then directly processing them you are behind the `flipper_event_queue` GK.

The reason the queue processing is a bit complicated is to make the queue can be processed non-blocking, can be cancelled, and is safe to concurrency issues.
The idea here is that the queue is processed when we switch to a plugin, report it's progress, and abort the process when switching to another plugin without loosing any work.

This diff does not include
[x] updates to the UI (**SO DON"T LAND IN ISOLATION**)
[x] metrics to see the effect

The effect of the changes can be seen when profiling the application, before this change there are very regular CPU spikes (see the small yellow bar on the top):

https://pxl.cl/TQtl

These go away when the events are no longer processed
https://pxl.cl/TQtp

Reviewed By: nikoant

Differential Revision: D19095564

fbshipit-source-id: 0b8c3421acc4a4f240bf2aab5c1743132f69aa6e
2020-01-02 07:14:12 -08:00
Michel Weststrate
bc36c1607d Apply idle optimizations throughout code base
Summary:
See explanation in parent diff, make sure the idler is used efficiently, instead of wasting a lot of CPU creating a new callstack every time `idle` is called.

Also fixed that cancelled idlers could result in an _uncaught_ exception

Reviewed By: nikoant

Differential Revision: D19158593

fbshipit-source-id: 0be505a74c374e0ca6ee0e79b1f1e98ac9b80467
2019-12-19 04:27:27 -08:00