Commit Graph

412 Commits

Author SHA1 Message Date
Pascal Hartig
a26cc6db9b Initial setup for CircleCI (#257)
Summary:
This is so much faster! This should allow us to more easily publish snapshots.
Pull Request resolved: https://github.com/facebook/flipper/pull/257

Reviewed By: danielbuechele

Differential Revision: D9630067

Pulled By: passy

fbshipit-source-id: 64c633933a971cc15371d2ee90c184e13b98e06a
2018-09-03 07:43:52 -07:00
Daniel Büchele
afdc846a8b log listener
Summary:
The logs plugin opened a new log connection every time it was activated and never closed the connection.

This is now changed. Once a device is connected, a log connection is opened. The logs plugin subscribes and unsubscribes to this connection. This allows the logs plugin it even access the logs from when it was not activated and ensures to only open on connection to read the logs. Logs are persisted when switching away from the plugin.

Also removes the spinner from the logs plugin, as it loads much faster now.

Reviewed By: jknoxville

Differential Revision: D9613054

fbshipit-source-id: e37ea56c563450e7fc4e3c85a015292be1f2dbfc
2018-08-31 10:13:06 -07:00
Daniel Büchele
a30e0b53e9 faster iOS device connection
Summary:
First connection attempt to iOS device was only made after 3000ms. This caused all iOS devices only show up after this delay.
Now, the devices are queried immediately.

Reviewed By: passy

Differential Revision: D9613057

fbshipit-source-id: a14e3f02576ec5e159f4002bf68efe53236dcc50
2018-08-31 10:13:06 -07:00
Daniel Büchele
ace800ad55 fix log counter
Summary: Log counter had a bug that only allowed the number to go up to 2. To increment the number of the last row is read and increased. However, this failed and always fall back to 1.

Reviewed By: passy

Differential Revision: D9613056

fbshipit-source-id: dc73990eb26c7a6ecbc70b0fe50687607b8bf0ad
2018-08-31 10:13:06 -07:00
Daniel Büchele
64ff6eb9cf iOS logs
Summary:
- Cleans up iOS log listener code
- Retries to create a connection to the log stream if it failed
- logs errors with the log parser

Reviewed By: jknoxville

Differential Revision: D9613055

fbshipit-source-id: 33a24e474be62fc2a906f022a68547594f2e66c1
2018-08-31 10:13:05 -07:00
John Knox
0f08b04571 Filter displayed plugins by selected device
Summary: Now that android devices know their own serial, we can filter plugins by the selected device.

Reviewed By: passy

Differential Revision: D9481461

fbshipit-source-id: 4a53eea1e61caa09c3d63ca0076fbc1b6dceb99f
2018-08-31 08:12:57 -07:00
John Knox
edff177c3f Give serial to the device during cert exchange so it can provide it whenever it connects
Summary:
Android devices don't always know their own serial.
But we do a certificate exchange using adb from the desktop, so we can provide it in the response.

After this the client will provide it every time it connects, so we can do things like filter plugins by device id.

For apps that have already done cert exchange, they'll continue to use 'unknown' as their id until they do it again with an up to date version of sonar.
We can think about forcefully stopping that, but I haven't done it.

Reviewed By: danielbuechele

Differential Revision: D9481460

fbshipit-source-id: f8932699711ebbec4260fabe32f87e6cdff920f2
2018-08-31 08:12:56 -07:00
Pascal Hartig
94e22508ae Limit Travis run
Summary:
Right now, Travis is failing consistently because the Android build
time exceeds its limits - that's separate from the new publish step.

Let's limit what we do in the build step.

Reviewed By: jknoxville

Differential Revision: D9613247

fbshipit-source-id: f703237788f3a35d3f15fc8b9b45d6ebbb24c750
2018-08-31 07:57:13 -07:00
Pascal Hartig
de58ddcabb Revert D9602056: [flipper] Limit output in Travis
Differential Revision:
D9602056

Original commit changeset: 0b725f169a40

fbshipit-source-id: 5b5febed414744178764a6e9d1347d84ff39d8f6
2018-08-31 03:27:52 -07:00
Daniel Büchele
d14def44f1 fix table arrow navigation
Summary: Check for `highlightableRows` was wrong.

Reviewed By: passy

Differential Revision: D9602101

fbshipit-source-id: dbab5efb0c2d71c1a2a018bf035f39d2539f5595
2018-08-31 03:12:22 -07:00
Pascal Hartig
3b456fad3e Limit output in Travis
Summary: Logs often get cut off because there's too much noise.

Reviewed By: danielbuechele

Differential Revision: D9602056

fbshipit-source-id: 0b725f169a40c153835f63342e38f5d15556ac98
2018-08-31 02:43:54 -07:00
Pascal Hartig
5a970fde0d Encrypt secrets with openssl-1.0.1f
Summary:
Not encrypted with any OpenSSL version or LibreSSL, but with OpenSSL version one dot oh dot one eff.
Backwards-compatibility is hard.

Reviewed By: danielbuechele

Differential Revision: D9578686

fbshipit-source-id: 21c70b071d74cd37e6eb489cfff731efa314bbe6
2018-08-30 15:13:24 -07:00
Daniel Büchele
73e5824e35 ManagedTable debouncing
Summary:
Removes the fix introduced in D9570518 and upgrading to `react-window@1.1.2` which fixes the problem in the library.

Also finetuning debounce times.

Reviewed By: passy

Differential Revision: D9582591

fbshipit-source-id: 92b008d29f96ce0f11f5cfb5d9e92175ae536ee2
2018-08-30 11:30:36 -07:00
Daniel Büchele
63c8bd4368 fix for missing rows in ManagedTable
Summary:
When starting with an empty table and adding rows, the scrollOffset of the table might end up with a negative value, which causes rows not to be rendered.

See https://github.com/bvaughn/react-window/issues/49 for more details.

This only calls `scrollToItem` when the table is actually scrollable to prevent a negative scrollOffset.

Reviewed By: passy

Differential Revision: D9570518

fbshipit-source-id: 5b08990a353a6d41d0f1bc5c1481d5a5e471bd94
2018-08-30 08:13:07 -07:00
Pascal Hartig
456e026257 Encrypt Travis secrets with LibreSSL
Summary:
Looks like Travis is running on an ancient version of OpenSSL which is incompatible with OpenSSL 1.1, which I used to encrypt the secrets.

See output here: https://travis-ci.org/facebook/flipper/jobs/422172610

Reviewed By: jknoxville, danielbuechele

Differential Revision: D9570729

fbshipit-source-id: 01ad282bbb614bb5d51e09f1b2e4f8d5eeabe2a9
2018-08-30 05:42:29 -07:00
John Knox
e51342c778 Fix Nan / Inf serialization issue
Summary:
Sonar was trying to convert folly dynamics containing NaN and Inf to json.
Folly doesn't allow this so we have to get rid of them before converting.

See https://fb.facebook.com/groups/230455004101832/permalink/483173632163300/ for more context.

`grep -r convertFollyDynamicToId fbsource/xplat/sonar` now returns results which all have `true` in the second parameter slot.

Reviewed By: danielbuechele

Differential Revision: D9570364

fbshipit-source-id: bf28b03e54b4987399e028a491d82451a8267d97
2018-08-30 04:27:49 -07:00
Pascal Hartig
db8fa7902c Fix publish-android-snapshot issues
Summary:
As expected, this didn't work on the first try. Issues I've fixed:

- Actually switch back to snapshots.
- Use more widely compatible bash location.
- Don't exit (because of `set -e`) if `grep` returns with status 1.

Reviewed By: jknoxville

Differential Revision: D9556770

fbshipit-source-id: 0900e6498e7fc8e16c941e77927005573ca310d5
2018-08-29 10:13:03 -07:00
Pascal Hartig
91b6cf1c6a Set up automatic android snapshot publishing
Summary:
Set up automatic publishing to Maven Snapshots if the current
VERSION_NAME ends in `-SNAPSHOT`.

Reviewed By: danielbuechele

Differential Revision: D9539838

fbshipit-source-id: 6e413fa3b02966946bb867eebe7ba8b863f291b9
2018-08-29 07:12:47 -07:00
Pritesh Nandgaonkar
52fe553e21 Change iOS version update script
Summary: This diff updates the iOS version update script to incorporate the change in folder from fbobjc to xplat.

Reviewed By: danielbuechele

Differential Revision: D9542137

fbshipit-source-id: 4cb48d1b14d3c94d000490c7a21260766d493fc7
2018-08-29 06:13:13 -07:00
Daniel Büchele
2c905646ec fixing table default props
Summary:
Table was missing support for some properties, that were supported previously, which caused some regressions. Support for the following properties was added:
- `multiHighlight: boolean = false`
- `autoHeight: boolean = false`
- `highlightableRows: boolean = true`
- `onRowHighlighted: Function`

Reviewed By: jknoxville

Differential Revision: D9549384

fbshipit-source-id: 1db2e7e8c6ad483d3d9d3a5814c76c564e9ba7f4
2018-08-29 04:27:25 -07:00
Hilal Alsibai
5285d50abf Add syntax highlighting
Summary: Pretty colors

Reviewed By: danielbuechele

Differential Revision: D9504416

fbshipit-source-id: 7eb467ff43bed5566f3bd9ce72dc74064fb4718c
2018-08-29 03:27:07 -07:00
Daniel Büchele
f7606c8d59 rename ~/.sonar to ~/.flipper
Summary: renames config folder from sonar to flipper

Reviewed By: jknoxville

Differential Revision: D9541803

fbshipit-source-id: ef378c46fcbb14e76e99fb0743a99f24c536a434
2018-08-29 02:43:00 -07:00
Daniel Büchele
2596e7d42a recalculate row heights on change
Summary: When table rows are chaning, we need to recaluculate all row heights. This was already done when filtering/searching, but there are other occurrences where we need to recalculate the heights (like clearing the table).

Reviewed By: passy

Differential Revision: D9540881

fbshipit-source-id: ef6e94c0330294d8196f946799a436aa5e9ce5c5
2018-08-28 10:29:26 -07:00
Sara Valderrama
7bd264bd10 Remove accessibility panel from Layout Inspector in non-accessibility mode
Summary: Removes the Accessibility panel from the layout inspector since all of these properties are shown (and logged) in the Accessibility Inspector along with other properties that may be useful. This will make it easier to track accessibility use and also will help more people discover the accessibility feature when they need it.

Reviewed By: blavalla

Differential Revision: D9523532

fbshipit-source-id: f6d3a745980ec631ec8bf2e59017382f4c2edd5a
2018-08-28 09:58:16 -07:00
Pascal Hartig
a75b3f22ea Android v0.6.18
Summary: New Android release to include Litho descriptors.

Reviewed By: priteshrnandgaonkar

Differential Revision: D9528706

fbshipit-source-id: 993ebc8377c1c50015553bd3459e13d4298100ec
2018-08-28 06:57:58 -07:00
John Knox
db1b175d44 Use library to create temporary files
Summary: Makes the code a bit cleaner and maintainable.

Reviewed By: passy

Differential Revision: D9496316

fbshipit-source-id: a59a41b12a57bb2eedc25b154c6f9b0cdc77dd8a
2018-08-28 04:26:54 -07:00
John Knox
f99ef6996e Summarise state in iOS diagnostics
Summary:
V1 ios diagnostics complete.

This change adds a new section to the ios diagnostics screen that shows the current state of each step required to get sonar working.
The logs (transitions between states) are displayed below it.

SonarClient.mm is technically involved in the UI, by converting enums to emojis, I don't like this
but didn't get obj-C working with C enums so have left it like this for now.

Reviewed By: priteshrnandgaonkar

Differential Revision: D9378212

fbshipit-source-id: 091ce00e898a8038c680555123640b90d753fc09
2018-08-28 04:14:01 -07:00
Sara Valderrama
364883f661 Live update sidebar with click and focus accessibility events
Summary: Lets AX inspector live update the sidebar when a view is clicked (state may change) or accessibility focus changes (previously only updated the sidebar live if it became the focused element).

Differential Revision: D9489376

fbshipit-source-id: 8959f722370ce1d3a622b24c7b049b03f0d662e6
2018-08-24 09:42:02 -07:00
Daniel Büchele
61258d4b64 log correct version
Summary:
Instead of reading version number for logging from `package.json` it is now fetched via electron. We usually don't update our version number in package.json and therefore all logs showed the same version number. the version number from `app.getVersion()` is set during the build process and reflects the actual version number that is used.
Removes unused `<Version />` component.

Reviewed By: jknoxville

Differential Revision: D9495745

fbshipit-source-id: 6999ea23a1e4f90d6591b3695e01a803a5f3ff85
2018-08-24 03:57:16 -07:00
Daniel Büchele
2c071e226f fixing warnings related to emotion
Summary: Fixes some warnings that were caused by the switch to react-emotion.

Reviewed By: jknoxville

Differential Revision: D9483185

fbshipit-source-id: 8e49469772efd37f18342252653648618e644d55
2018-08-23 12:57:18 -07:00
Pascal Hartig
3bb86ae5bf Use new Litho stable release
Summary:
New release is out, so we no longer need the
SNAPSHOT.

Reviewed By: danielbuechele

Differential Revision: D9481795

fbshipit-source-id: d693f9cbbb6373835c3e3acc03a3c60f27a96262
2018-08-23 12:12:00 -07:00
Daniel Büchele
726966fdc0 convert to emotion
Summary:
My benchmarks have shown react-emotion to be faster than the current implementation of `styled`. For this reason, I am converting all styling to [emotion](https://emotion.sh).

Benchmark results:
{F136839093}

The syntax is very similar between the two libraries. The main difference is that emotion only allows a single function for the whole style attribute, whereas the old implementation had functions for every style-attirbute.

Before:
```
{
  color: props => props.color,
  fontSize: props => props.size,
}
```

After:
```
props => ({
  color: props.color,
  fontSize: props.size,
})
```

Reviewed By: jknoxville

Differential Revision: D9479893

fbshipit-source-id: 2c39e4618f7e52ceacb67bbec8ae26114025723f
2018-08-23 09:42:18 -07:00
Daniel Büchele
4151c73409 add emotion �
Summary: adding `react-emotion`

Reviewed By: jknoxville

Differential Revision: D9479892

fbshipit-source-id: 0813c887f01ba0f5cd93208e4fe285d5a9dcd6b2
2018-08-23 09:42:17 -07:00
Tim Isganitis
f560f770b6 Fix iOS screen recording
Summary: It looks like the iOS simulator screen recording tool expects a SIGINT instead of a SIGKILL (the default of node's ChildProcess.kill()) to indicate it should stop recording, save the video file and die cleanly.

Reviewed By: danielbuechele

Differential Revision: D9480678

fbshipit-source-id: 5f17bd288c7622ffa3c337cef311e5e4e462218a
2018-08-23 09:12:53 -07:00
Pascal Hartig
715d12db8d Use recursive ctime to determine plugin cache expiration
Summary:
Disabling `atime` on Linux is quite common. (I don't have data to back this up,
but with my sample size of n=1, 100% fall into this bucket.) In that case,
the plugins will be cached indefinitely.

Using `ctime` on the directory doesn't really mean anything because it is
only affected by changes *to* the directory, not the files inside.

So, let's do this right and use the most recent change to any of the files
*inside* the directory instead.

Reviewed By: danielbuechele

Differential Revision: D9479491

fbshipit-source-id: 6945d7bf87defa67679cacdaf0a978d8ff1770c3
2018-08-23 04:57:29 -07:00
Daniel Büchele
624d06f2c2 remove old virtualized
Summary: Switches elements from custom virtualization to react-window, so the custom implementation is not needed anymore and therefore can be removed.

Reviewed By: jknoxville

Differential Revision: D9447723

fbshipit-source-id: 7abcc077f87fe634a0e9517908db03398848bce7
2018-08-23 04:57:29 -07:00
Daniel Büchele
7bdb21e055 adding table debouncing
Summary:
When changing the props of a table often, this might results in a lot of unnecessary rerenders. This could be mostly seen in the analytics plugin, which is sending a lot of messages in a short time.

The update of the table component is now debounced to only re-render every 150ms. This also affects searching and filtering and makes typing in the search input smoother.

Reviewed By: passy

Differential Revision: D9447722

fbshipit-source-id: 00e092e4e047e9c40e5a1ec2789644858acc18dd
2018-08-23 04:57:28 -07:00
Daniel Büchele
1891e2c869 moving tables to react-window
Summary:
Tables were using a custom virtualization, which wasn't as performant as other solutions out there. In this diff, the table component is reworked for performance.
- removes `Table` component, because it was never used standalone, `ManagedTable` is what all plugins used
- uses `react-window` for `ManagedTable`
- reworks table highlighting and arrow-navigation to work with the new virtualization
- moves actual filtering out of `ManagedTable` into `Searchable` component for a better separation of concerns.

Reviewed By: jknoxville

Differential Revision: D9447721

fbshipit-source-id: 15eb2eb55eed9f49a0cb1ccfb2d748b3672fa898
2018-08-23 04:57:28 -07:00
Pascal Hartig
33f34650df Fix plugin resolution on Linux
Summary:
Linux appears to spawn a completely separate browser process whereas MacOS either
forks or uses a thread. Either way, Linux no longer has access to the parent
process's environment variables we use to look up plugins. Using
the remote module fixes that.

In the medium term, we should convert the `plugin` module to not rely on import effects
and instead use the IPC mechanism, making the plugin resolution asynchronous:

https://electronjs.org/docs/api/web-contents#contentssendchannel-arg1-arg2-

That would also allow us to do the plugin resolution while starting up the browser window,
lowering the startup time.

Reviewed By: danielbuechele

Differential Revision: D9423628

fbshipit-source-id: 76351f267864147c4494aadaf4e16ea636952118
2018-08-23 03:13:07 -07:00
Sara Valderrama
7852a3886b Accessibility Inspector open-sourcing move and documentation
Summary: Replaces AXElementsInpector with normal inspector implementation, removes gating from external builds. Adds documentation to https://fbflipper.com/docs/layout-plugin.html.

Reviewed By: passy

Differential Revision: D9438713

fbshipit-source-id: 18616c6cbab339bf474d116cac128e1d4a5fc2be
2018-08-22 14:57:44 -07:00
Pritesh Nandgaonkar
9095b3a030 Build Sample app rather than just building the sample pods (#251)
Summary:
Currently travis just builds the pods which sample app depends on. The test case which the current setup misses it that it will fail to check if the required header files are exposed to public. The master is broken recently because a header file is not exposed publicly and sample app fails to build, whereas all the dependencies like Sonar and SonarKit build successfully. This PR updates the travis, so that it builds sample app rather than the dependent pods.
Pull Request resolved: https://github.com/facebook/flipper/pull/251

Reviewed By: jknoxville

Differential Revision: D9465234

Pulled By: priteshrnandgaonkar

fbshipit-source-id: 42ab7210d7fa5a3dc2927efee4b4dee95f15c6cd
2018-08-22 12:57:33 -07:00
Pritesh Nandgaonkar
a0bb9e6fe5 Fix broken sample app
Summary:
This diff adds FlipperStateUpdateListener in public headers, as SonarClient.h depends on it and the sample app depends on SonarClient.h.

This diff fixes the compilation error for Sample and SwiftSample

Ideally travis should have caught it. Fix for travis is coming.

Reviewed By: jknoxville

Differential Revision: D9462177

fbshipit-source-id: e3e0ec90f9083294d4a131989ec0eaee02b52791
2018-08-22 12:57:33 -07:00
Sara Valderrama
7acf0ff9af Remove sidebar extensions from accessibility inspector
Summary: Sidebar extensions are automatically added to main inspector sidebar but kept from accessibility side menu.

Reviewed By: xiphirx

Differential Revision: D9438644

fbshipit-source-id: 47a9cc630117e15be3368d78f2396f02796c998d
2018-08-22 09:58:23 -07:00
John Knox
d82fa3c2b5 Add SonarDiagnosticActivity to getting-started (#250)
Summary:
Sonar isn't yet opening this activity remotely, but it's worth getting users to add it early, so that when it does, it will work.
Pull Request resolved: https://github.com/facebook/flipper/pull/250

Reviewed By: passy

Differential Revision: D9455599

Pulled By: jknoxville

fbshipit-source-id: 252f7e7f89751b188665ece4ab9f815fd90fe500
2018-08-22 09:26:05 -07:00
John Knox
e2575239f2 Add background color to iOS diagnostic screen
Summary:
Some apps have a default background color, for example black, making the diagnostic screen fully black.
Fix this by making sure the bg is always white so the text is readable.

Reviewed By: passy

Differential Revision: D9400682

fbshipit-source-id: a45744f833cb7fe5ca7db4dcdacc09f304670032
2018-08-21 12:43:02 -07:00
Pascal Hartig
b4b5ccdcd6 Add missing native targets (#248)
Summary:
Depends on #247.

Ensure that `libextra` is included when building sonar targets. My
cleanup was a bit too aggressive.

Fixes #246
Pull Request resolved: https://github.com/facebook/flipper/pull/248

Reviewed By: jknoxville

Differential Revision: D9420724

Pulled By: passy

fbshipit-source-id: f2d0625507a4897051840c95feefc534583b080f
2018-08-21 06:14:37 -07:00
Pascal Hartig
69cd889b71 Fix Litho plugin package (#247)
Summary:
The plugin was part of the wrong package based on its directory. This
confuses Gradle and I'm frankly a bit surprised this ever built before.
Pull Request resolved: https://github.com/facebook/flipper/pull/247

Reviewed By: danielbuechele

Differential Revision: D9420595

Pulled By: passy

fbshipit-source-id: fd8e47ff242c4535b36e379df93b672eb8bb840d
2018-08-21 04:29:08 -07:00
Hilal Alsibai
1aee2cdaa3 Pass the Layout plugin's logger to the sidebar and sidebar extensions
Summary: Lets the sidebar + sidebar extensions log custom events

Reviewed By: danielbuechele

Differential Revision: D9411001

fbshipit-source-id: 37704e805eda56347cd95c155f81ad31b34bd508
2018-08-21 02:58:33 -07:00
Sara Valderrama
c428de3948 Tooltips added on hover for AX sidebar
Summary: Adds on hover descriptions for some of the more esoteric properties in the accessibility sidebar panel such as accessibility-focused and all the talkback derived properties. Also change talkback-focusable and talkback-ignored to both be talkback-focusable.

Differential Revision: D9381676

fbshipit-source-id: 55ce854da24241a7c89b0c122c4c3ebd77438dbb
2018-08-20 09:41:46 -07:00
Pascal Hartig
02cf3a90a2 Fix build caching (#242)
Summary:
See https://github.com/facebook/flipper/issues/230 for a longer
explanation.

It turns out that many of the tasks in `native.gradle` (at least
`prepareGlog` which modifies files inside the source directory, but also
others) cause the cmake cache to invalidate.

Because we run those tasks unconditionally, we need to recompile all our
C++ code even when unmodified.

I fix this by adding a manual cache key to this which simply skips all
the tasks unless an up-to-date `external_cache_revision.txt` is found.
This is a bit hacky, but the alternatives are a) convincing cmake that
these modifications are not recompile-worthy which I have no idea how to
do and which might be impossible to do `mtime` on the files touches, or
b) having fine-grained `onlyIf` rules for every task which can easily
break. This seems the most straight-forward option.

Fixes #230.
Pull Request resolved: https://github.com/facebook/flipper/pull/242

Reviewed By: jknoxville

Differential Revision: D9381340

Pulled By: passy

fbshipit-source-id: a7db55aacac4a29076c29298d6c5b97d8bc91f66
2018-08-20 07:43:47 -07:00