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:
This Diff makes the react-native-flipper package available on NPM.
For simplicity and traceability purposes, this package is released every time Flipper is released, under the same version number. Even though there will be often no changes.
Reviewed By: passy
Differential Revision: D19446815
fbshipit-source-id: 485930e57beac42a2f36dc34a8ac82eed2abe785
Summary: When Flipper upgraded Electron it broke the iframe sandboxing for devtools, the fix is to use a webview (which requires some CSS fixes to render full screen).
Reviewed By: ArchDev
Differential Revision: D19446243
fbshipit-source-id: 7fd0b0fc922aa6c05c24efc20adce1cb61f24c99
Summary:
Flipper clear icon was hidden, this fixes it
Also fixed a null pointer exception that would occur when clearing search with the keyboard, and no filters were active
Reviewed By: passy
Differential Revision: D19445833
fbshipit-source-id: 213c28dc8c1e295018e6318f86604d96d2a9b75c
Summary:
This takes presendence over the official types and
masked a bunch of errors we had in the codebase.
Reviewed By: mweststrate
Differential Revision: D19374741
fbshipit-source-id: 2fd5074f42381dd552b9cc2d460769766ab67b85
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: Fixed the issue with empty plugin list on Windows because of env var length limit
Reviewed By: passy
Differential Revision: D19411466
fbshipit-source-id: 7fa390f7dd342e23e965b2135fbeb8e88e5857ef
Summary: Lines were a bit squashed together. Taken the value from workplace, as that's the style we've been copying so far.
Reviewed By: priteshrnandgaonkar
Differential Revision: D19430279
fbshipit-source-id: 52cc8167d6acaa6af42caaa67a693b5fda492701
Summary: I find this much more intuitive that it's unexpanded, than a down arrow.
Reviewed By: mweststrate
Differential Revision: D19429007
fbshipit-source-id: 7b414aeee846a864641941b6837770252cb298de
Summary:
I want to make ping events fire when in background or foreground.
But doing that now could mess with some stats.
Setting this up so we have the data. If it comes to it, after this has been going a while,
we can add a filter to the existing queries for "isForeground=true" to preserve their behaviour.
Reviewed By: mweststrate
Differential Revision: D19428926
fbshipit-source-id: 7c175e9936dce52a59d17995dae61a82d23687f8
Summary:
As reported in https://github.com/facebook/flipper/issues/647 urls are not editable in our generic data inspector, as clicking an url will immediately open it, rather than going to edit mode.
This diff fixes that by appending an edit icon to URL previews.
Reviewed By: jknoxville
Differential Revision: D19428925
fbshipit-source-id: 428e8e4c10fb472792b61986d915658f7581c38d
Summary:
Ran this:
```
./gradlew wrapper --gradle-version=5.6.4 --distribution-type=bin
```
I tried to get us to 6.1, but that causes some type errors within
the Android plugin. I hope it's actually there stuff and not ours
so we can upgrade once they've sorted their stuff.
Pull Request resolved: https://github.com/facebook/flipper/pull/749
Test Plan:
./gradlew tasks
./gradlew :sample:installDebug
Reviewed By: jknoxville
Differential Revision: D19428496
Pulled By: passy
fbshipit-source-id: a910f5a269688f7ec5fc020fe1af99a75fc7b574
Summary: Added some assertions and string casts to make plugins a bit more robust
Reviewed By: passy
Differential Revision: D19427909
fbshipit-source-id: 46a3138805db865b538f745fae25ce1897e35736
Summary:
This diff is part of the bigger task T60496135
This diff changes the RN support from crude to decent citizen, making sure we don't recycle callbacks over the bridge, use subscriptions were possible, and making sure connecting, disconnecting, etc works correctly
For example, connect and disconnect hooks should work.
Finally, throw in hot reloading into the mix, which causes the registerPlugin to be triggered another time, without the old one every been unloaded.
This should trigger a new 'onConnect' on the client, to make sure it can restore any state / subscriptions necessary, even though the never disappeared in the Java world.
These cases should all be handled well.
Reviewed By: jknoxville
Differential Revision: D19347330
fbshipit-source-id: de64a08f4043f01528c794430ccc3c717abf0180
Summary:
This diff is part of the bigger task T60496135
This diff is based on D18706643, extracting only the react native module parts
It implements the entire Android client api for JavaScript, so that there is feature parity. However this implementation is happy path only, and edge cases will be handled in separate diffs
Reviewed By: jknoxville
Differential Revision: D19310265
fbshipit-source-id: 589716fe059952bdde98df84ed250c5c6feaa118
Summary: Gives us visibility on how many / which plugins, people are starring.
Reviewed By: mweststrate
Differential Revision: D19408420
fbshipit-source-id: cb08e2a5f9d1b31ea03e6f7df8fa61db26611e91
Summary:
Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.1.2 to 4.5.3.
<details>
<summary>Changelog</summary>
*Sourced from [handlebars's changelog](https://github.com/wycats/handlebars.js/blob/master/release-notes.md).*
> ## v4.5.3 - November 18th, 2019
> Bugfixes:
>
> - fix: add "no-prototype-builtins" eslint-rule and fix all occurences - f7f05d7
> - fix: add more properties required to be enumerable - 1988878
>
> Chores / Build:
> - fix: use !== 0 instead of != 0 - c02b05f
> - add chai and dirty-chai and sinon, for cleaner test-assertions and spies,
> deprecate old assertion-methods - 93e284e, 886ba86, 0817dad, 93516a0
>
> Security:
>
> - The properties `__proto__`, `__defineGetter__`, `__defineSetter__` and `__lookupGetter__`
> have been added to the list of "properties that must be enumerable".
> If a property by that name is found and not enumerable on its parent,
> it will silently evaluate to `undefined`. This is done in both the compiled template and the "lookup"-helper.
> This will prevent new Remote-Code-Execution exploits that have been
> published recently.
>
> Compatibility notes:
>
> - Due to the security-fixes. The semantics of the templates using
> `__proto__`, `__defineGetter__`, `__defineSetter__` and `__lookupGetter__` in the respect that those expression now return
> `undefined` rather than their actual value from the proto.
> - The semantics have not changed in cases where the properties are enumerable, as in:
>
> ```js
> {
> __proto__: 'some string'
> }
> ```
>
> - The change may be breaking in that respect, but we still only
> increase the patch-version, because the incompatible use-cases
> are not intended, undocumented and far less important than fixing
> Remote-Code-Execution exploits on existing systems.
>
>
>
> [Commits](https://github.com/wycats/handlebars.js/compare/v4.5.2...v4.5.3)
>
> ## v4.5.2 - November 13th, 2019
> # Bugfixes
>
> - fix: use String(field) in lookup when checking for "constructor" - d541378
> - test: add fluent API for testing Handlebars - c2ac79c
>
> Compatibility notes:
> - no incompatibility are to be expected
></tr></table> ... (truncated)
</details>
<details>
<summary>Commits</summary>
- [`c819c8b`](c819c8b533) v4.5.3
- [`827c9d0`](827c9d0747) Update release notes
- [`f7f05d7`](f7f05d7558) fix: add "no-prototype-builtins" eslint-rule and fix all occurences
- [`1988878`](1988878087) fix: add more properties required to be enumerable
- [`886ba86`](886ba86c2f) test/chore: add chai/expect and sinon to "runtime"-environment
- [`0817dad`](0817dad7e7) test: add sinon as global variable to eslint in the specs
- [`93516a0`](93516a0b07) test: add sinon.js for spies, deprecate current assertions
- [`93e284e`](93e284ed9b) chore: add chai and dirty-chai for better test assertions
- [`c02b05f`](c02b05fa81) fix: use !== 0 instead of != 0
- [`8de121d`](8de121d21c) v4.5.2
- Additional commits viewable in [compare view](https://github.com/wycats/handlebars.js/compare/v4.1.2...v4.5.3)
</details>
<br />
[](https://help.github.com/articles/configuring-automated-security-fixes)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `dependabot rebase` will rebase this PR
- `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `dependabot merge` will merge this PR after your CI passes on it
- `dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `dependabot cancel merge` will cancel a previously requested merge and block automerging
- `dependabot reopen` will reopen this PR if it is closed
- `dependabot ignore this [patch|minor|major] version` will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/facebook/flipper/network/alerts).
</details>
Pull Request resolved: https://github.com/facebook/flipper/pull/726
Reviewed By: mweststrate
Differential Revision: D19407963
Pulled By: passy
fbshipit-source-id: 215ca75306f0ff7c2f839627b39581fc432443b3
Summary:
Currently there are several issues caused by internal users not being logged in. E.g. the rating button doesn't work, flipper traces can't be uploaded etc.
However, the fact that the user is not logged in, is not reflected in the UI if the user has an API key, which is outdated.
See also the scuba query in the linked tasks; this happens for quite some users.
This diff fixes two things:
1. If auth tokens are invalid, this is properly reflected in the UI
2. If at startup the profile can't be loaded, a popup will be shown to log in.
Differential Revision: D19392735
fbshipit-source-id: 2be7c577ead671df16c626c0636e89245cebab14
Summary:
### iOSSample:
Fix iOS Sample App crash: UI need to be updated on Main Thread
### SampleSwift:
* Upgrade swift version
* Fix force unwrapping
* UI need to be updated on Main Thread
## Changelog
Pull Request resolved: https://github.com/facebook/flipper/pull/740
Differential Revision: D19397414
Pulled By: passy
fbshipit-source-id: 7af84c0fe43861aff6a18c36bf81a940baec5147
Summary: This releases glog and DoubleConversion under "Flipper" preappended name as it solves the issues with Flipper integration with RN under use_frameworks! keyword.
Reviewed By: passy
Differential Revision: D19392941
fbshipit-source-id: ebdcdc23fcce45cec9bfc6d4f18c14a734caf24f
Summary:
Previously, at 1-minute intervals, if the flipper window was focused on, it would report the currently active plugin.
We'd sum all those "ping" events and that would approximate the number of full minutes spent in total across all users.
It's quite coarse grained, if you're focused on the window for 30 seconds, there's a 50% change your ping will get used.
While being reasonable across many users, it doesn't allow analysis like how many plugins do people typically use in a session, because we probably won't see all the plugins they use.
New approach, for every minute flipper is open, report the focused and unfocused time spent in each plugin, as well as the total across all plugins.
This should give us the previous data but with much more precision.
Should be especially helpful for plugins with low numbers of users, you typically interact with emulators while using a plugin, so it's not continually in focus, so you miss a lot of usage events.
enhance_bladerunner
Reviewed By: nikoant
Differential Revision: D19392796
fbshipit-source-id: af9244e993edff9b381144ca587c3a77fdf8c98a
Summary: New plugins are not detected because the available plugins are stored in the mutable Client class, so we have to subscribe to the event emitter
Reviewed By: passy
Differential Revision: D19347654
fbshipit-source-id: 68af63bf9bbe6319b2994dc8d07ca5eb27bb33b4
Summary:
Passing in unknown options along with `flutter-static` now shows the default warning message as part of the API.
## Changelog
show default warning message on firing in unknown flags
Pull Request resolved: https://github.com/facebook/flipper/pull/715
Test Plan: Tested `yarn start` with unknown arguments. Now raises an error.
Reviewed By: mweststrate
Differential Revision: D19389776
Pulled By: passy
fbshipit-source-id: 2f844e38c8be0e4e53b171b98035338226a0a08a
Summary:
Firefox client is no longer maintained. This is the last official version we can use.
Pull Request resolved: https://github.com/facebook/flipper/pull/743
Test Plan: Greenkeeper.
Reviewed By: mweststrate
Differential Revision: D19390048
Pulled By: passy
fbshipit-source-id: cf37e69bc650d932db102545ccbc41c28beed96a
Summary: Flipper fails to load on Windows because of inifinite update loop in PluginContainer component.
Reviewed By: mweststrate
Differential Revision: D19374611
fbshipit-source-id: f2039c055ffefe508c8cf5bcfcd16fffc97a10b8
Summary:
{F226170897}
Color picker based on Lite's color table
We can't use standard color picker because of FB Lite's limitation: color set is predefined and sent from the server
'extra' field and 'color-lite' type are added to field description
Reviewed By: jknoxville
Differential Revision: D19330480
fbshipit-source-id: 695d288b4b8409e8b63a9e461a41914379d75a8c
Summary: This allows `adb b2g-info` command to get more detailed data and not just the amount of free memory
Reviewed By: jknoxville
Differential Revision: D19348298
fbshipit-source-id: ecb705c328c53f2d8c643496f0ed4204a31a745e
Summary:
Pritesh marked correctly that it was not entirely clear whether sections are collapsed or not. It seemed the arrows were off, checked the Android style guide, the arrows are correct, but difference is that the bottom border of sections is missing. Adding those clarifies the collapsed state properly I think.
https://pxl.cl/Wpnq
Reviewed By: passy
Differential Revision: D19372987
fbshipit-source-id: 2fb898301f63bd8edb2c3c9851f89edc801a524f
Summary:
We're using two libraries to do the same thing.
The other one is better.
Reviewed By: mweststrate
Differential Revision: D18954485
fbshipit-source-id: 33ed2f452badf30cb72c69661527edc54708efba
Summary: The new type defs make use of TypeScript 3.7 assertion functions which means they actually have a semantic effect on the rest of the lexical unit, which is quite neat.
Reviewed By: mweststrate
Differential Revision: D19348035
fbshipit-source-id: 3c7a21b5bece091c32f8879fed12d8e46e205ea4
Summary: Fixed few tests which were failing on Windows
Reviewed By: mweststrate
Differential Revision: D19371105
fbshipit-source-id: 118a76783680a3efa0645321d8c88b4e6e754ce0
Summary: This slows down the phone less. In the future, it'd be nice to get timestamp on X axis.
Reviewed By: passy
Differential Revision: D19097154
fbshipit-source-id: e145f1b911dec368a6bb7de32790d6280c696eda
Summary: The first four were added when I ran `yarn start` from `master`. The last one was added when I logged out.
Reviewed By: mweststrate
Differential Revision: D19346191
fbshipit-source-id: 6025bf9b0b2667f93858450cb73e81a6b50126f0
Summary:
Filter type enum works differently than what I understood; its value is not inside the column.
Move the enum checking to before others because text matching relies on column value.
In addition, change the behavior when there is no column (from ignoring the search to causing all row to disappear due to mismatch ing)
Reviewed By: mweststrate
Differential Revision: D19345758
fbshipit-source-id: d49bc0e29d7a3d36f3aad20213791211c2c3065b
Summary:
If a plugin was registered beyond the initial start command, this didn't show up in the Flipper UI. The reason for this is that the client map is updated, but since that object is mutable, components won't detect nor reflect the change.
This diff changes to make sure a new plugin map is created if it is changed.
Reviewed By: passy
Differential Revision: D19345464
fbshipit-source-id: 3aa343e1739caf124a015c88680a94973b87f701
Summary:
Send per-healthcheck success/failure event to be able to analyze most common problems.
Send event when doctor warning bar shown.
Send event when doctor report is opened by user.
Send event when user set flag "Do not show warning again" in the doctor report.
Reviewed By: passy
Differential Revision: D19312127
fbshipit-source-id: 01b648d1154a3aeadc85980190cb9e5e221b572e
Summary:
When you run a simulator with a different version of the xcode version that is currently `xcode-select`ed, it won't work.
This causes problems in Flipper, and also RN and other tools.
Show a helpful warning in this case.
Need to dispatch it explicitly because console.errors only get surfaced in dev mode, not production.
Ideally this will be done in the doctor, but there's work to get it to report device/app specific problems first.
Reviewed By: passy
Differential Revision: D19345199
fbshipit-source-id: 45f95c6d33c81da2299d8d84c9179bebb5bfebe8
Summary:
This is what I wanted to have the functional component for. This makes it super easy to keep track of the sections we've loaded and then make a side-effecting logging call "on mount" to keep track of the impressions different sidebar extensions get.
This should also save some CPU cycles when calculating what to show in the sidebar. Not sure how meaningful that is, though.
Reviewed By: jknoxville
Differential Revision: D19331682
fbshipit-source-id: 44f83006634f50d8f7437286b8915b63f9c47d40
Summary: Refactoring a bit to make a change easier.
Reviewed By: jknoxville
Differential Revision: D19330542
fbshipit-source-id: 5926b110d04d73e109ea287cacd4e120ea8c9986