Skip to content

Add JVM tests for the Android pull model plumbing (#57583)#57583

Open
bartlomiejbloniarz wants to merge 4 commits into
mainfrom
export-D112309051
Open

Add JVM tests for the Android pull model plumbing (#57583)#57583
bartlomiejbloniarz wants to merge 4 commits into
mainfrom
export-D112309051

Conversation

@bartlomiejbloniarz

@bartlomiejbloniarz bartlomiejbloniarz commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Summary:

Robolectric tests for the notification path: a notification pulls synchronously on the UI thread; one pull item is enqueued per notification and dispatched in order (redundant pulls no-op in C++); no binding is a clean no-op. Adds ShadowFabricUIManagerBinding and ShadowPerformanceTracer shadows.

Changelog:

[Internal] - Add JVM tests for the Android pull-model plumbing

Reviewed By: cortinico

Differential Revision: D112309051

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Jul 16, 2026
@facebook-github-tools facebook-github-tools Bot added p: Software Mansion Partner: Software Mansion Partner p: Facebook Partner: Facebook labels Jul 16, 2026
@meta-codesync

meta-codesync Bot commented Jul 16, 2026

Copy link
Copy Markdown

@bartlomiejbloniarz has exported this pull request. If you are a Meta employee, you can view the originating Diff in D112309051.

@cortinico cortinico left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review automatically exported from Phabricator review in Meta.

@meta-codesync meta-codesync Bot changed the title Add JVM tests for the Android pull model plumbing Add JVM tests for the Android pull model plumbing (#57583) Jul 24, 2026
bartlomiejbloniarz pushed a commit that referenced this pull request Jul 24, 2026
Summary:
Pull Request resolved: #57583

Robolectric tests for the notification path: a notification pulls synchronously on the UI thread; one pull item is enqueued per notification and dispatched in order (redundant pulls no-op in C++); no binding is a clean no-op. Adds `ShadowFabricUIManagerBinding` and `ShadowPerformanceTracer` shadows.

## Changelog:
[Internal] - Add JVM tests for the Android pull-model plumbing

Reviewed By: cortinico

Differential Revision: D112309051
bartlomiejbloniarz pushed a commit that referenced this pull request Jul 24, 2026
Summary:
Pull Request resolved: #57583

Robolectric tests for the notification path: a notification pulls synchronously on the UI thread; one pull item is enqueued per notification and dispatched in order (redundant pulls no-op in C++); no binding is a clean no-op. Adds `ShadowFabricUIManagerBinding` and `ShadowPerformanceTracer` shadows.

## Changelog:
[Internal] - Add JVM tests for the Android pull-model plumbing

Reviewed By: cortinico

Differential Revision: D112309051
Bartlomiej Bloniarz and others added 3 commits July 24, 2026 05:42
Summary:
Adds the `enableMountingCoordinatorPullModelAndroid` experiment flag (default off) that gates the Android pull-model mounting migration. Config entry plus regenerated accessors only — no behavior change.

## Changelog:
[Android] [Added] - Add `enableMountingCoordinatorPullModelAndroid` feature flag

Differential Revision: D112309049
Summary:
Java side of the pull model — dead code until the C++ wiring lands:
- `PullTransactionMountItem`: asks C++ (via `FabricUIManagerBinding.pullAndExecuteTransaction`) to pull the surface's pending transaction and apply it synchronously on the UI thread.
- `FabricUIManager.onTransactionAvailable` (JNI entry): enqueues a `PullTransactionMountItem`.
- `FabricUIManagerBinding.pullAndExecuteTransaction`: extern declaration.

One item is enqueued per notification, mirroring iOS; redundant items no-op in C++.

## Changelog:
[Android] [Added] - Add inert Java plumbing (`PullTransactionMountItem`, `FabricUIManager.onTransactionAvailable`) for the pull model

Differential Revision: D112309050
Summary:
Pull Request resolved: #57579

Makes `enableMountingCoordinatorPullModelAndroid` functional. With the flag on, the commit thread only signals transaction availability and the UI thread pulls and applies at mount time (matching iOS/macOS); with the flag off (default), behavior is byte-for-byte identical.
- `schedulerShouldRenderTransactions`: notifies via JNI (`FabricMountingManager::onTransactionAvailable`) instead of pulling and building the batch.
- `schedulerDidFinishTransaction`: no-op under the pull model.
- `FabricUIManagerBinding::pullAndExecuteTransaction` (new JNI method): pulls the surface's transaction on the UI thread and runs `executeMount`.
- `FabricMountingManager::executeMount`: gains a `synchronous` mode that executes the batch directly on the UI thread.
- The accumulation sites remain gated on `enableAccumulatedUpdatesInRawPropsAndroid`; the pull model requires that flag to be co-enabled, since a pull may collapse several commits into one diff and therefore needs complete accumulated rawProps.

## Changelog:
[Android] [Added] - Wire the pull-model mounting path in C++ behind `enableMountingCoordinatorPullModelAndroid`

Differential Revision: D112309053
bartlomiejbloniarz pushed a commit that referenced this pull request Jul 24, 2026
Summary:
Pull Request resolved: #57583

Robolectric tests for the notification path: a notification pulls synchronously on the UI thread; one pull item is enqueued per notification and dispatched in order (redundant pulls no-op in C++); no binding is a clean no-op. Adds `ShadowFabricUIManagerBinding` and `ShadowPerformanceTracer` shadows.

## Changelog:
[Internal] - Add JVM tests for the Android pull-model plumbing

Reviewed By: cortinico

Differential Revision: D112309051
Summary:
Pull Request resolved: #57583

Robolectric tests for the notification path: a notification pulls synchronously on the UI thread; one pull item is enqueued per notification and dispatched in order (redundant pulls no-op in C++); no binding is a clean no-op. Adds `ShadowFabricUIManagerBinding` and `ShadowPerformanceTracer` shadows.

## Changelog:
[Internal] - Add JVM tests for the Android pull-model plumbing

Reviewed By: cortinico

Differential Revision: D112309051
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. meta-exported p: Facebook Partner: Facebook p: Software Mansion Partner: Software Mansion Partner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants