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
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
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
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
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
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
Summary:
This seems like a better approach than ad-hoc lookup in
`electron.remove.argv`. Left a note to a task to provide
a better interface to this.
I also need this in order to ensure we're starting
Flipper through the launcher which needs to happen
before we start the Electron runtime.
Reviewed By: jknoxville
Differential Revision: D13881355
fbshipit-source-id: 69c70d71035a47084f789ddb4dc969b45ba4648b
Summary: listening on `SIGINT` events and putting the serialized store to stdout.
Reviewed By: passy
Differential Revision: D13878051
fbshipit-source-id: 19c1d857a299ed9a474605169c54e5359e0515bd
Summary:
For the electron build, plugins are bundled with the app and loaded from there at launch. The headless version can't require from its binary, so plugins need to be required from another path.
This diff makes the path where bundled plugins are loaded from adjustable via an environment variable: `BUNDLED_PLUGIN_PATH`. If it's set, the plugins are loaded from this path, otherwise we default to the old behaviour of including them from `./defaultPlugins`.
For the headless version we expect the plugins to be in a folder called `plugins` next to the executable. This should later be configurable via an argument passed to the CLI.
Reviewed By: passy
Differential Revision: D13843676
fbshipit-source-id: 04237ae6631b4f2ba56887fe992a56f860724edc
Summary:
Pixels don't seem to allow modifying the modification time
of files on the "sdcard". You can repro this by getting a Pixel
device and running
```
$ adb shell touch /sdcard/boop
$ adb shell touch /sdcard/boop
touch: '/sdcard/boop': Invalid argument
```
Access time seems to work, strangely enough, but I'd rather
not play games and just create an empty file instead with echo.
Reviewed By: danielbuechele
Differential Revision: D13941381
fbshipit-source-id: 1321482a07a6698aa5eaf71e5a022c8e7dfe0b18
Summary:
Instead of replacing the tilde with home-dirs on an incomplete, ad-hoc
basis, let's use a package for this. It also supports `~USER` resolution
which someone might reasonbly expect to work if `~/DIR` is working.
Reviewed By: jknoxville
Differential Revision: D13940956
fbshipit-source-id: 5bfa9b8b2540fed8c05c856ff736e48e925f985d
Summary: This diff makes sure that flipper error notifications are triggered only on the non-prod builds. Ideally we should have a preference in the flipper app itself, this we can work out later. As this diff solves the issue posted in the [group](https://fb.workplace.com/groups/230455004101832/permalink/561100837703912/).
Reviewed By: passy
Differential Revision: D13923819
fbshipit-source-id: 6598f00ab3a7b0c4a3b783120e62a1796fe4e5d2
Summary:
Upgrading to flow 0.91, fixing a bunch of `$FloxFixMe`s that were introduced by upgrading to 0.86.
Also fixing some linting issues.
Reviewed By: priteshrnandgaonkar
Differential Revision: D13900794
fbshipit-source-id: 5d0a1b62371f3b5d34b909bae0876583acb6f977
Summary: Exposes crash reporter plugin and export data functionality to open source
Reviewed By: passy
Differential Revision: D13879149
fbshipit-source-id: ee10097cc9ff1af11e0350f50c855d7766076cd1
Summary:
Adds an optional "plugin" field to the tracked metrics. The idea is to be able to see failures in plugins.
Added it around all desktop -> sdk "call"s, so it won't require any effort from developers but we'll get lots of immediate data. E.g. How often layout -> getNodes fails. I think we can go modify the existing pipeline to take both platform and plugin data so we can get session roll-ups too.
Corresponding change to the puma app: D13882629, adds a plugin field to all tables so we can filter by plugin, or null for platform failures.
I'm thinking it will be worthwhile to expose some method to plugin developers, that lets them explicitly track failures. It would be better if it encapsulated their plugin id etc, so they just need to say what failed. But that can be done any time, I don't have any particular use cases in mind yet.
Reviewed By: passy
Differential Revision: D13878379
fbshipit-source-id: 2e2ef6b98f763e6edcfe937741d6988dae4b92d1
Summary: Change from `recordSuccessMetric` to `reportPlatformFailures`, because the next diff adds `reportPluginFailures` and I want to distinguish the two.
Reviewed By: passy
Differential Revision: D13878380
fbshipit-source-id: 9c6b8bfe1ed2e1a8bbe5aacbec31d24e9aa39171
Summary:
The function itself can easily be pure. Let's have the side-effects
(lookup of env variable and error handling) outside of it. Also
prevents spam in the test log (which I intend to make a test failure
going forwards).
Current output:
{F149794656}
Reviewed By: jknoxville
Differential Revision: D13894995
fbshipit-source-id: dacf51f8b35cb427740f9566ef993ffc6b2c3906
Summary: If one logListener was to throw an error, the others wouldn't receive the logs anymore.
Reviewed By: jknoxville
Differential Revision: D13881128
fbshipit-source-id: a653ba9279380c25bbc7ae2fd0c63de0884aa441
Summary: This diff updates the check which triggers crash notifications. We got a user feedback that crash reporter used to report non fatal crash too and it used to annoy users with bombardment of crash notifications.
Reviewed By: passy
Differential Revision: D13878272
fbshipit-source-id: 75446f08f806e8f28a6f68953c0a001fd18a7dc0
Summary:
We were using `window.performance` to measure performance. This was because the equivalent node.js API `perf_hooks` wasn't available in the electron version we were using back then.
However, `perf_hooks` has landed in electron meanwhile, so I am moving to this API, as it works for the headless version and jest tests, too.
This allows us to delete the babel transform that was used for node-based tests, where the browser API was replaced with the node API
Reviewed By: jknoxville
Differential Revision: D13860133
fbshipit-source-id: cf1395004fac046dd55751ff465af494173b2cbf
Summary:
Incorrect imports were causing an error: `invariant is not a function`.
This fixes the imports.
Reviewed By: jknoxville, priteshrnandgaonkar
Differential Revision: D13859945
fbshipit-source-id: 2a5f5f87b4df2840c8e6b749acb293b145805afa
Summary: Adds tests for flipper import and export. Also fixed few edge cases which was discovered through tests. The edge case was that it didn't export device plugin states.
Reviewed By: danielbuechele
Differential Revision: D13828357
fbshipit-source-id: ddc4352b729ca7f05c5875f2f3fbdd2c7f4e2186
Summary:
This diff adds the capability to export the flipper data to a file. With this diff you can click on the "Export Flipper" option from the "Edit" menu in menubar. It will export it in the file at this location
`~/.flipper/MessageLogs.json`
We do not exactly export the store, but just the important part of it. We export in the following format
```
{
fileVersion: '1.0',
device: {
os: 'iOS',
title: 'iPhone 7',
serial: '',
deviceType: 'physical',
},
clients: [
{
query: {
app: 'Facebook',
},
d: '12345678'
},
{
query: {
app: 'Instagram',
},
id: '12345678'
}
],
store: {
pluginState: {},
notifications: {}
}
}
```
In next diff I will add the capability to select the folder to export the file too.
Reviewed By: danielbuechele
Differential Revision: D13751963
fbshipit-source-id: 7d3d49c6adf8145b2181d2332c7dbd589155cec3
Summary:
I must have run this locally on an outdated version of eslint or the
plugin, because I did not see all the formatting errors. This is because
`eslint-plugin-prettier` dropped support for the `fb` preset (see https://github.com/prettier/eslint-plugin-prettier/pull/113/files). This restores the equivalent ruleset explicitly.
Pull Request resolved: https://github.com/facebook/flipper/pull/363
Reviewed By: danielbuechele
Differential Revision: D13839021
Pulled By: passy
fbshipit-source-id: 59e27a241e8aada8648b175ab8abbdfbd391556e
Summary:
This moves the version display from the updater component
to the titlebar itself, so it'll be shown even in dev mode.
This is already useful when using it on platforms like Linux
where the updater isn't supported, but will also help when
moving to the launcher model.
Reviewed By: jknoxville
Differential Revision: D13819139
fbshipit-source-id: cbc127b8ccdf932f823bc1f40319f296516dfc31
Summary:
Fixes required to be able to run Flipper in node.js:
* Adds checks if the `window`-object exists before using it, to allow running in node.
* Imports from within Flipper should directly reference the file they are requiring instead of `import from 'flipper'`. This was done in most of the places. Fixed a few occurrences where this wasn't the case. This is to prevent cyclic dependencies in node.
* shared packages (React, ReactDOM and Flipper) were exposed on the `window` before, changed this to `global` as this works in browser and node.
* Adds some missing methods to our electron stubs (used for testing and headless Flipper)
Reviewed By: passy
Differential Revision: D13786577
fbshipit-source-id: 145d560f1446e7d0bdec2acd8dd54dae983d7b36
Summary:
Before this diff, the crash reporteer plugin for android just used to show messages which were error and had tag as "AndroidRuntime". This diff fixes this and instead accepts multiple different tags which might be related to crashes.
The issue with triggering the notification for all kind of messages would be that, the user might get many. For the jni errors, the stack trace of it are shown as multiple entry instead of one entry in logcat. So to combine all the stack trace into one callstack message, this diff adds a timer of 10ms and combines the messages which occur in that timespan and then trigger the notification.
Reviewed By: danielbuechele
Differential Revision: D13772505
fbshipit-source-id: fec6f5a7f9f46948c9f9dc5b2a7b92690913c8aa
Summary:
We've only got about a 75% success rate at initializing an adb client: https://fburl.com/scuba/tr5tkehi
This is the second attempt to fix this. The first one D13487864 was reverted because it used 'adb' instead of the full path, and when run as a GUI app, you don't get the PATH variable typically set up in .bashrc files etc.
Fixing it by using the full $ANDROID_HOME path.
For facebook users, this will always be guessed correctly, but for OSS it could be installed anywhere, so we might get it wrong - it's common for $ANDROID_HOME to not be set at all on mac systems, and setting it for GUI apps is not exactly trivial: https://superuser.com/questions/476752/setting-environment-variables-in-os-x-for-gui-applications
Leaving the previous implementation as a fallback for OSS users and in case this method fails for some reason.
Metrics wrapped around each implementation as well as the entire thing, so we can see if it solves the issue.
Reviewed By: passy
Differential Revision: D13818981
fbshipit-source-id: d90bfd9ec80621526accc080778afc44f2a099d9
Summary:
Part 3 and final part of adding customizable ports. To use this, the iOS / Android apps have to also be started with the same custom ports.
Example usage: `FLIPPER_PORTS=8189,8188 yarn start`
Reviewed By: passy
Differential Revision: D13801761
fbshipit-source-id: 3dd80a3001ed0855e54cc568fa94eb6fac5fc7f1
Summary:
After the LogManager interface change this file wasn't updated.
The test isn't enabled at the moment, but I don't know why flow didn't notice this.
Reviewed By: passy
Differential Revision: D13783861
fbshipit-source-id: 09d887f6567300aa9a16ec2a97b17a2d9de338d1
Summary:
It turns out puma was erroring on the GK field inside the log json, because of improperly escaped " in the fields.
To simplify it I'm changing it to use simple comma separated key:value pairs, since they are always plain string and boolean values.
"gatekeepers":"TEST_PASSING_GK:false,TEST_FAILING_GK:false,devtools_sonar_team:false"
Reviewed By: passy
Differential Revision: D13782283
fbshipit-source-id: 3f331dc9189b1a57f69a2af0d4393baf45e1fa55
Summary:
We had a promise for initializing the servers, but it wasn't rejected when server startup failed.
Fixed by resolving / rejecting based on the listen / error events fired from the server.
Reviewed By: passy
Differential Revision: D13762580
fbshipit-source-id: a0d1a56473f84dc416e5ce2de91a53b21574f452
Summary: Android and iOS each have a separate metric
Reviewed By: passy
Differential Revision: D13763758
fbshipit-source-id: f679360ec0ee008b434bfe12107ac6548d882a1f
Summary: Manually checked that the snapshot doesn't contain the auto updater.
Reviewed By: jknoxville
Differential Revision: D13715520
fbshipit-source-id: 720fed1e9952b788bce3311ecb508cfcfdc1758a
Summary: Provide a `--no-updater` option that disables the in-app auto updater when passed.
Reviewed By: jknoxville
Differential Revision: D13713919
fbshipit-source-id: 49a647105fea1efa23f653e4a6ed452b3489879b
Summary: This diff adds support to send crash notification whenever the cpp exception of Flipper is suppressed. Also updated the tests regarding the same
Reviewed By: jknoxville
Differential Revision: D13635822
fbshipit-source-id: 01e4a57c391476e5b044e64946d337cb4582a527
Summary: To allow comparisons between metrics/errors in and out of GKs.
Reviewed By: passy
Differential Revision: D13714754
fbshipit-source-id: 311a1cd7bd5a7b2332e20a32d37d0fb323d00569
Summary: Will allow us to look into bad sessions if necessary.
Reviewed By: passy
Differential Revision: D13695386
fbshipit-source-id: 2cfc8ec28ef4cb387ef7a5a58b02aa77a367ae81
Summary: Remove `$Subtype` and `$Supertype` utilities. Replacement was done on a best-effort basis. In many cases it sufficed to replace `$Supertype<T>` and `$Subtype<T>` with `T`, but when this was not possible `any | T` and `any & T` were used instead.
Reviewed By: jbrown215
Differential Revision: D13624765
fbshipit-source-id: 82ee9d43cfc318ed4bd2d84e0f4c5c1d8f488a9c
Summary: Will provide some visibility on error rates.
Reviewed By: passy
Differential Revision: D13671492
fbshipit-source-id: 60971a7e8163c58dd4d6540e57e05b38c852744e
Summary: This tracker isn't really used, but at least now it can benefit from having the sessionId.
Reviewed By: passy
Differential Revision: D13671367
fbshipit-source-id: 3a79e843e3fabab191d0d7471d56a81b1a91a1e9
Summary:
The advantage of this is that anyone can now log without needing to carry around a Logger object.
Primary reason is for making metrics less intrusive in the codebase.
Reviewed By: passy
Differential Revision: D13671368
fbshipit-source-id: 162ab1351a124683aef13983fc3bcec01385cd1a