Summary: Moving the `MarkerTimeline` from the QPL plugin to the Flipper UI library, so it can be used by other plugin.
Reviewed By: priteshrnandgaonkar
Differential Revision: D13377065
fbshipit-source-id: 9ef1f0e044fa85b68a01e23071042600aa5c3c63
Summary:
Copied over form Litho, but works in our repo too.
This can be used to verify that a given version number
is properly accessible via maven. Just used this to check
if `v0.13.0` was available and sadly it wasn't because
Travis was broken. Working on that now.
Reviewed By: danielbuechele
Differential Revision: D13449948
fbshipit-source-id: 7f113d971dac341938615e6352b5981f557ffecd
Summary:
- Crash reporter plugin: Get notified for crashes in Android and iOS apps. Currently in Alpha and not enabled by default.
- Support for physical iOS devices.
- `yarn start` in open source works again (54d09aa951)
- Prevent unnecessary UI rerenders (133788380e)
- Fixes a problem on macOS where external plugin from `pluginPaths` config weren't loaded (f7ddf3b496)
- Various improvements for certificate exchange and device connections.
Full changes here: 19485d076b...c6e0517640
Reviewed By: danielbuechele, priteshrnandgaonkar
Differential Revision: D13431074
fbshipit-source-id: ef2087742911e4c5ee98af1941bc7db5cfe75578
Summary:
First add a Flow Strict config, then enable Flow Strict Local for 13 files in xplat/sonar.
each change can land seperately:
drop-conflicts
Reviewed By: passy
Differential Revision: D13368791
fbshipit-source-id: 5bc1f9d3a179f4b9a554cc8cc629db0fda468a36
Summary:
Moving the scrolling to highlightedRows from `componentWillReceiveProps` to `componentDidUpdate` to make sure the rows are rendered, when this method is called.
The method is called, whenever the highlighted rows change, and on the first update. The reason why this is called on the first update is described in an inline comment.
Reviewed By: passy
Differential Revision: D13376566
fbshipit-source-id: 311a1f430e08fcfb4e31b39a2c5b34910694917f
Summary: changing the payload to work with the updated logs plugin
Reviewed By: passy
Differential Revision: D13376392
fbshipit-source-id: ccfb1b1a7a2ec3e9d3899e70c9bdd199a489da88
Summary:
The log plugin subscribed to the device logs, when it was mounted. Then, the device replayed all log messages that happened in before the plugin became active. While this works, this was not the most performant way to handle this, because it caused multiple rerenders.
In this diff, a method is added to `BaseDevice` to get all buffered logs. This method is called once the logs plugin becomes active. The processing of the logs is split into a couple smaller functions.
Reviewed By: jknoxville
Differential Revision: D13376393
fbshipit-source-id: bb151659c3335e10f647ae2dbf66e93b32d22913
Summary: as per title. The updated doesn't have any breaking changes. Only improvements and bugfixes.
Reviewed By: jknoxville
Differential Revision: D13376391
fbshipit-source-id: 46f2462cec87600f06fb793a42092f054489c397
Summary:
* using `includes` instead of `indexOf` for performance improvements
* fixing bug in Searchable overwriting `defaultFilter` variable
* adding default name for markers without name
Reviewed By: priteshrnandgaonkar
Differential Revision: D13397936
fbshipit-source-id: ee514dab7c2ac4acdaba86ccd41e0ef69815faeb
Summary:
Now we get one event for every time an android or iOS device is detected by flipper.
This is different from a successfull connection. E.g. it may not have any flipper-enabled apps running.
Reviewed By: danielbuechele
Differential Revision: D13377316
fbshipit-source-id: 80e42ab0ae1c2ab50d4bec732a0fa86fcd941991
Summary: An empty .watchmanconfig is required inside the application resources for the plugin loading to work. This diffs adds the file to the `static` folder, which is copied to the application ressources.
Reviewed By: jknoxville
Differential Revision: D13376834
fbshipit-source-id: 1b34a89c5be6f938a640c79ddb3e9ea784bd2d22
Summary: This PR adds support to catch and report signal errors to the flipper. It also reports the callstack. Please look at the video in the test plan to understand the what it does.
Reviewed By: jknoxville
Differential Revision: D13328818
fbshipit-source-id: 304a68f47bb5ca5b0014c8b7d30f6a6fc2b6d147
Summary:
On iOS devices (internal only right now), when flipper desktop isn't running we get a Network Error instead of a Port not open error, because we can always connect to the port forwarding server running on the phone.
So in this case, don't count this error as a failure so we don't needlessly delete the certificates to attempt to fix it.
Reviewed By: passy
Differential Revision: D13358147
fbshipit-source-id: 8f9fb62cd2dcada058d104ef60f788a1b62d7094
Summary:
Getting more visibility on this.
We're seeing cases where the wrong deviceId is getting stored in the device connection_config.json.
This comes from flipper desktop in the response of 'signCertificate', and is figured out using getTargetDeviceId.
If we ever see these logs then something is wrong, and seeing the csr should help.
Reviewed By: passy
Differential Revision: D13357882
fbshipit-source-id: eb6befe07e7f9e7606e8940a1fed619351946d37
Summary: This was recommended by my Android Studio 3.3 when starting up, so let's do this.
Reviewed By: jknoxville
Differential Revision: D13302768
fbshipit-source-id: c38601659bde4515d62b31efbd907b44304aafba
Summary:
This deprecates the `getPlugin(String)` method and introduces
a `getPluginByClass(Class<T>)` instead which avoids having
to `instanceof`-check and then cast the result, which provides
a nicer experience for Java users.
Reviewed By: jknoxville
Differential Revision: D13277568
fbshipit-source-id: fb7b5b8c0180470ef0ad322559b5b7424520848b
Summary:
Now flipper will include iOS devices in the dropdown, but you'll also get a message saying they aren't yet supported.
Also doesn't start up the PortForwardingMacApp instances in this case, because it's pointless.
Reviewed By: priteshrnandgaonkar
Differential Revision: D13319990
fbshipit-source-id: 75d72c6ed2478c7b999c5f43b764f097141b33de
Summary:
At the moment, when a client is failing to connect, you effectively get an infinite spinner, as it keeps retrying.
This keeps the spinner while it's retrying, but in between, shows a failure icon.
This isn't perfect. It's still shown under possibly the wrong device, but that already happens anyway, this just adds an extra icon.
Pull Request resolved: https://github.com/facebook/flipper/pull/339
Reviewed By: priteshrnandgaonkar
Differential Revision: D13319635
Pulled By: jknoxville
fbshipit-source-id: e16177ecc7058b779fb17b61e20fcbac8ccf0c29
Summary: I'm not sure if this ever happens, but currently if an empty csr came in from a device, it could cause at the very least confusing errors, and worse incorrect setup state in devices, meaning they can't connect.
Reviewed By: passy
Differential Revision: D13302621
fbshipit-source-id: 80ff79d2eabd0988059c34bfa92587c82516997a
Summary:
Improves the UI of crash reporter plugin
- Added max height on the value container with scrollable capabilities
- Fixed the bug in UI of the plugin where it showed the latest crash data even though one navigated to the plugin from old crash notification
Reviewed By: danielbuechele
Differential Revision: D13307302
fbshipit-source-id: 97eb96d3d9947a2835cd5572053256e0bdc01e27
Summary:
Adding a a react-devtools plugin for Android.
This doesn't do much, but announces the plugin to be available.
To make this work on remote device, the hostname and port sent to the device needs to be set in the dev tools. This is isn't done yet, so this will only work for simulators.
Reviewed By: jknoxville
Differential Revision: D12897151
fbshipit-source-id: b874549925c395ff6356f6745b9706b182d544dd
Summary:
Updating react-devtools plugin to the latest version.
As Flipper doesn't use a websocket anymore, this plugin was not working. In this diff, we are creating a websocket connection parallel to the rSocket connection which is used by the devtools. First we thought about tunneling the websocket through our rSocket, but this would be a lot more work.
By default they create a web-socket running on port 8097. But if this port is in use another port is used. The hostname and port to connect to is sent to the client-plugin.
Reviewed By: jknoxville
Differential Revision: D12897150
fbshipit-source-id: 6652b3c91fd5bd87fe86b29c730c8b2076bbc6ba
Summary: Replace the console.error and lack of calling done(), with an explicit expect() call to make failure results clearer.
Reviewed By: danielbuechele
Differential Revision: D13254777
fbshipit-source-id: 602081323ad3cc1432ddb706f49f036f0fb8926d
Summary: Adds support for physical iOS devices, when the necessary dependencies are present. Unfortunately these aren't open sourced yet so the open source build won't get this feature yet.
Reviewed By: priteshrnandgaonkar
Differential Revision: D13001473
fbshipit-source-id: d8c2bcd53b7972bec676717c8af0112800b918d0
Summary:
See FBPortForwarding/README.md for an explanation of what this is.
It's required for the upcoming support for physical iOS devices.
To simplify development of the JS app, We're going to bundle the pre-built PortForwardingMacApp
inside the repo, and inside the electron app (static/PortForwardingMacApp.app).
Adding this source so users can build it from source if they choose to.
Reviewed By: danielbuechele
Differential Revision: D13276022
fbshipit-source-id: 99b18e0412cf443bb4a67eb4846cc780e0014de1
Summary: Previously an empty string would crash the flipper client. Now that we handled that ok, we can reenable the descriptors.
Reviewed By: jknoxville
Differential Revision: D13257534
fbshipit-source-id: 09be4834d5a7023b2fa4e2bee7e57e412916120b
Summary:
Updates of the redux store caused rerendering of UI components, even without the acutal UI changing. This diff ensures the UI is only updated, when
The PluginContainer received all plugin states and selected the pluginState of the active plugin to pass it down to the plugin. However, this caused a rerender everytime a pluginState changed (even if the plugin was in the background).
This diff moves the selection of the active plugin to the `connect`-function and only passes the state of the active plugin into the container. This makes sure the plugin rerenders only if it's own state changes.
The main sidebar displays the number of notifications. Therefore, it was passed the array of notifications. However, this array is regenerated, everytime a new notification **might** be triggered.
Now, the number of notifications is calculated in the `connect`-method and only the number itself is passed into the component. This makes sure the sidebar is only rerendered, when the actual number of notifications changes.
Reviewed By: passy
Differential Revision: D13276096
fbshipit-source-id: bf1e6c4a186f7a1cf7f7427cd3523b5b71eb003a
Summary: When a plugin has no gatekeeper defined, an incorrect warning was logged, saying that if fails the gatekeeper "undeinfed"
Reviewed By: jknoxville
Differential Revision: D13275803
fbshipit-source-id: 9ae5ed55031cc6a636c7c5ffa23bdd059a8ed35f
Summary: Adds crash reporter plugin in wilde under a gatekeeper `flipper_crash_reporter_plugin`. By default all the employees will be part of this gatekeeper
Reviewed By: passy
Differential Revision: D13258265
fbshipit-source-id: 1baa2a342f492781d8fb3e86c2a30140537c23f1
Summary:
This does two things:
1. Change "Connect to desktop" to say which connection it's establishing instead, which makes it clearer what's actually happening. This step really does mean establishing a connection, because what happens during that connection is asynchronous after this step completes.
2. Call step->complete() after certificate exchange connection is established. This wasn't happening before, so you'd always get "[Failed] Connect to desktop" even after a successful cert exchange.
Reviewed By: priteshrnandgaonkar
Differential Revision: D13256783
fbshipit-source-id: 5e8e3a54f52d2e0adbde4c6d82d1acc840f1eb59
Summary:
During certificate exchange, the mobile device creates a public/private key pair, and then requests a certificate from flipper to match it's public key.
Flipper responds with the cert and it's written to the sonar dir along side the key pair files.
If certificate exchange happens again for any reason, the mobile device will regenerate the key pair and request a new cert. If for any reason that cert never arrives, then the device is in a state where it has the new key pair, but the old certificate that doesn't match its new credentials. This would never work, but it means you get a strange SSL error because you're using inconsistent files.
To improve error messaging, I'm making the client wipe all files before starting the certificate exchange step, so you should never get key/cert mismatches. Now the device can tell it doesn't have all the necessary files and won't even attempt to connect until it does.
Reviewed By: passy
Differential Revision: D13256369
fbshipit-source-id: 28f3cb5ba5938c17f01294683ba86c418f651376
Summary:
- New improved UI
- Instead of sending the callstack as a string from android, now sending it as an array
- Deeplink to Logs support just for android. In iOS crash is not automatically logged in Logs plugin, atleast thats what happens in sample app
Reviewed By: jknoxville
Differential Revision: D13216477
fbshipit-source-id: d8b77549c83572d0442e431ce88a8f01f42c9565
Summary:
Flipper uses SSL between device and computer. If, for example, the time on the mobile device is outdated. The server cert on desktop may appear to be from the future, leading to the connection being rejected.
Pull Request resolved: https://github.com/facebook/flipper/pull/336
Reviewed By: danielbuechele
Differential Revision: D13234612
Pulled By: jknoxville
fbshipit-source-id: 5eccc3abc763deb5bce3520d880a522a9a32ec86
Summary: The fb-stubs transform is getting applied when it shouldn't. Fix it by only applying it if src/fb exists.
Reviewed By: danielbuechele
Differential Revision: D13236217
fbshipit-source-id: 940def377839d16f34c49504948cb062916a3d6a
Summary: When nodes didn't have any metadata, the data was an empty string, which fails json parsing. This causes data be passed to the InspectorSidebarSection as ''. The weak map inside that component expects data to be an object, not a string, and crashes if it's actually a string. This will ensure that data is always an object.
Reviewed By: jknoxville
Differential Revision: D13109384
fbshipit-source-id: 469a1b5c1c00130ef37636bf7c6796b2463fb34b
Summary:
The CSR generation code is written in C-like code with no excpetions because so is openssl, with no RAII structures.
So we don't have fine-grained insight on what could go wrong, but at least if it fails altogether we should error.
Reviewed By: passy
Differential Revision: D13233725
fbshipit-source-id: 75cb3c21144b591947f686b5ad529a14a011baa8
Summary: Makes a crash reporter plugin as a device plugin
Reviewed By: passy
Differential Revision: D13203954
fbshipit-source-id: 02ef2aff05d5a240eaff588f9b515d3d610fc182
Summary:
Previously this was checking that a client can successfully connect.
But that's useless for a user if flipper doesn't also detect the device running the app, or nothing will be shown on screen.
This checks that the device is also known about.
I've removed the `done.fail()` because if this gets called, you lose any failed expect messages.
Reviewed By: passy
Differential Revision: D13194856
fbshipit-source-id: 5461dc1bedb2f9af80ad0dad6780fc25a428db17
Summary:
This diff adds few tests for flipper client on iOS side. This tests are similar to the ones which exists in xplat but this tests the iOS side of flipper client.
Following tests are added
- connect , disconnect block called on plugin
- background plugin activated before init method
- crash getting suppressed
Reviewed By: jknoxville
Differential Revision: D13167637
fbshipit-source-id: 6c21d5cf2f08e7e3c17ecacbf3badfbde80fb5d1