Commit Graph

13 Commits

Author SHA1 Message Date
Valentin Shergin f8e5423c89 Fabric: Make views with accessibilityElementsHidden form stacking context
Summary:
`accessibilityElementsHidden` property hides a subtree starting from the node with this prop from VoiceOver and TalkBack, so the node with this prop should form the stacking context (otherwise the children will mount as siblings and the property will not have an effect).

Changelog: [Internal] Fabric-specific internal change.

Reviewed By: JoshuaGross

Differential Revision: D23202220

fbshipit-source-id: d87dfab5f791219551c1eb90cdf3b3fa86f9c51f
2020-08-19 12:45:30 -07:00
Samuel Susla b9c6e05ad5 Add comment to YogaLayoutableShadowNode::layout
Summary: Changelog: [internal]

Reviewed By: mdvacca

Differential Revision: D23075863

fbshipit-source-id: a80946e26ba6041a864efe45cefd7f43c3728a12
2020-08-13 05:56:50 -07:00
Samuel Susla 43b2c6dd85 Fix conditions to fire onLayout event
Summary:
Changelog: [Internal]

# Problem

## Step 1
JS clones a node that has size {100, 100} and changes props that cause the node to increase size to {200, 200}. JS holds pointer to this node.

Now, the size (stored in LayoutableShadowNode.layoutMetrics_) changes after Yoga layout is triggered.

However, the node gets cloned inside State Reconciliation before Yoga layout phase. The JS pointer points to a node with size {100, 100}, not to a node with size {200, 200}.

## Step 2

Again, JS clones node (with old reference, therefore gets old layoutMetrics_ with size {100, 100}) and it changes props that cause the node to decrease its size back to {100, 100}.
We go all the way to Yoga layout and looking for nodes that have been affected by the node. The node, affected by the layout because it went from {200, 200} to {100, 100}, will be evaluated as not affected. This causes onLayout event to not be fired.

# Fix
We can safely remove the frame equality check (please see below). This can be done because we already check for equality before dispatching onLayout. It happens here:

https://www.internalfb.com/intern/diffusion/FBS/browsefile/master/xplat/js/react-native-github/ReactCommon/react/renderer/components/view/ViewEventEmitter.cpp?commit=881853eb0c42625fd0812bd2652bf36fcbd614ee&lines=43

As far as I know, `affectedNodes` isn't used for anything else besides dispatching onLayout.

# Discussion

This problem manifests itself only when a node has two different sizes that it flips between. To better understand this, please watch the video in Test plan labelled "before". Notice how the text has 2 different values that it flips between.

Here is a code that was affected by it https://fburl.com/diffusion/3hwo0iy5
If you inspect it closely, you will notice that it depends on `onLayout` to return correct value to calculate offset from left.

Reviewed By: JoshuaGross

Differential Revision: D22999891

fbshipit-source-id: e2d0f5771c1bf3cd788e5e9da0155c92e33fb84e
2020-08-10 05:11:29 -07:00
Jiayan Zhuang 3f405dcbd2 Add support for accessibilityRole = "switch"
Summary:
Changelog:
[Internal] - Add support for accessibilityRole = "switch"

Reviewed By: sammy-SC

Differential Revision: D22906500

fbshipit-source-id: 81dfbfd56a24c89ffedc0fde5a63f7bdeed0c5db
2020-08-06 13:16:48 -07:00
Jiayan Zhuang 6fa9dbabfc Update accessibilityState prop
Summary:
Changelog:
[Internal] - Add default value for accessibilityState "checked" and handle unhandled states.

It is also work for the case that accessibilityRole = "switch" and accessibilityState is set.

Reviewed By: sammy-SC

Differential Revision: D22914427

fbshipit-source-id: 4767a21f3bd109019b57bc09918758a38fbdea93
2020-08-06 12:14:38 -07:00
David Vacca 8cfd329e9f Extend 'mounting' module to compile in OSS
Summary:
This diff extends the 'mounting' module to compile in OSS

changelog: [internal] internal

Reviewed By: JoshuaGross

Differential Revision: D22918205

fbshipit-source-id: 424e33c827cb03befaaed32897a19cd6eff2dd71
2020-08-06 11:53:04 -07:00
David Vacca ba195e878e Extend component/unimplementedview to compils in OSS
Summary:
This diff extends component/unimplementedview to compils in OSS

changelog: [internal] internal

Reviewed By: JoshuaGross

Differential Revision: D22918204

fbshipit-source-id: 85b2338b6135aadcdd00bb798f6aaa2fdf03d81e
2020-08-06 11:53:03 -07:00
David Vacca 5d5524b266 Extend react/renderer/component/view module to compile in OSS
Summary:
This diff extends react/renderer/component/view module to compile in OSS

changelog: [internal] internal

Reviewed By: JoshuaGross

Differential Revision: D22918210

fbshipit-source-id: b92e8701ac6ec93ba8f2cdbfdcc5e34cade0f218
2020-08-06 11:53:03 -07:00
David Vacca d34f3638cc Create Android OSS build system for react/renderer/components/view module
Summary:
This diff creates the Android OSS build system for the module react/renderer/components/view
As part of this diff I had to remove inner folders of react/renderer/components/view

changelog: [internal] internal

Reviewed By: fkgozali

Differential Revision: D22881703

fbshipit-source-id: afb56b4f7660d000d2abb8ade0ccb60d1adfb371
2020-08-06 00:09:11 -07:00
Samuel Susla b179c4bebe Fix incorrect padding in SafeAreaView
Summary:
Changelog: [Internal]

`SafeAreaViewShadowNode` we made incorrect assumption that setting `style` on YGNode and then copying it, always copies the style.

This is incorrect, style is only copied once `YGNodeCalculateLayout` has been called on either the node or its parent.

Reviewed By: JoshuaGross

Differential Revision: D22945677

fbshipit-source-id: 9c063c2dfe4d2390cf2fd10a96d2de418fa69376
2020-08-05 11:39:25 -07:00
Samuel Susla 7a1d1bc355 Fix a condition in forms stacking context evaluation
Summary: Changelog: [internal]

Reviewed By: cpojer

Differential Revision: D22921257

fbshipit-source-id: cff6ca629ec9c7e5c003a58e87c5051178587892
2020-08-04 07:22:52 -07:00
Samuel Susla 709a3a0ceb Backout "[RN] Fabric: Enable zIndex only for non-static positioned views"
Summary:
Changelog: [internal]

Backout D22098586 (https://github.com/facebook/react-native/commit/476ab7481e23070fc4db3f584e45a95eb2f9f7e1) because of issues like D22843134 (https://github.com/facebook/react-native/commit/799654b1058f6685c052f4e300c6e3ab81005549).

[428](https://fburl.com/codesearch/0dyyakf5) places with zIndex and most of them do not have position defined. This could cause views to be overlapped.

Reviewed By: JoshuaGross

Differential Revision: D22890669

fbshipit-source-id: 200d1cbe2a4c27e2a0445b315868f37418ab1d9b
2020-08-02 08:14:17 -07:00
David Vacca 3093010ea5 move fabric to ReactCommon/react/renderer
Summary:
This diff moves fabric C++ code from ReactCommon/fabric to ReactCommon/react/renderer
As part of this diff I also refactored components, codegen and callsites on CatalystApp, FB4A and venice

Script: P137350694

changelog: [internal] internal refactor

Reviewed By: fkgozali

Differential Revision: D22852139

fbshipit-source-id: f85310ba858b6afd81abfd9cbe6d70b28eca7415
2020-07-31 13:34:29 -07:00