Commit Graph

311 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
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
Hilal Alsibai
82c2f0c68c Minor typo
Summary: Minor typo

Reviewed By: passy

Differential Revision: D9393881

fbshipit-source-id: 252ed38f1532947a7a15b2149bd5da42d6e0e31d
2018-08-20 02:56:44 -07:00
Hilal Alsibai
dd3cb40010 Fix shared preference plugin display
Summary:
There seems to be an issue showing a ManagedTable within a Panel. The component was properly
receiving new changes etc, it just wasn't displaying due to a 0 height (I guess).

This diff fixes that + updates the layout so its not cramped.

Reviewed By: passy

Differential Revision: D9393882

fbshipit-source-id: a35f2a298106c4b2a48883822ef997e8499f1eec
2018-08-20 02:28:12 -07:00
Daniel Büchele
f4822143bd plugin reselection
Summary: When relaunching Flipper/refreshing it while developing, where was a case, where the App Client connected, before the device was registered in Flipper. In this case, we didn't select the previously selected plugin

Reviewed By: jknoxville

Differential Revision: D9359779

fbshipit-source-id: 9c6f8e6bf65a46dc84c9781242b23df0ed539810
2018-08-16 08:12:16 -07:00
Daniel Büchele
11ba553ab8 tracking for large frame drops
Summary:
`largeFrameDrops` are added to the usage tracking.
Similar to our other apps, we are considering a drop of 4 or more frames as a large frame drop. While a single frame drop might not be relevant to the user, large frame drops are a more relevant number to optimize for.

Reviewed By: passy

Differential Revision: D9358795

fbshipit-source-id: d9354695c816ba6c40676df6f3c6f3f070e28269
2018-08-16 05:12:27 -07:00
Anamaria Cotirlea
e51b8c0742 Add Hardware Details to CPU Info Plugin.
Summary: Added an additional field which contains hardware information regarding the chipset manufacturer and model.

Reviewed By: danielbuechele

Differential Revision: D9294547

fbshipit-source-id: 45c577475f156ee4a83140f506df161cd4ed4330
2018-08-15 02:57:18 -07:00
Daniel Büchele
6f2a7dcb05 clean up console
Summary: The console was pretty spammy. This fixes some issues that were logged and changes many log statements to `console.debug` which are not shown by default.

Reviewed By: passy

Differential Revision: D9303011

fbshipit-source-id: 1102f4f8814152a45f155cb43488a515c2d4eee4
2018-08-14 03:12:54 -07:00
Daniel Büchele
eb316be4e4 fixing tracking metrics
Summary:
- fixing dropped frames calculation
- fixing plugin activation time

Reviewed By: passy

Differential Revision: D9301759

fbshipit-source-id: 872e4d2edcafdbc67668f3d0b713dfbf55f068f5
2018-08-13 15:27:29 -07:00
Sara Valderrama
656044ce69 AX tree expands with main tree on search (cannot search ax tree yet)
Summary: AX tree will now stay in sync with the main tree when searching. Also allows user to completely erase search (previously had left one letter highlighted in the tree even if entire query was erased).

Reviewed By: danielbuechele

Differential Revision: D9276721

fbshipit-source-id: 5272bb9cf3400ad3eb9d16bf438b0e5d4b551c6a
2018-08-13 13:28:10 -07:00
Aaron Brady
b552dc6f52 Make WindowsDevice for Sonar
Summary:
This diff adds the ability for a windows desktop app to be a selectable device for Sonar.

just to over-communicate what I'm thinking regarding the logging: windows system logs don't have a lot of valuable information in my experience, and there is a ton of garbage, but there is probably a way to tap into that if we want.

however, I was thinking that redirecting stderr/stdout from every connected process would be useful. i.e. OVRServer could register a log plugin and it would write to the device's log output. not sure if this would be better than just having a logger plugin. This is probably a pretty naive question and this probably isn't the place to have this conversation...but here we are :)

Reviewed By: jknoxville

Differential Revision: D8861986

fbshipit-source-id: f6ccba28729692ae4566dd24302268ad54d437eb
2018-08-13 11:29:59 -07:00
Aaron Brady
1a7ef4fc85 Generalize client OS filtering by device and move logic to Device class itself
Summary: Adding support for a WindowsDevice (in following diff) that relies on this behavior, also seems reasonable that the logic for what client os' a device supports should be in the device class.

Reviewed By: jknoxville

Differential Revision: D8861698

fbshipit-source-id: 2907f616baa04eb71a9e4ef3b6704980acbafaf5
2018-08-13 11:29:59 -07:00
Sara Valderrama
bf863c3922 Logging added for ax mode and updated to fix console warnings
Summary: Added logging for accessibility functionality (both usage and performance). Fix to prevent trackTimeSince calls from not matching up to the correct marks. Fix to prevent recursive onElementExpanded calls from mismatching also.

Reviewed By: danielbuechele

Differential Revision: D9229790

fbshipit-source-id: d20f08719d2c4f9a35c9c71a492619ce5538d204
2018-08-10 14:57:30 -07:00
Daniel Büchele
8b8ffaa7a0 missing UI renames
Summary: Rename app title and update notification to "Flipper"

Reviewed By: passy

Differential Revision: D9270088

fbshipit-source-id: 4e49e8d553fdd6b98da599be3ce18b4daf412cb6
2018-08-10 09:57:38 -07:00
Daniel Büchele
faf8afe9cd Track plugin activation time
Summary: Track the time from when the plugin is selected until its `init()` function finishes.

Reviewed By: passy

Differential Revision: D9239750

fbshipit-source-id: 569f236c9d58f70548f1ba6bf31a96047dcc8245
2018-08-10 09:41:47 -07:00
Daniel Büchele
a9b8c3d2c9 startup time tracking
Summary: Adds tracking from opening the application to the interface being shown.

Reviewed By: passy

Differential Revision: D9239037

fbshipit-source-id: eba60a9e839f9cc2b7a3c8706c6b9d63acb854b4
2018-08-10 09:13:27 -07:00
Daniel Büchele
2b98f05d03 add tracking for dropped frames
Summary: Adding dropped frames counter to usage events. This will allow us to track performance improvements.

Reviewed By: passy

Differential Revision: D9238608

fbshipit-source-id: d9adbb0ed72aaf13802f5eef39606970b64c8e36
2018-08-10 09:13:27 -07:00
Daniel Büchele
aace545ba6 move WelcomeScreen
Summary: The sidebar is now shown, even if no device is connected. This prevents the jumping layout when Flipper launches, but still has not connected to devices.

Reviewed By: passy

Differential Revision: D9263892

fbshipit-source-id: d5b96a8619393ee4002863a83d9024f00c6cb396
2018-08-10 08:57:09 -07:00
Daniel Büchele
7107efcc88 catch setFeedURL for non-codesigned apps
Summary: see title

Reviewed By: jknoxville

Differential Revision: D9264748

fbshipit-source-id: 6675a27d899361e12dd752eb5feea0f85c5c8d07
2018-08-10 08:57:09 -07:00
John Knox
286a88e3f2 Grammar updates in welcome screen
Summary: Pull Request resolved: https://github.com/facebook/flipper/pull/219

Reviewed By: passy

Differential Revision: D9239245

Pulled By: jknoxville

fbshipit-source-id: 5715738db5b7edbf8f5757447bd562f53d942b99
2018-08-09 07:27:50 -07:00
Sara Valderrama
047b6ed7b7 Expand AX tree when clicking-to-inspect
Summary: Adds expanding functionality to ax tree when click-to-inspect is used. Highlight/selection priority is given to the ax tree if in ax mode and the main tree otherwise.

Reviewed By: danielbuechele

Differential Revision: D9206028

fbshipit-source-id: 364b3cfc2e68dbce6006c36002353295aa7cdd07
2018-08-08 09:11:55 -07:00
Sara Valderrama
c07d8c14a4 Add icon to show which elements in ax tree are talkback-focusable
Summary: Puts an accessibility icon next to any elements in the ax tree that may be focused on when talkback is running to show that they are "accessibility-focusable". When any sidebar values are changed, the icon will show up/disappear accordingly.

Reviewed By: danielbuechele

Differential Revision: D9171781

fbshipit-source-id: f3b42624988aaef22040ac3325d745a12f0622db
2018-08-07 09:42:27 -07:00
Sara Valderrama
1fb2c4ee76 Add focus option to context menu in the accessibility tree
Summary: Allow user to open the context menu on an element in the ax tree and request accessibility focus to that element. If the element is focusable (and talkback or another accessibility service is running), accessibility focus will change to that element, if not, it will not change anything.

Differential Revision: D9162382

fbshipit-source-id: 5dda9b87a2cc6eba4130e3feee978b5fa38ac9f1
2018-08-07 09:42:27 -07:00
John Knox
f73c28ba6b Prepare desktop app for requestResponse CSR change
Summary:
[Step 1 of a protocol change between desktop app and flipper agent]

The flipper agent periodically tries to connect.
When it doesn't have the required certs, instead of trying to connect, it requests them from the desktop.
After requesting, it just continues the loop, trying to request.

The problem with that is
a) the desktop can take longer than one cycle to generate and provide the certs, meaning the agent will make overlapping requests, causing confusion and it to take longer than necessary.
b) the desktop can take less time than a retry cycle, but the agent will still wait before trying to connect.

Fixing a) by making the agent wait for a response from the desktop before continuing attempting to reconnect.
This means on the next connection attempt, it's guaranteed that the desktop is finished processing the CSR.

b) remains unfixed for now, but can be dealt with separately.

This is step 1 which adds an extra responder to the desktop app. It won't change anything until the agent starts
sending requestResponse messages instead of fireAndForgets. The plan is to leave this in place for a while to give users time to update, after that, we'll roll out the change to the agent.

Reviewed By: passy

Differential Revision: D9179392

fbshipit-source-id: 9a8021253dcd28c15cceeec23630a67aec219fd5
2018-08-07 06:41:38 -07:00
Pascal Hartig
b8c568e3e4 Fix avd device name resolution with GNU netcat
Summary:
Device connection didn't work on Linux due to netcat behaving differently.
I also played around with the `nc` and `node-netcat` packages, but they would
either crash the node stack or fail to compile with Babel. Oh glorious
JavaScript world.

Reviewed By: danielbuechele

Differential Revision: D9194591

fbshipit-source-id: 58e5b8d6b4a66e791e750de2f1449dcb8fc338ae
2018-08-07 06:12:03 -07:00
Sara Valderrama
fc7f949daf Click to inspect works with TalkBack
Summary: Allow click to inspect to work when Talkback is running (normal tree expands as usual although ax tree doesn't expand yet). Override onHover of Touchoverlay and onRequestSendAccessibilityEvent in viewRoot to prevent talkback focus when in Click to Inspect mode. Also update layout inspector to persist isSearchActive to prevent build up of TouchOverlayViews when navigating between plugins (which happened if leaving the layout inspector while in Click to Inspect mode).

Reviewed By: danielbuechele

Differential Revision: D9153446

fbshipit-source-id: f76982e8f8cea1e7b7e4c6b9bf73632d101222ef
2018-08-06 16:54:20 -07:00
Daniel Büchele
134a0d96c5 renaming app to Flipper
Summary: rename all visible references of Sonar to Flipper. Changes endpoint URLs to the new repo address.

Reviewed By: passy

Differential Revision: D9082100

fbshipit-source-id: 2ab8b680a19c23d80050e8e768379c29d66acfca
2018-08-06 10:44:33 -07:00
Phoomraphee Luenam
2c48afdf04 Implement AlignmentMode in layoutplugin
Summary:
Add a Button to toggle alignment lines on Sonar interface.

Call sonar plugin in java, sending isAlignmentMode flag.

Changed API for setHighlighted to include alignment mode flag.

Button design to be added in future diffs by @[100003260904633:maximg]

Reviewed By: danielbuechele

Differential Revision: D9123749

fbshipit-source-id: 01c299f299be30dbb695bfb1d8007d63c27643d5
2018-08-06 07:41:48 -07:00
Daniel Büchele
764ad440cb Make sidebar scrollable
Summary: Sidebar is now scrollable, when showing too many plugins.

Reviewed By: jknoxville

Differential Revision: D9179312

fbshipit-source-id: bfcd4655a0fbbe91424b88378db3713e68e2cb7f
2018-08-06 06:27:18 -07:00
Daniel Büchele
de800fee37 check for action type in application reducer
Summary: Previously, accidentally all action payloads have been written to the application reducer, because it didn't check the action type. Now, this diff makes sure, the application reducer checks for the action type and only writes actions to the store which are meant for the reducer.

Reviewed By: jknoxville

Differential Revision: D9179305

fbshipit-source-id: 833776468ed32e0385058571130e81eff06c370e
2018-08-06 06:27:18 -07:00
Daniel Büchele
5fd1ebba2e show sidebar in logs plugin
Summary: Logs plugin was not showing sidebar after switching to new sidebar API.

Reviewed By: jknoxville

Differential Revision: D9179249

fbshipit-source-id: 922be402dbbb1096343489f6027cd543010b694f
2018-08-06 06:27:18 -07:00
Daniel Büchele
1b3e3468a3 fix scrollbars in logs
Summary: Some columns in logs plugin where showing scrollbars since the update to electron 3. This hides scrollbars on all columns

Reviewed By: passy

Differential Revision: D9179242

fbshipit-source-id: bdf2e1a6f77d2a7e25cb34792b980afe7571e643
2018-08-06 06:27:17 -07:00
John Knox
5c81aefe9a Use unlinkSync instead of unlink
Summary:
fs.unlink() requires a callback and we weren't passing one.
Using synchronous version instead.

Reviewed By: passy

Differential Revision: D9148214

fbshipit-source-id: 8a3c1103d93fced5e3c25c38775badb72c23e48a
2018-08-03 08:57:49 -07:00