Summary:
The FB4A SQLite database plugin has to be opened 4-5 times before it shows a list of databases. This is because some databases are encrypted and can't be opened. In this case the code throws and exception and we do not catch that, causing the whole load process to crash.
Now catching the exception and returning an empty list.
Reviewed By: jknoxville
Differential Revision: D19463876
fbshipit-source-id: af8c9a70dc2761e62088d90ce89f8d16057e8745
Summary:
When debugging closeable reference leaks, I found that the Flipper plugin doesn't properly close one:
```
2020-01-17 10:45:29.346 27038-27053/com.facebook.wakizashi D/YOLO: LEAK!!:
java.lang.Throwable
at com.facebook.common.references.CloseableReference.<init>(CloseableReference.java:158)
at com.facebook.common.references.DefaultCloseableReference.<init>(DefaultCloseableReference.java:29)
at com.facebook.common.references.CloseableReference.of(CloseableReference.java:237)
at com.facebook.common.references.CloseableReference.of(CloseableReference.java:203)
at com.facebook.common.references.CloseableReference.of(CloseableReference.java:176)
at com.facebook.imagepipeline.cache.CountingMemoryCache.newClientReference(CountingMemoryCache.java:221)
at com.facebook.imagepipeline.cache.CountingMemoryCache.get(CountingMemoryCache.java:209)
at com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin$4.onReceive(FrescoFlipperPlugin.java:204)
at com.facebook.flipper.android.EventBase.loopForever(Native Method)
at com.facebook.flipper.android.FlipperThread.run(FlipperThread.java:31)
```
Second leak:
```
2020-01-17 11:04:16.503 28855-28869/com.facebook.wakizashi D/YOLO: LEAK!!:
java.lang.Throwable
at com.facebook.common.references.CloseableReference.<init>(CloseableReference.java:147)
at com.facebook.common.references.DefaultCloseableReference.<init>(DefaultCloseableReference.java:21)
at com.facebook.common.references.DefaultCloseableReference.clone(DefaultCloseableReference.java:35)
at com.facebook.common.references.CloseableReference.cloneOrNull(CloseableReference.java:258)
at com.facebook.common.references.CloseableReference.cloneOrNull(CloseableReference.java:326)
at com.facebook.imagepipeline.cache.CountingMemoryCacheInspector$DumpInfoEntry.<init>(CountingMemoryCacheInspector.java:32)
at com.facebook.imagepipeline.cache.CountingMemoryCacheInspector.dumpCacheContent(CountingMemoryCacheInspector.java:101)
at com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin$3.onReceive(FrescoFlipperPlugin.java:171)
at com.facebook.flipper.android.EventBase.loopForever(Native Method)
at com.facebook.flipper.android.FlipperThread.run(FlipperThread.java:31)
```
Reviewed By: passy
Differential Revision: D19445902
fbshipit-source-id: 12a513d9e34fcac0d546a4eac55932956e4e4d5b
Summary:
As previously reported in https://github.com/facebook/flipper/issues/457, I immediately started to see crashes with Flipper integrated due to large responses (e.g., >= 100MB). This will only write the first 100KB of the response or request body into `RequestInfo` objects.
## Changelog
- Limits request/response body in network request info to 100KB max.
Pull Request resolved: https://github.com/facebook/flipper/pull/617
Test Plan:
- Make a network request which has a response size of < 100kb, verify that it is visible in its entirety
- Make a network request w/ response size > 100kb, verify that it is truncated
- Ideally, use your application with the Network plugin running, and do not see OOMs
Reviewed By: mweststrate
Differential Revision: D19412075
Pulled By: passy
fbshipit-source-id: c93662dba7a5f24820287e56e889576b5bcb5a72
Summary: Lets you test the crash reporter more easily
Reviewed By: passy
Differential Revision: D18830402
fbshipit-source-id: fca57a05f121ca4219aaaf4e2b8bfeca9b46a4a9
Summary: This was a failed attempt to fix invalid initialization, but just means it fails elsewhere, so undoing this change.
Reviewed By: passy
Differential Revision: D18685054
fbshipit-source-id: fc460ee7cacc8cb89ee2a22243f9738383cbba43
Summary:
If something calls FlipperClient.getInstance(), it will start a new thread and try to start the client. If this is in a context that will fail, like a process that hasn't loaded the .so, then it will fail, but we don't know who started the thread. This adds logging before spawning a new thread so we can see the stack trace of the culprit.
It might want to throw an error instead, that will help track down the culprit of such initializations, but this is a less intrusive change to just stop the failures from happening, to start with.
Reviewed By: cekkaewnumchai
Differential Revision: D18658972
fbshipit-source-id: 2433d4d6ef411d4fb28f31e27bcef702c5a8f4db
Summary: We're seeing some cases of initHybrid failing when the C++ class hasn't been registered. I don't think we should be attempting to init in these cases, so gating it by the same logic as when we load the static library.
Reviewed By: priteshrnandgaonkar
Differential Revision: D18658101
fbshipit-source-id: b29592135dcf637a8c0d40aee30e383f4f35e527
Summary:
Well, now I feel dumb. That should have definitely been caught earlier.
I'll set up a CI job to verify this.
Fixes https://github.com/facebook/flipper/issues/648
Reviewed By: jknoxville
Differential Revision: D18657185
fbshipit-source-id: 5fea08103f5a4292159b519d62d84800c0444e41
Summary: Failing OSS check because of this right now.
Reviewed By: cekkaewnumchai
Differential Revision: D18638744
fbshipit-source-id: 1e5076f69a40f7dea87078c346e85f1797de42aa
Summary: On Android, the stack trace looks different so we don't need to use the Regex we use on iOS. We can simply display all the lines in the trace.
Reviewed By: pasqualeanatriello
Differential Revision: D17181400
fbshipit-source-id: e471da17b89806a161edc7edcf05ac6faed44bf0
Summary: This will correctly show all view children instead of reverting to the non-ax default behavior. Fixes bug where recycler views showed no children.
Reviewed By: jknoxville
Differential Revision: D18574220
fbshipit-source-id: f22606fb582e0bfd1a171dc4497e1d1613e800d1
Summary: Show the simple name instead of the node info class since this is taken into account for the attributes.
Reviewed By: jknoxville
Differential Revision: D18574219
fbshipit-source-id: 4b134e8be18c313e08df423dcdbe286d96c80b56
Summary: I don't know why we left this for so long, it doesn't make a good first impression.
Reviewed By: mweststrate
Differential Revision: D18348908
fbshipit-source-id: b8b0e5fe8f6ab81281d6ea1a1299ebdaaf0b9c43
Summary:

There is no spacing between the texts on the demo app and I found them difficult to click. So I decided to add some margins to make them more thumb-friendly :)
## Changelog
Make demo app more thumb-friendly
Pull Request resolved: https://github.com/facebook/flipper/pull/621
Test Plan: N/A
Reviewed By: jknoxville
Differential Revision: D18245979
Pulled By: priteshrnandgaonkar
fbshipit-source-id: 9c99a477c4100323144518f56369a42085589f77
Summary:
This was removed because it's implicitly required by the library now.
However, Buck doesn't pick this up by default and requires further
configuration. It's easiest just to declare this twice now.
Reviewed By: jknoxville
Differential Revision: D18202459
fbshipit-source-id: 48c6a91c2fca0d932950a81c092b78b90a24c27b
Summary:
If we move the permissions into the library itself, the manifest
merger will take care of adding them to consuming applications,
making setup instructions easier.
## Changelog
Move required permission declarations into flipper-core
Pull Request resolved: https://github.com/facebook/flipper/pull/593
Test Plan:
Using aapt we can dump the permissions of a sample app.
`$ANDROID_HOME/build-tools/29.0.2/aapt d permissions sample-debug.apk `
```
package: com.facebook.flipper.sample
uses-permission: name='android.permission.WRITE_EXTERNAL_STORAGE'
uses-permission: name='android.permission.INTERNET'
uses-permission: name='android.permission.ACCESS_WIFI_STATE'
uses-permission: name='android.permission.READ_EXTERNAL_STORAGE'
uses-permission: name='android.permission.FOREGROUND_SERVICE
```
Reviewed By: priteshrnandgaonkar
Differential Revision: D18006323
Pulled By: passy
fbshipit-source-id: c4cf28ee698faa3e2b631462f2953976135b299c
Summary:
Base64 encoding can easily cause OOMs for large payloads.
In the long-term, it would be great to have a way of streaming these
responses so we don't allocate 50MB chunks of memory at once.
Reviewed By: jknoxville
Differential Revision: D17951353
fbshipit-source-id: a5d7b8242892518590ac95c1d9751f24d20dc40e
Summary:
see https://github.com/facebook/flipper/issues/450
If we want to control a custom SharedPreferences, we can create a Class as SharedPreferencesDescriptor's Subclass, override the getSharedPreferences() function to return a custom SharedPreferences instance.
## Changelog
add getSharedPreferences() function in SharedPreferencesDescriptor Class
Pull Request resolved: https://github.com/facebook/flipper/pull/571
Test Plan: No
Reviewed By: jknoxville
Differential Revision: D17738675
Pulled By: passy
fbshipit-source-id: d227e7d6461194f7a01ae7b2ba53434dd71fc0d2
Summary:
This avoids having to perform gymnastics like in
https://github.com/facebook/react-native/pull/26697
Reviewed By: jknoxville
Differential Revision: D17735954
fbshipit-source-id: 507548aab89309beeb228b104a24af8acd10ce9a
Summary:
This is now published to Maven Central and doesn't require a
separate repository.
Pull Request resolved: https://github.com/facebook/flipper/pull/557
Test Plan: CI
Reviewed By: danielbuechele
Differential Revision: D17526448
Pulled By: passy
fbshipit-source-id: 169b5bc5f6568d40697e5e48a9873f8a64bd5e00
Summary:
I missed these. :(
Open source CI is unhappy about this - for good reasons.
Reviewed By: jknoxville
Differential Revision: D17500071
fbshipit-source-id: 96106f660dee59985c51e2635321ab4ad00a795a
Summary:
Setting up the necessary metadata to publish the separate plugins
to Maven/Bintray.
Reviewed By: danielbuechele
Differential Revision: D17480263
fbshipit-source-id: 1772cee5b3744ce52fc6e2510a27cb7f500e72bf
Summary:
Breaking Litho/Sections off. Doesn't really make sense to have
two deps for this especially since they're pretty tightly coupled.
This makes our core already quite slim.
Reviewed By: jknoxville
Differential Revision: D17420118
fbshipit-source-id: 9a03911f4af6410745b9aefd0e6a75bdf106660f
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/548
First project to pull out of the "fat distribution" we currently have.
Still needs setup for Maven and registration in Bintray.
Reviewed By: jknoxville
Differential Revision: D17395660
fbshipit-source-id: 6244495a2e25d705dd930ef87c7e5e1f038eb921
Summary: It's getting really tedious to turn these off one by one.
Reviewed By: jknoxville
Differential Revision: D17366198
fbshipit-source-id: 25443d7a18c81cd18edea21d75cfa70e4fbf4171
Summary: This got really badly mauled by a codemod I reckon.
Reviewed By: jknoxville
Differential Revision: D17366199
fbshipit-source-id: 6f1863e5e3d3ed26753723cf666b70655601a8de
Summary:
This has been tripping up the release builds, luckily caught by
Circle: https://circleci.com/gh/facebook/flipper/1480
Reviewed By: jknoxville
Differential Revision: D17282130
fbshipit-source-id: a17adb18bc75e4fa5d645a062343622167785fa6
Summary: Show info about the event which triggered a new changeset generation; in case of a state update, also show the name of the method which triggered the state update.
Reviewed By: pasqualeanatriello
Differential Revision: D17162202
fbshipit-source-id: ebf218f8ce71799e4dd452f54b1621af7f83cc51
Summary: Use the string sent from the client to show which section triggered a state update.
Reviewed By: pasqualeanatriello
Differential Revision: D17162190
fbshipit-source-id: a72eea1c6fc0fba851028aa050f0c6772a590e8d
Summary:
Show the section which triggered the state update in the tree hierarchy.
We can't use the attribution param that was being passed from SectionTree because it contains the key of the section, not the global key.
Reviewed By: pasqualeanatriello
Differential Revision: D17161730
fbshipit-source-id: bae5e509c378ffdf210acac6564212c873c5855b
Summary:
The navigation plugin supports logging of a date and the class name. This addition adds that support.
I have kept the previoius method which I will remove once I update the fb4a navigation plugin integration.
Reviewed By: danielbuechele
Differential Revision: D17202996
fbshipit-source-id: eac95328a6e2278c3a27ca608b9b675c8efe4528
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/538
Upgrades libevent to the August release 2.1.11.
Some notable things:
- The CMake file they ship with is actually broken. It contains a reference to an "uninstall.cmake" script that they don't include in the archive.
- There is some git magic in the CMake script which throws very annoying warnings if you're not in a git repository and if you are, it's still super useless because it assumes it's the libevent repo.
- I've removed the uninstall reference and replaced version detection magic with hardcoded values. The result is the "CMakeLists.txt" in the overrides folder. For future upgraders: You'll have to either remove the override or apply similar steps to the next release.
- The `event-config.h` is simply one of the outputs I found under `android/build/libevent/x86/include/event2/event-config.h`. They seem to be stable across architectures so it's easier to just copy it over than to fix the CMake logic that should actually pick it up from the Android build path.
- The cmake target names have changed and have an underscore in them, now.
- Verified with an SDK 28 x86_64 that this does fix https://github.com/facebook/flipper/issues/482.
Fixes GH482.
Reviewed By: jknoxville
Differential Revision: D17164731
fbshipit-source-id: 642744118065bea2674dbb0e1af91a11598066cc
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/530
Use the pre-release of fbjni instead of our bundled copy. I hope this can be made a little less awkward, but it works for now.
Reviewed By: jknoxville
Differential Revision: D16988077
fbshipit-source-id: 936e414f9b2bf82ccb54b107228d79d01acdbf14
Summary: The SingleComponentSection doesn't store anything in the data field unless it's set manually by the dev; this adds custom info about the prev and next data so we can use it for debugging
Reviewed By: pasqualeanatriello
Differential Revision: D17112284
fbshipit-source-id: 55aa49583e3bc7d046661d34841b7c3283972d76
Summary: utils used by redblock and layout plugins were incorrectly checking node instead of childNode for listviews that have non-visible children
Reviewed By: nscoding
Differential Revision: D16897804
fbshipit-source-id: 8f62956c57568694db76030377552e43ce3a9216
Summary:
Here I have an early version of the Navigation Plugin (Android) for Open Source.
A lot of apps will be using there own Navigation framework for handling deep links. In order to keep things as simple as possible, recording navigation events is done through a single function that can be called from anywhere in the app. This will allow users to place this function in there own navigation frameworks and use there own logic with it.
Seperately, I have shown how this can be used with our Android sample app. I use the built in Android intent-filters to provide a demo of how this can potentially be used, and to form the basis of the docs that I will write.
Reviewed By: passy, danielbuechele
Differential Revision: D16828049
fbshipit-source-id: 22765f63ca0c471689d2ec5865fdfc155b92697f
Summary:
Without this, our build will break with the next Litho release
because the `DoNotStrip` annotation will no longer be exported
as part of `litho-annotations`.
Reviewed By: jknoxville
Differential Revision: D16828144
fbshipit-source-id: f9a78b331678882025732498f18a3443d148ef4d
Summary: This updates the implementation of the export of the fresco plugin on the android side. Initially we used to send all the images info in one call, but its not scalable, as the images increase, the payload size of the rsocket can increase which will lead rsocket to drop messages. This diff updates the implementation of android side to match the one on the iOS side.
Reviewed By: passy
Differential Revision: D16627823
fbshipit-source-id: 563bf5fb20595c198b6447bb4e41f04af6e46644
Summary:
- fix mutual selection of elements in ax and non-ax tree (simplifies linkedNode logic as well)
- remove unneeded extraInfo attributes (focused, nonAXwithAXchild, & hasAXNode were not/no longer being used)
- use 50/50 fixed width view for trees when both are visible
Reviewed By: jknoxville
Differential Revision: D16390355
fbshipit-source-id: bbf9ea887f8f1035df8b4b0562ddcc4de291f004
Summary: Talkback prepends "password" on focus for password editText outputs. Flipper's AccessibilityUtil should include this case.
Reviewed By: blavalla
Differential Revision: D16427345
fbshipit-source-id: 28afdd196973539618b73824671ef02128a4e9ab