Commit Graph

311 Commits

Author SHA1 Message Date
Daniel Büchele
29f6e2ed4f hideHeader
Summary: The `hideHeader` didn't hide the header. Fixed it!

Reviewed By: priteshrnandgaonkar

Differential Revision: D13377067

fbshipit-source-id: 105541169d46b6db1a85e99c8d93ee52f904d261
2018-12-14 10:35:12 -08:00
Daniel Büchele
0143052f98 StackTrace
Summary: Adding a UI component for displaying StrackTraces

Reviewed By: priteshrnandgaonkar

Differential Revision: D13377068

fbshipit-source-id: 7119bad3d413ad7c5eafd09aa04e741a1b200b7b
2018-12-14 10:35:12 -08:00
Daniel Büchele
3b45976217 MarkerTimeline
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
2018-12-14 10:35:12 -08:00
Pascal Hartig
c9131963d5 Remove debug log
Summary: Leftover from logs refactoring I suppose. Missed it in review too. :D

Reviewed By: danielbuechele

Differential Revision: D13465385

fbshipit-source-id: 42508e8981f12ca43f4b56a6ecc2e53078f49c1a
2018-12-14 07:22:23 -08:00
Daniel Büchele
b0cacc1272 scrollToHighlightedRows
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
2018-12-11 07:57:59 -08:00
Daniel Büchele
fd1a00f05e linking to logs plugin
Summary: changing the payload to work with the updated logs plugin

Reviewed By: passy

Differential Revision: D13376392

fbshipit-source-id: ccfb1b1a7a2ec3e9d3899e70c9bdd199a489da88
2018-12-11 07:57:59 -08:00
Daniel Büchele
cbfbd0dd98 add test coverage for log processing
Summary: as per title

Reviewed By: passy

Differential Revision: D13376522

fbshipit-source-id: 4746d3234a13abdf81a23387e57d877714c94b44
2018-12-11 07:57:58 -08:00
Daniel Büchele
4546e64509 refactor logs processing
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
2018-12-11 07:57:58 -08:00
Daniel Büchele
a993b630c8 fixing calles to undefined
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
2018-12-10 08:32:58 -08:00
John Knox
140f846797 Track device register and unregister
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
2018-12-10 02:21:33 -08:00
John Knox
ee23119f24 Throw error if more than one device has same csr in container
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
2018-12-06 05:37:11 -08:00
John Knox
606d689cae Don't do iOS-specific setup when not supported
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
2018-12-04 07:10:51 -08:00
John Knox
3057c0a6e7 Show indicator when client setup fails (#339)
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
2018-12-04 07:10:51 -08:00
John Knox
20ed54566d Reject empty CSRs
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
2018-12-04 05:59:16 -08:00
Pritesh Nandgaonkar
e84e859fc1 Limit the size of the containers and make it scrollable
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
2018-12-04 05:51:59 -08:00
Daniel Büchele
5a9d92c786 upgrading react-dev-tools
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
2018-12-04 03:37:47 -08:00
John Knox
a656c31a70 Clean up connection test
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
2018-12-04 03:27:54 -08:00
John Knox
40f50d48e3 Add physical iOS support to internal build
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
2018-12-03 11:34:53 -08:00
Pritesh Nandgaonkar
06588b3d1f Adds crashreporter plugin to fb4a
Summary: Adds crashreporter plugin to fb4a

Reviewed By: jknoxville

Differential Revision: D13278471

fbshipit-source-id: 1baa7520b2806bebdc960077bfda0699b290109b
2018-12-03 05:27:28 -08:00
Daniel Büchele
133788380e prevent unnecessary rerenders
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
2018-11-30 09:39:28 -08:00
Daniel Büchele
34e75c3c5f GK failing log message
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
2018-11-30 09:39:28 -08:00
Pritesh Nandgaonkar
3183e56560 Add crash reporter plugin to wilde with a gatekeeper
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
2018-11-30 07:19:46 -08:00
Pritesh Nandgaonkar
fd022e3c73 Improvise UI of crash reporter plugin
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
2018-11-30 05:28:46 -08:00
Daniel Abramowitz
ec1e977084 Fix "invalid weak map key" error when nodes in the layout inspector are empty strings
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
2018-11-29 08:19:36 -08:00
Pritesh Nandgaonkar
14431e6b76 Make crash reporter plugin device only
Summary: Makes a crash reporter plugin as a device plugin

Reviewed By: passy

Differential Revision: D13203954

fbshipit-source-id: 02ef2aff05d5a240eaff588f9b515d3d610fc182
2018-11-29 06:59:16 -08:00
John Knox
553322e61f Check devices in connection test
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
2018-11-27 07:50:13 -08:00
Pritesh Nandgaonkar
543bc6c4fb Crashreporter Plugin
Summary: Desktop side of Crash reporter plugin

Reviewed By: jknoxville

Differential Revision: D13176724

fbshipit-source-id: d77b86b2bd9c78c0626f2e3b8c0057227d75e2b2
2018-11-26 03:43:26 -08:00
John Knox
d8d40ae49b Log when client connects for an unknown device
Summary:
We've seen this happen sometimes, e.g. when adb fails and we aren't showing any android devices, but the sdk still manages to connect.

When we detect this, log an error so we can track how often it occurs.

Reviewed By: passy

Differential Revision: D13175639

fbshipit-source-id: b0f79b77ac04ad804e56448b3696a3ffeb30631e
2018-11-23 06:32:45 -08:00
John Knox
1c1905b5a8 Log client setup errors
Summary: Get client setup failure metrics

Reviewed By: passy

Differential Revision: D13175638

fbshipit-source-id: 97f6fddab850654dbe52c1da09ba8d1ca4873d49
2018-11-23 06:32:45 -08:00
Pritesh Nandgaonkar
08cdb5e2e8 Fix improper plugin id assignment
Summary: This diff fixes the improper plugin id getting assigned to the variable which lead to notifications not getting shown. The client id has `#` so pluginId is no longer the second argument when one splits the string by `#`. This diff fixes this problem.

Reviewed By: passy

Differential Revision: D13176776

fbshipit-source-id: cd5bdc33c61485e3cdc2f2dbcc615980c39c8b8c
2018-11-23 05:48:11 -08:00
John Knox
ca1f0202d7 Add retries around android device watching
Summary: Retry up to 5 times with exponential backoff.

Reviewed By: passy

Differential Revision: D13138244

fbshipit-source-id: 94c68b87aa281cfc3239b0bb8bdd75a2e0d7edc7
2018-11-22 06:39:58 -08:00
Pascal Hartig
9e6a86923a Fix yarn lint (#332)
Summary:
Eslint / prettier are unhappy with the formatting of the FlowFixMe
comment, but the suggested solution is really ugly. Let's disable
the lint for now and remove this once it's addressed.
Pull Request resolved: https://github.com/facebook/flipper/pull/332

Reviewed By: jknoxville

Differential Revision: D13156552

Pulled By: passy

fbshipit-source-id: 680d151ea1022912e0e4a83fa42dc51005631c30
2018-11-22 06:34:09 -08:00
John Knox
bbdbb94415 Fix network plugin bug
Summary:
Some network requests are yielding error: e.getMessage() is not a function.
It shouldn't be .getMessage(), it should be .message

Reviewed By: priteshrnandgaonkar

Differential Revision: D13137334

fbshipit-source-id: 72c782376c8e62a05c5e9ce1b956566ce1fc5bf0
2018-11-20 06:43:58 -08:00
Panagiotis Vekris
e380fa7a08 Flow v0.86.0 in xplat/sonar
Summary: allow-large-files

Reviewed By: gabelevi, dsainati1

Differential Revision: D13105210

fbshipit-source-id: 462af926206a10618a725531f2e62da9f3291fc0
2018-11-19 12:14:51 -08:00
John Knox
018718244a Fix adb client use of promise.resolve
Summary: This was misusing promise.resolve by calling it before the result is produced, meaning there was a race condition. It would also resolve as success even if listDevices failed.

Reviewed By: passy

Differential Revision: D13121173

fbshipit-source-id: f120a1b199d1e3168059c537461f65a8dc125a94
2018-11-19 09:47:04 -08:00
John Knox
a6765deec6 Fix missing android devices bug
Summary:
Finally tracked down this bug that's been annoying me.

If you start flipper while the adb daemon is not running, then flipper will start the daemon, but it won't wait for it to have finished starting before telling the client to watch for devices. This is a race condition, and in practice never seems to work.

To avoid this, I'm calling `adb devices` on the client and waiting for it to complete before doing anything else. This forces it to wait for the daemon to start up if it hasn't already, and if it has then it instantly returns.

Reviewed By: passy

Differential Revision: D13101963

fbshipit-source-id: b85bed24751ce5c8efdfc6e841400e4db2580ab0
2018-11-19 04:48:00 -08:00
John Knox
7821b6b5a9 Sort uninitialized devices in redux state
Summary: Stops them from jumping around if they try to connect more than once.

Reviewed By: passy

Differential Revision: D13084056

fbshipit-source-id: 803538298c45b9c28e5116f072518e8632b0f1cf
2018-11-16 03:40:48 -08:00
Panagiotis Vekris
b2b27b774e Back out "Flow v0.86.0 in xplat/sonar"
Summary: Original commit changeset: f0122c8c6d60

Reviewed By: avielg

Differential Revision: D13083312

fbshipit-source-id: 4b77fda5221feff5c721bb8a509b1350d60046d5
2018-11-15 08:24:00 -08:00
Daniel Büchele
0b43d219c3 Adding test converage for plugin loading
Summary: Adds test for the plugin reducer and dispatcher

Reviewed By: jknoxville, passy

Differential Revision: D13082652

fbshipit-source-id: 4af2c7721c4d88abbd332d610ff71d5db78e721c
2018-11-15 07:30:05 -08:00
Daniel Büchele
1edc91512d add testing GKs
Summary: Adding two GKs (one failing, one passing) to allow the testing of gatekeeper functionality. This is used in the next diff.

Reviewed By: jknoxville

Differential Revision: D13082651

fbshipit-source-id: c6d8ef484564c8ae8b4c107de5643c700f696ad5
2018-11-15 07:30:05 -08:00
Daniel Büchele
7747a0714d plugin redux
Summary:
Plugins were loaded in `/plugins/index.js` which was loaded once at launch of the app. This moves the list of available plugins to redux. This way, plugins can be dynamically added. The redux store keeps to Maps of plugins (devicePlugins and clientPlugins) with their ID as key:

```
  devicePlugins: Map<string, Class<FlipperDevicePlugin<>>>,
  clientPlugins: Map<string, Class<FlipperPlugin<>>>,
```

On launch of the app, all plugins bundled with the app and the one found in `pluginsPath` are dynamically added.

This changes now allows to add new plugins at any time. All components that need to know which plugins are available (e.g. the sidebar) are connected to the redux store. This way, they will automatically update, whenever a new plugin is added.

- add `plugins` to the redux store to keep the list of available plugins
- add a plugins dispatcher, responsible for loading the plugins on launch
- connecting all React components that imported `plugins/index.js` before to the redux store to get the plugins from there.
- moved the updating of the MenuBar to the plugins dispatcher as it needs to update whenever a new plugin is added.

Reviewed By: jknoxville, passy

Differential Revision: D12449236

fbshipit-source-id: 6ef3e243e2c80443614b901ccbfde485fcb4301c
2018-11-15 07:30:05 -08:00
John Knox
ff3977da77 Show connecting spinner
Summary:
First step in visualising the connection setup process.
Just a spinner while cert exchange is happening, so it doesn't look like nothing is happening.

Reviewed By: passy

Differential Revision: D13062514

fbshipit-source-id: a0692821025f42f4fe4af86faf059d4719008f25
2018-11-15 04:36:40 -08:00
John Knox
866cb72124 Put connection setup state in redux
Summary: Puts the connection state into redux so we have more visibility on what's happening in bug reports and in general allowing us to display it on screen.

Reviewed By: passy

Differential Revision: D13060455

fbshipit-source-id: c79b4b7d6a1155d86128a5d8d1174ead9e4514ae
2018-11-15 04:36:40 -08:00
Panagiotis Vekris
6362188563 Flow v0.86.0 in xplat/sonar
Summary: allow-large-files

Reviewed By: zertosh

Differential Revision: D13067587

fbshipit-source-id: f0122c8c6d602750289121d2ab2fdb09cbb033bc
2018-11-14 15:39:25 -08:00
John Knox
a48c680a40 Modify client id string and device serialisation
Summary:
This improves bug reports.
Adding serial into device.toJson() means you can now easily see which clients (apps) are from which device because they both contain the serial.
Changing client id to use # instead of - because the subcomponents of it already use -.

Reviewed By: passy

Differential Revision: D13058430

fbshipit-source-id: 02697ec623829423e667fd2acbd1abc369a6919b
2018-11-14 08:26:32 -08:00
John Knox
9f13e1422b Add 'Redux State' to bug reports
Summary:
Now the BugReporter has access to the logs and the redux store, to submit more useful bug reports.
This isn't currently used in open source, unless you override / replace this file.

Reviewed By: danielbuechele

Differential Revision: D13058210

fbshipit-source-id: e52a3cb528693ab171843080685e5342e0b6a393
2018-11-14 05:49:00 -08:00
John Knox
d9a9439dfa Fix emulator launching bug
Summary:
I was getting the following error when trying to launch an emulator:
`PANIC: Missing emulator engine program for 'x86' CPU.`

It seems like emulator/emulator is more reliable than tools/emulator: https://stackoverflow.com/questions/26483370/android-emulator-error-message-panic-missing-emulator-engine-program-for-x86

So put them both on the path in that order.

Reviewed By: passy

Differential Revision: D13040325

fbshipit-source-id: 11e8b24b2a99e02955128d5fb7c17764b98388fa
2018-11-13 11:18:34 -08:00
Daniel Büchele
274d71cb2f update default filters
Summary: Searchbar didn't update the filters when new default filters were added. This adds the new filters when they are added to the searchbar. Existing filters are not touched.

Reviewed By: passy

Differential Revision: D12999885

fbshipit-source-id: 51d9a1579724be2098b54161b39a0769180fb343
2018-11-12 02:27:00 -08:00
Daniel Büchele
bf7c35387c Report notifications not useful
Summary:
* adds a button to hide notifications by category
* adds a quick action to report notifications as not helpful
* fixes type of network plugin's notifications to be string instead of number

Reviewed By: jknoxville

Differential Revision: D12999883

fbshipit-source-id: 32be5bde5931cca4a27ab1ad34418300196452cc
2018-11-12 01:49:48 -08:00
Daniel Büchele
bd03f891d0 notification category filters
Summary:
Allows filtering notification by category. Category filters are also persisted in redux.

Adds a test suite for notification reducer

Reviewed By: passy

Differential Revision: D12999884

fbshipit-source-id: 5f8d2357e52f091c17b726e1f89ed68f3b7294fb
2018-11-12 01:49:48 -08:00