Commit Graph

1038 Commits

Author SHA1 Message Date
Pritesh Nandgaonkar
ade6eabdb0 Fix the regressed deeplink support for crash reporter plugin
Summary: The deeplink from crash notification to crash reporter plugin was broken. It always showed the latest crash.With this diff the crashreporter plugin shows the correct crash information.

Reviewed By: danielbuechele

Differential Revision: D13487792

fbshipit-source-id: eee6826bb0a84d0aab9b432a1c9a04aa7d528402
2018-12-19 07:01:09 -08:00
Pritesh Nandgaonkar
3135c99cc5 Fix crash reporter plugin test
Summary: The test were broken, as the `CrashReporterPlugin.id` was empty. This value is populated when plugin is loaded, thus added a helper function for that. Also removed a duplicate test.

Reviewed By: danielbuechele

Differential Revision: D13517063

fbshipit-source-id: ffb99316933cd27068c6bce67cfa6e95633b6246
2018-12-19 06:33:29 -08:00
Daniel Büchele
ea54b6d4ca adding docs for new package.json fields
Summary: as per title

Reviewed By: priteshrnandgaonkar

Differential Revision: D13432418

fbshipit-source-id: fd96d7ea54127d1256f3c0b147e19338be8e7b72
2018-12-18 16:28:08 -08:00
Pritesh Nandgaonkar
2c9feb40e9 Remove crashreporter plugin iOS implementation
Summary: Removes the iOS implementation of crash reporter plugin as its implemented as desktop plugin

Reviewed By: adamjernst

Differential Revision: D13451980

fbshipit-source-id: 19cca52a00bb4a6d350eff91ac405f6dd3b07818
2018-12-18 13:42:40 -08:00
Pritesh Nandgaonkar
a12768539e Crashreporter plugin by adding a watchman for crash log
Summary:
This diff adds a watcher on `~/Library/Logs/Diagnostics/` library and fires a notification whenever a crash log is added there. This will only work for iOS crashes. With this change, for iOS we should be able to see all kind of crash notification be it due to uncaught exception or a native crash or signal errors.

For android, it will still show notifications due to uncaught exceptions. In upcoming diffs, I will change the logic for android too by parsing Logcat logs.

This diff doesn't support physical device crash reporting. The crashes for physical devices are synced to other folder and that too they are symbolicated.

Reviewed By: danielbuechele

Differential Revision: D13404648

fbshipit-source-id: 7219855ebc73451af87f77f90cc3ed0f2ab5287c
2018-12-18 13:42:40 -08:00
Pritesh Nandgaonkar
e3fb1e1d84 Disable crash reporter plugin for iOS and update callstack from array to string
Summary:
This diff does the following

- Comments out the code in iOS which sends the message to the desktop side
- Also comments out the part where signal handler is initialised, as we no longer need it. I will remove the iOS implementation completely in next few diffs
- Updated the JS side to expect call stack as a string instead of an array
- Updated the android side to send callstack as a string

I have commented out the code for crash reporter plugin of iOS as for iOS I will be adding a watchman  to a directory where crash logs are dumped. The diff related to this is in the stack

Reviewed By: passy

Differential Revision: D13424824

fbshipit-source-id: b1105da912292bf73cff948206c031de9b059abd
2018-12-18 13:42:40 -08:00
John Knox
73e921bafc Disable iOS portforwarder
Summary:
Disabling the port fordwarder.
On physical devices, when flipper isn't running and they don't have any certificates, they attempt to connect to the desktop.
They always connect to the portforwarder, even though it doesn't connect to flipper desktop.
After connecting to the portforwarder, they then try to generate the SSL certs. This is a CPU intensive operation and happens repeatedly in this condition when it really shouldn't be, causing high cpu usage.

Disabling for now. The fix will be to make sure that they only do that generation when they are fully connected.

Reviewed By: priteshrnandgaonkar

Differential Revision: D13507353

fbshipit-source-id: a858a5da7352228b063150334ea443130763d888
2018-12-18 13:42:40 -08:00
Daniel Büchele
1fc73ad2fb update plugin's package.json
Summary:
For all plugins:
- move static fields `title`, `id` and `icon` to `package.json`
- adds "bugs" field for all plugins containing links to support groups/oncalls.

Reviewed By: priteshrnandgaonkar

Differential Revision: D13417286

fbshipit-source-id: 7b341176915f3ed7b473b95c1d879f21d7d634ef
2018-12-18 10:36:35 -08:00
Daniel Büchele
c9b982b182 revamp UI + show oncall/group
Summary:
Redesigns the bug reporting dialog:
- show information from `package.json`'s `bugs` field, where we can link to support groups or name oncalls.
- adds show/hide animation
- uses new button style

Reviewed By: jknoxville

Differential Revision: D13417287

fbshipit-source-id: 2948794e9b1f42bbd895981d5e4b0578a9b8ee2e
2018-12-18 09:34:52 -08:00
Daniel Büchele
c540fe5529 adding primary and compact buttons
Summary: Adding a style for `primary` buttons

Reviewed By: priteshrnandgaonkar

Differential Revision: D13417284

fbshipit-source-id: 8ef46092d79ee0f9d39167aa2662a84caca9aa11
2018-12-18 08:37:28 -08:00
Daniel Büchele
6ffc027051 read infos from package.json
Summary:
Adding the properties from a plugin's `package.json` as static properties to the class.
The name from `package.json` is used as it's `id`.

This allows us in the future to add meta information about a plugin to it's package.json and still use the data inside the app.

Reviewed By: priteshrnandgaonkar

Differential Revision: D13417288

fbshipit-source-id: 3d0a62d4cb0115153cce1aaee677b9680fefebf4
2018-12-18 08:37:28 -08:00
John Knox
e23da69db9 Use localhost instead of hardcoded IP address
Summary:
We can only do this when adb reverse is available, i.e. on Android 5+.
This also relies on a recent change to flipper desktop, to always run adb reverse on emulators.

Reviewed By: danielbuechele

Differential Revision: D10302579

fbshipit-source-id: cff07f0311d413fdd49424a42c641dfb3d225f7c
2018-12-18 07:31:43 -08:00
Pascal Hartig
ee0b640c30 Fire-and-forget for openFile
Summary:
`xdg-open` is blocking on Linux. That means we won't do our cleanup steps
(or reset the button for that matter) until the user closes their viewer app.

This changes the call to be a `spawn`, so we can continue the chain. As no
one had actually used the value captured in the promise, this shouldn't
make a difference API-wise.

Reviewed By: danielbuechele

Differential Revision: D13465571

fbshipit-source-id: 5f698916157906d76ab983109deb9abe142baa9e
2018-12-18 03:18:21 -08:00
Pascal Hartig
4cb82c1f1d Avoid media indexing on Android
Summary:
Record Android screen captures into a separate directory with a `.nomedia`
file to avoid it from getting indexed before it gets removed after being
pulled.

Reviewed By: danielbuechele

Differential Revision: D13465448

fbshipit-source-id: 4449ff3a927cc8621b015b018d2b743cedc4ce8c
2018-12-18 03:18:21 -08:00
Qichuan
d7ecd3af5a Fixe the iOS UserDefaultsPlugin (#340)
Summary:
The `getAllSharedPreferences` API is not implemented in the iOS UserDefaultsPlugin and thus the data is not shown in the `Shared Preference Viewer`.

This PR implements the missing API and present the Standard UserDefaults data from the target application.
Pull Request resolved: https://github.com/facebook/flipper/pull/340

Reviewed By: danielbuechele

Differential Revision: D13464765

Pulled By: priteshrnandgaonkar

fbshipit-source-id: 8c6cf4e9f7094fcf75c71cce43cb6c34f9f957e7
2018-12-17 11:08:29 -08:00
John Knox
cc5fba6975 Explicitly start adb server
Summary: We were relying on adbkit to do this, implicitly by calling listDevices(). However, this doesn't appear to be reliable, with retries, it usually succeeds, but sometimes still doesn't. I'm aiming to avoid all this entirely by just starting it directly using adb itself, which I expect to be much more reliable.

Reviewed By: danielbuechele

Differential Revision: D13487864

fbshipit-source-id: b1eae542aaa6ecb2b74b575a3582934093ccd588
2018-12-17 11:08:29 -08:00
Mike Kelley
a1541b1c81 Revert D13434177: [Docs] Updated the website docs with the information of crash reporter plugin
Differential Revision:
D13434177

Original commit changeset: bb8b14e989c9

fbshipit-source-id: 36e501b0ca7031956b57c93429084a7bc673ef77
2018-12-17 11:08:29 -08:00
Pritesh Nandgaonkar
1bc566f813 Updated the website docs with the information of crash reporter plugin
Summary: Added the documentation of crash reporter plugin. Also removed the stale comment

Reviewed By: passy

Differential Revision: D13434177

fbshipit-source-id: bb8b14e989c91b35cd268daea12ac7fe590c5d5b
2018-12-17 11:08:28 -08:00
Daniel Büchele
88820d4865 add D3 fork
Summary:
`react-d3-tree` is using version `3.5.17` of `d3`. However, this version of D3.js makes some assumptions about the context, which are not compatible with the way metro is bundling our plugins.

In this version of D3, they reference the `window` by using `this`. However, in metro a top level `this` is `undefined`. This causes the library to break. New versions of D3 have removed referencing the `window` using `this`. Updating `react-d3-tree` to a more recent version of D3 is not easy, because there are many breaking changes in D3 (the current version of D3 is 5.x).

This is why we decided to fix the callsites in `d3@3.5.17`. As these thinks are fixed in `d3@4.x` as well, it doesn't make sense to bring these changes upstream. For this reason, we are committing the fixed version of D3 and use yarn resolutions to resolve D3 with the version including our fixes.

These things were patched in `d3.js`:

- adding `/* eslint-disable */`
- replacing `this.document` with `window.document`
- replacing `this.navigator` with `window.navigator`
- replacing `this.requestAnimationFrame` with `window.requestAnimationFrame`

Reviewed By: priteshrnandgaonkar

Differential Revision: D13377064

fbshipit-source-id: 492eaad4f283fb6901cab089f6092b0bf62d5499
2018-12-14 10:35:12 -08:00
Daniel Büchele
c92efdf945 add JS plugin
Summary:
Adding the JS part for the ComponentTree plugin.
Native parts are added in D13377058.

Reviewed By: priteshrnandgaonkar

Differential Revision: D13377066

fbshipit-source-id: dab8f2abdde604c3f78cfd80e17b433ef5e33505
2018-12-14 10:35:12 -08:00
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
Pascal Hartig
7e847a62f5 Add bintray verification script
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
2018-12-13 05:33:37 -08:00
Pascal Hartig
f5e5c33c68 Flipper Release: v0.13.0
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
2018-12-12 07:28:56 -08:00
George Zahariev
c6e0517640 Enable Flow Strict Local for 13 files in xplat/sonar
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
2018-12-11 13:49:14 -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
64b5e66168 upgrade react-window@1.3.1
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
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
Daniel Büchele
f7ddf3b496 Add empty .watchmanconfig
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
2018-12-07 08:06:07 -08:00
Pritesh Nandgaonkar
940ab5843f Add crash reporter plugin in swift sample app
Summary: Adds crash reporter plugin to swift sample app

Reviewed By: jknoxville

Differential Revision: D13359298

fbshipit-source-id: 2025725a7405d79407fbc15448d4f222f33c00fc
2018-12-07 07:37:55 -08:00
Pritesh Nandgaonkar
5894ad3834 Catch signal errors
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
2018-12-07 07:37:55 -08:00
Pascal Hartig
7eb1546f25 Move version specifier
Summary: Android Studio keeps loudly complaining about this.

Reviewed By: priteshrnandgaonkar

Differential Revision: D13376394

fbshipit-source-id: 6163977bb013dff214aa684662e4879a19a7a786
2018-12-07 06:50:47 -08:00
John Knox
dc313a460c Don't invalidate connection files on Network Errors
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
2018-12-06 06:53:22 -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
Pascal Hartig
3b18303560 Revert D13302768: [flipper] Upgrade to cmake 3.10.2
Differential Revision:
D13302768

Original commit changeset: c38601659bde

fbshipit-source-id: d624e51a489cd2d85288f85e13e09638e2ebb4be
2018-12-06 04:45:54 -08:00
Pascal Hartig
03b5306459 Upgrade to cmake 3.10.2
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
2018-12-05 15:47:22 -08:00
Pascal Hartig
dfd2e279bc Update getPlugin docs
Summary: Per title.

Reviewed By: jknoxville

Differential Revision: D13304655

fbshipit-source-id: 8f9e78dbee043e749b1fdd2d4a540eeece66734b
2018-12-05 08:03:41 -08:00
Pascal Hartig
214f112c14 Add getPluginByClass interface
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
2018-12-05 08:03:41 -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
Pritesh Nandgaonkar
9cfa1b3074 Send notifications on litho's error boundary
Summary: Sends notifications to crash reportr plugin whenever the error boundary happens

Reviewed By: danielbuechele

Differential Revision: D13307473

fbshipit-source-id: dc0c6d2ebac32881fdb1aa5f63def824a115cf9e
2018-12-04 05:51:59 -08:00
Daniel Büchele
d331ec2f10 adding Android ReactPlugin
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
2018-12-04 03:37:47 -08:00