Summary:
Bug: On search, the accessibility views didn't used to expand.Look at the following video to understand the bug
{F153135892}
Reviewed By: danielbuechele
Differential Revision: D14407511
fbshipit-source-id: 011bf31b5bd10f5a7dad3d5d30703ec3bdeaf9c1
Summary: Enables Import and Export for all the nodes for android. Also search and Accessibility feature works
Reviewed By: danielbuechele
Differential Revision: D14406016
fbshipit-source-id: 8976db66d1ca91e98c52983a31ea584764bde0f6
Summary: Flow tells me these too are unnecessary now. Yay!
Reviewed By: danielbuechele
Differential Revision: D14406869
fbshipit-source-id: c09c11fd548798a3fe97c74d23d3b2e9637e5f3a
Summary:
Enables search on the imported layout data. The way search is implemented is that the Flipper app asks for the search results from the mobile clients. Since mobile client will not exist in the archived case, the search won't work. To solve this problem I added a proxy client which will get all the messages fired by the Layout Inspector and it will accordingly revert back with the responses. In the case of search, it will give back the search result tree for a particular query.
Also added extensive tests for the proxy client
Reviewed By: danielbuechele
Differential Revision: D14281856
fbshipit-source-id: 651436084ebacd57f86e4fe9bb2036e7f666880c
Summary:
For gzipped requests, the decoding of unicode characters was failing, because it was was done, before decompressing the response payload.
In this diff, the payload is first decompressed and decoded afterwards. For the calculation of the response size, this is removed, because it doesn't matter for the calculation of the size to correctly decode unicode characters. However, there might be a problem with displaying the correct size. This is tracked in T41427687.
Reviewed By: jknoxville
Differential Revision: D14366841
fbshipit-source-id: e375df1ec44505f6315dedbe71b3b62eac0f281a
Summary:
Extended the linter to check for the title attribute, too, and fixed
all violations. Linter will follow in next diff.
Reviewed By: jknoxville
Differential Revision: D14366410
fbshipit-source-id: b4de3592f2537e2bb16d4c2af231e5bee45346e4
Summary:
Fixes a bug which happened when the selected plugin was layout and the flipper trace was imported. While importing the trace in the mentioned scenario, the redux store didn't used to get updated in the first render but got updated in the second render. Due to which the persisted state passed in the props was undefined. Look at the attached video to understand the bug.
BUG:
{F152642401}
Reviewed By: passy
Differential Revision: D14343465
fbshipit-source-id: 59110fd6ee5839f2e3944792e1c288d2388d3340
Summary: Only show scrollbars in sidebar when necessary.
Reviewed By: jknoxville, passy
Differential Revision: D14341446
fbshipit-source-id: e75f02b9de7796fc9ed8a42618ade3be015a1889
Summary: This is required on linux or it isn't found. It's already done elsewhere this way.
Reviewed By: passy
Differential Revision: D14303606
fbshipit-source-id: 8b3fca776d43076cdc2f814de19b0b381350dcc9
Summary: When a node was invalidated, not only the node itself needs to be refetched, but also its children.
Reviewed By: jknoxville
Differential Revision: D14280318
fbshipit-source-id: a262a2c95347dc9bf72f83b6a9eba9d3f9badb5a
Summary:
Exports Flipper trace along with bug report. I was not able to upload `.flipper` file, thus I have uploaded `.json` file. One can download the json file from the portal and then can rename it to `.flipper` inorder to open it into flipper app.
I am looking into downloading `.flipper` directly, instead of `.json`. But that change, if it happens, will be done in other diff. I think having flipper trace on the bug report will be helpful to debug the issues.
Reviewed By: danielbuechele
Differential Revision: D14266218
fbshipit-source-id: fb7cf4c9773fb355f3569ce8d08b83bd736ab1ca
Summary:
This diff adds filter for cold start in the Images plugin.
I also moved the Loading indicator as a sibling of filter bar, because it used to show up when the images to display were zero. Earlier zero images case used to happen only at the start, but now with the options to apply filter, this case may happen often, so user should have access to filter bar to change the filters in order to reset it.
Look at the video for more information
Reviewed By: danielbuechele
Differential Revision: D14269064
fbshipit-source-id: cbab5a62fd62c5a98f8728c33c1a0dbfc6f454cc
Summary:
Adding support for downloading archived Flipper data using a URL handler.
A URL looks like `flipper://import/?url=` and will download the file specified in the url param. While downloading the file, a spinner is shown in the app's titlebar.
Reviewed By: jknoxville
Differential Revision: D14262763
fbshipit-source-id: 6538fc78c07a48cef7b71b3f7bdbcb712d054593
Summary: Updated the coldstart type to boolean, as number is not required, its a boolean value.
Differential Revision: D14260678
fbshipit-source-id: 236a38e04fd31cab4a561f5e0365bc43ad98adea
Summary:
This diff does the following
- Support to export the entire view hierarchy for iOS
- Android is not supported yet
- This diff adds a call `getAllNodes` to the client side of iOS, which returns the entire view hierarchy
- Currently the search doesn't work on the imported layout plugin data. Also the imported layout plugin data doesn't expand the way it does when component is mounted, reason being the client passed to the plugin is not functional for the archived case
I will work on fixing the last points in the next diffs stacked on the current one.
For Android:
- Currently the export function will export whatever is currently displayed on the Flipper app, not the entire view hierarchy
Support for Android will also come up in later diffs.
Reviewed By: jknoxville
Differential Revision: D14209157
fbshipit-source-id: 3ad3e39edfd994913dc19cc239bfbbe011a9757c
Summary: Adding UI that shows when a user is logged in and allows the user to log out.
Reviewed By: jknoxville
Differential Revision: D14224401
fbshipit-source-id: 314a1c2f9a1021258e724e824be7577eb85d4b9e
Summary: Allows plugins to check if extension commands or new features are enabled in the current app, by calling `this.client.supportsMethod('xxx')`.
Reviewed By: passy
Differential Revision: D14225961
fbshipit-source-id: c9f7f5b3091209f0ce9705d9d3a0ec173edf3e25
Summary: Avoid making duplicate clients, and this one uses a more reliable creation method.
Reviewed By: passy
Differential Revision: D14241448
fbshipit-source-id: 95846a373335818758c8c4a282ed4db26b62d986
Summary: Allows the created client to be reused.
Reviewed By: passy
Differential Revision: D14241449
fbshipit-source-id: 6bbb64eeb708dce9c24e4581e8480d19af998e47
Summary: When using "Clear logs" in Flipper, also flush the native Android buffer.
Reviewed By: jknoxville
Differential Revision: D14225722
fbshipit-source-id: f41ff9013b95fc3271d3ae44910da18023708d2d
Summary:
This diff adds support for cold start in image perf plugin. Now developer can see which images have been requested as part of cold start.
CC: Diego Sanchez Vivian Wehner Alexander Oprisnik Gaurav Nijhara
Reviewed By: jknoxville
Differential Revision: D14227065
fbshipit-source-id: 3347b460e491b218115d8572cb8b323de909ef1b
Summary: When there wasn't enough space for the text toolbar, the text was wrapped into multiple lines. Now it's truncated.
Reviewed By: jknoxville
Differential Revision: D14209813
fbshipit-source-id: 1971cd791daf345639993ed0632d718374a5f91b
Summary: Layout search was throwing errors before, now it's working. The problem was, the event object used in the `setTimeout`-callback was released, before the timeout fired and therefore was null.
Reviewed By: jknoxville
Differential Revision: D14209811
fbshipit-source-id: 2465241c376d3e709155830e796aa3b991cbd7de
Summary:
Removing the virtualization in the elements inspector. This didn't really make sense here, because usually the inspector renders 10-1000 rows, which can be easily done in the browser. Having virtualization here, caused some problems with icons flickering and scrolling being broken.
Let's make it less complex and just remove the virtualization!
Reviewed By: jknoxville
Differential Revision: D14209815
fbshipit-source-id: 115d3ed57a1ccdbc20108636ff4fc7fc68e6c9c0
Summary: Before, the a11y inspector was in a sidebar. This changes the actual view hierarchy to be in a sidebar on the left side. This doesn't make an actual difference for the user, but helps to fix the scrolling issues in D14209815
Reviewed By: jknoxville
Differential Revision: D14209812
fbshipit-source-id: 414e8fd34c889cdce2dd3776727dd4a3a59efeb5
Summary:
Previously nodes were always marked as expanded, when they were loaded. In some cases this caused a node to be marked as expanded, but its children not being loaded.
This changes the behaviour to only mark a node as expanded, once its children are loaded.
Reviewed By: jknoxville
Differential Revision: D14209814
fbshipit-source-id: f825d6a066373be932e42b9612a1bf78877b12aa
Summary:
Display "crashes" as plugin errors when they don't include the expected crash attributes.
Plugins can respond to a `call()` with success or error. If error, then they can provide an arbitrary json object.
These errors go through the same code as crash reports for the crash reporter plugin, but they don't necessarily contain the expected attributes.
When they don't display them as a plugin error, and stringify the whole object.
It would be better to distinguish these properly and highlight that they aren't crashes, in the crash reporter, but that's a bigger task. This stops them being shown as "undefined undefined".
Reviewed By: xiphirx
Differential Revision: D14207907
fbshipit-source-id: 8ba357fbe681a40cd671510a187073e4cbfa2184
Summary:
The keys in WeakMaps have to be Objects (i.e. can't be primitives) as
they have to be fall under the responsibility of the GC.
Without this check, we may get "TypeError: Invalid value used as weak map key"
as we accept `any` as `data` for the inspector. I'm not entirely
confident if this check is enough, but I also don't have a way of reproducing
the error we got reported.
Reviewed By: jknoxville
Differential Revision: D14182463
fbshipit-source-id: 3397678935f08513e485bf5654377b54053ee32f
Summary:
The search query can only be persisted if we have an identifier for the searchable component. For this we already have a property `tableKey` on our `ManagedTable`. However, we don't want to require every plugin to provide a key for their table.
In this diff, a tableKey is auto-generated from the table's column configuration. This should be good enough to uniquely identify a table and persist it's query.
Reviewed By: passy
Differential Revision: D14168577
fbshipit-source-id: 13e928a606c3a05096dfbfb01ae90b15aa085bf2
Summary:
Adds a capability to filter images by surfaces.
Note: I will allow multi select in the next diff, stacked on the current one.
Reviewed By: passy
Differential Revision: D14158223
fbshipit-source-id: d96d73b94a8a442f3b60f656bc573b328c5500ad
Summary: This diff moves the state to PersistedState
Reviewed By: danielbuechele
Differential Revision: D14126419
fbshipit-source-id: aaf5f035ddc7e64ad2602ae4b80c9901a20df144
Summary: Moved the fresco plugin folder to open source directory
Reviewed By: passy
Differential Revision: D14126407
fbshipit-source-id: 15b2d1698e18b951742ec37ca94642e6511094b0
Summary:
Started with upgrading electron from 3.0.0 to 4.0.5. This required a bunch of subsequent updates:
* upgrading `electron-builder` to latest version, because the old version couldn't build electron 4 apps.
* `appDir` is deprecated in builder config, `projectDir` is used instead, which we already had set, so its fine to just remove this ([see GitHub commit](a5e457163e)).
* upgrading `jest-runner/electron` because the old version couldn't run electron 4 tests.
* upgrading our custom dependency resolution to use electron 4.0.5, because the test runner still resolves to 2.0.8 ([see GitHub issue](https://github.com/facebook-atom/jest-electron-runner/issues/31)).
* updating `sandcastle.sh` to use the new cache files from D14131344.
* removing `package-lock.json` as is was causing warnings. We use `yarn` and `yarn.lock` anyways. This file must have been committed by accident.
* updating our check to only run one version of Flipper at a time to use the new electron API `app.requestSingleInstanceLock` as the old one was removed in electron 4.
* updating the snapshot test that checks App rendering, which changed a little due to the electron upgrade.
* upgrading flow-type definitions to `electron-v4.0.5.js` generated by [electron-flowtype-definitions](https://github.com/danielbuechele/electron-flowtype-definitions).
**PS: Best new feature in Electron 4: Copy&paste working in dev tools**
Reviewed By: jknoxville
Differential Revision: D14131360
fbshipit-source-id: d7ed9643875629a1fa1860bb61b11dd0c64112ab
Summary:
1. Added onSort() pass-through to ManagedTable which allows to handle sort order changes.
2. columnOrder now gets updated when the corresponding prop is changed indepedently from ref.
Reviewed By: danielbuechele
Differential Revision: D14147857
fbshipit-source-id: 03300629a3316a69be6b745810516966b8060aa6
Summary:
Logs were not collected in headless mode, because there was no subscriber listening to the logs. Now they are always stored, even if there is no subscriber. Actually this makes more sense even for the desktop UI, as subscribers could subscribe later.
The only reason this was working on the desktop app was because the log plugin automatically subscribed on launch.
This brings us to the actual question: If a message is logged in a forest and no one is around to read it, is it actually logged? 🤯
Reviewed By: passy
Differential Revision: D14149691
fbshipit-source-id: 212f1b0a69bd0cc8ae0ba3592f29ca90b7a5a475
Summary:
Currently when a client connects, if there's no matching device we know of, it emits an error.
The problem is that there's a race between clients connecting and devices being detected, if the client connects first, then we'll emit this error, even though the device is displayed shortly afterwards.
Fixing this by waiting 2 seconds after a client connects, and then if it's still connected, checking for a matching device. This should be enough time to make this error more reliable.
Reviewed By: passy
Differential Revision: D14126315
fbshipit-source-id: c81b2c6d9a6e0639a656d1a4d7a8f999f715bfbf
Summary: Soves the bug which caused the multiselection to clear off when one did ctrl+click
Reviewed By: jknoxville
Differential Revision: D14103906
fbshipit-source-id: 834d79e1c86a89b4d90c26e8db1850c1e8712a5d
Summary: This diff adds a helper function to serialize and deserialize javascript Objects
Reviewed By: danielbuechele
Differential Revision: D14101483
fbshipit-source-id: 3e1f37076ccc04b83cf7de5f10900e21e6474c1d
Summary: "Plugin not showing" was scrolling with the sidebar. Fixed that.
Reviewed By: jknoxville
Differential Revision: D14123853
fbshipit-source-id: 12358bb3bd040701bafa080c2bcc27d8c837ea39
Summary:
Users passing the GK `flipper_layout_inspector_new` will see then new layout inspector instead of the old one.
Hopefully users won't realize that they are on the new Layout Inspector. To make them aware of it, I added a bar on the bottom linking to the support group that is used for the GK.
Reviewed By: jknoxville
Differential Revision: D14100392
fbshipit-source-id: 78d561a3ab8ac035e5b439799c395901be086b1b