Skip to content

[pull] androidx-main from androidx:androidx-main - #1449

Merged
pull[bot] merged 13 commits into
MaxMood96:androidx-mainfrom
androidx:androidx-main
Sep 10, 2026
Merged

[pull] androidx-main from androidx:androidx-main#1449
pull[bot] merged 13 commits into
MaxMood96:androidx-mainfrom
androidx:androidx-main

Conversation

@pull

@pull pull Bot commented Sep 10, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

luizgrp and others added 13 commits September 2, 2026 09:01
When ACTION_DOWN occurs on a component with a clickable modifier, RemoteComposeView previously requested disallowInterceptTouchEvent(true) unconditionally on touchDown. This prevented host ViewGroups and scrollable containers from intercepting drag gestures that began on clickable Remote Compose elements.

This change checks whether the document has active applied touch operations (such as scroll or drag handlers) before requesting disallow intercept, allowing clickable components to propagate drag gestures to the host while preserving tap and click handling.

Bug: 514549600
Test: automated tests added.
Change-Id: I7dab1201451ef5ded6e3677fcf24fec0870baa72
Relnote: "Added `@FloatRange` to `BlurStop.fraction`, changed the default `fallOffRadius` in `BlurRadiusSpec.radialGradient` to `Dp.Unspecified`, renamed `Modifier.blur`'s `radius` parameter to `blurRadiusSpec`, and renamed `BlurScope.radius` to `blurRadiusSpec`."
Test: BlurRadiusSpecTest.kt, BlurTest.kt
Fixes: 556335791
Change-Id: I91dbc0667b6de356e44b9210ee2c553eb164b28b
Modifier.blur operates purely within the graphics layer and draw phase without triggering recompositions, meaning Recomposer.hasPendingWork is false throughout progressive blur animations. Consequently, launchIdlenessTracking continuously reported COMPOSE-IDLE, causing UiAutomator to immediately return from idleness waits and cancel/stop the trace before SurfaceFlinger could latch and present frames (resulting in 'Observed no expect/actual slices in trace').

Now it is tracking the animation's running state directly in ProgressiveBlurActivity so that idleness tracking reports COMPOSE-BUSY during the animation, and ensuring ProgressiveBlurBenchmark waits for target readiness in setupBlock.

Test: ProgressiveBlurBenchmark
Test: ProgressiveBlurBenchmark (microbenchmark)
Fixes: 552208104
Change-Id: I58240ee8925d92469ed71576e0dff0ed25b9ee81
`IdlingResourceRegistry` previously polled idling resources using a coroutine launched on `Dispatchers.Main` with `delay(20)`. When a test overrides `Dispatchers.Main` with a `TestDispatcher`, `delay()` uses virtual time instead of real clock time. Because the test thread is blocked waiting for Compose idling, virtual time never advances, causing `delay(20)` to suspend indefinitely and time out with `ComposeNotIdleException`.

To fix this, pass an async main looper `Handler` dispatcher to `IdlingResourceRegistry` so that polling always uses the Android main looper clock regardless of `Dispatchers.setMain`.

Fixes: 322064243
Fixes: 385170168
Test: IdlingResourceRegistryTest
Test: ComposeIdlingResourceTest
Change-Id: Id3a54fbf6172b4f25d886982446ecff8119091e5
When PreviewView has not yet undergone its initial layout traversal,
PreviewView.getViewPort() returns null (width=0, height=0), causing
CameraController.getBoundSessionConfig() to abort with
"PreviewView not attached to CameraController".

Furthermore, if PreviewView layout occurs before the window is attached
to a display, or if subsequent layout passes maintain the same view
bounds, attachToControllerIfReady() was never retried. As a result,
CameraController remained detached and the camera was never opened.

This change:
1. Tracks attachment state in PreviewView via mIsAttachedToController.
2. Automatically retries attaching PreviewView to CameraController in
   mOnLayoutChangeListener and onLayout() whenever layout completes.
3. Retries attachment in DisplayRotationListener when display is
   added or changed if not yet attached.
4. Resets attachment state on setController() and
   onDetachedFromWindow().
5. Adds unit tests verifying PreviewView auto-attaches upon layout.

Bug: 558615671
Test: ./gradlew 📷camera-view:test
Test: ./gradlew 📷integration-tests:camera-testapp-view:assembleDebugAndroidTest
Change-Id: I63550fe86a7337b7bcc33695e03afffab6a2da09
…rame

In DatePickerContent, nextAvailable and previousAvailable were read from
monthsListState.canScrollForward and monthsListState.canScrollBackward.
Because LazyListState initializes these properties to false prior to
layout, the navigation buttons composed as disabled on frame 1 and
scheduled an immediate recomposition on frame 2 when layout mutated
canScrollForward to true.

Computes month navigation availability directly from monthIndex and
numberOfMonthsInRange(yearRange) in DatePickerContent, removing the
layout-phase state mutation and allowing DatePicker to resolve in 1 frame.

Migrates DatePickerBenchmark and DateRangePickerBenchmark to standard
benchmarkToFirstPixel, benchmarkFirstMeasure, benchmarkFirstLayout, and
benchmarkFirstDraw APIs, and deletes MaterialBenchmarkExtensions.kt.

Fixes: 470062881
Test: ./gradlew :compose:material3:material3:connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=androidx.compose.material3.DatePickerTest
Test: ./gradlew :compose:material3:benchmark:connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=androidx.compose.material3.benchmark.DatePickerBenchmark
Relnote: "`DatePicker` now resolves in 1 frame by computing month navigation availability directly from the displayed month index."
Change-Id: I08db7973b21ec076f76456926a35d6f15ffdb401
Introduces the SuppressStatusBar helper composable to handle status
bar suppression across full-screen components.

When inside an AppScaffold, it registers a suppression screen with the
scaffold state to coordinate status bar visibility with underlying screens.
Outside of an AppScaffold, it falls back to hard-hiding the status bar on
the window via StatusBarOrchestrator, restoring initial state on disposal.

Updates Dialog, Stepper, TimePicker, and DatePicker to use SuppressStatusBar.

Bug: 532114833
Test: StatusBarTest
Relnote: "Added SuppressStatusBar helper composable to suppress the system status bar for full-screen and overlay components."
TAG=agy
CONV=8d182699-e1c3-4690-9b87-c2932c98c542
Change-Id: I387c3fe3d80e0f94214e678e302dd185b6f1af73
* changes:
  Fix ProgressiveBlurBenchmark frame timing capture
  Address ProgressiveBlur API feedback
@pull pull Bot locked and limited conversation to collaborators Sep 10, 2026
@pull pull Bot added the ⤵️ pull label Sep 10, 2026
@pull
pull Bot merged commit 771febe into MaxMood96:androidx-main Sep 10, 2026
2 of 4 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants