Skip to content

Conversation

@eymar
Copy link
Member

@eymar eymar commented Mar 29, 2021

Example:

@Composable fun <T> Foo(attrs: Attr<T>.() -> Unit = {}) {...}

…osable functions

Example:
@composable fun <T> Foo(attrs: Attr<T>.() -> Unit = {}) {...}

Change-Id: I49becd1903ff8a53244601922476c2b33e48a6f4
@eymar eymar merged commit 67609d7 into compose-web-main Mar 29, 2021
@eymar eymar deleted the karpovich/fix_typed_params_in_extension_lambdas branch March 29, 2021 09:52
eymar pushed a commit that referenced this pull request Apr 26, 2021
Now when a worker process needs a copy of a file, instead of copying the file directly to the worker's work directory, what happens is:

1. If the file has not already been copied to a worker-specific cache directory (or the cached copy has been modified more recently than it was created), the file gets copied into that cache directory
2. The worker is provided with a hardlink to the file in the cache directory

This allows step #1 to be skipped most of the time, because in most cases the file is already in the cache and is usually unmodified from the original

This reduces the load on the drive, making the system more responsive while running diff-filterer.py, and also potentially making diff-filterer.py slightly faster

This also means that if the worker modifies any copied files, those modifications don't overwrite the original files (only potentially the cache files, which can be corrected again later)

Bug: 129866415

Change-Id: I592be45d27df46da306ad457886b67bcbd00c6bd
dima-avdeev-jb pushed a commit that referenced this pull request Dec 30, 2022
…fy-main

UIKit sample, simplify fun main()
igordmn pushed a commit that referenced this pull request May 25, 2023
Bug: 269390098
Test: build
Test: """Test manually for two device connection. Install the app
    on 2 devices. On device #1, run the app and on Advertiser page
    enable flag Device Name (for easier finding) and connectable.
    Start advertising and start Gatt Server. On device #2, scan for
    devices and find device #1. Press `Connect` to connect and
    automatically discover services of device #1 on device #2
    """
Change-Id: Ib61bbb32eb42ef11d544046abbc4284aa7928c32
igordmn pushed a commit that referenced this pull request Jul 18, 2023
Removes between 3-6 allocs per TextLayout including Int boxing. For
a popular Google app, this was the #1 contributor to Integer boxing
while users are scrolling lists and 3-4X number of cycles to next
largest contributor.

Test: Build + Unit tests.

Change-Id: I8bda981b2ba668b32678260906a29d527c51e09d
igordmn pushed a commit that referenced this pull request Jan 30, 2024
This CL adds a hoisted ScrollState to BasicTextField2 to enable horizontal and vertical scroll. Like the existing `BasicTextField`, BTF2 only supports single orientated scrolling. Single line configuration disables `softWrap` and enables horizontal scroll. Multi-line configuration does the exact opposite to enable vertical scroll.

Cursor is kept in visible area only when it's shown (focused, editable).

There is also a fix to clip test for `BasicTextField`. The previous test only looked at the area #4, but in fact it needs to check #2, #3, #4 for any spill from BasicTextField.

// BasicTextField is #1
// Wrapping box is all the area visible below
-----
|1|2|
-----
|3|4|
-----

Relnote: N/A
Test: :compose:foundation:foundation:cAT
Change-Id: Iccac198dec2d2908c4c51ddfaf40dcb05515ce70
MatkovIvan pushed a commit that referenced this pull request Oct 8, 2024
Icing has an internal total document limit of 2^22 (~4m). To ensure that
one bad actor cannot deny indexing to another package, AppSearch rations
this document id space.

Under the previous behavior all packages had a fixed document limit. In
the various backends:
- local-storage: INT_MAX
- platform-storage: 80_000 (20_000 before Android V)
- play-services-storage: 80_000

Under this behavior, there will be no limits enforced until the index
reaches a certain threshold. Once this limit is reached, then all
packages will be limited to the previous document limit. The limit will
apply to previously indexed documents. The proposed behavior is:
- local-storage: limit enforcement begins at INT_MAX
- platform-storage: limit enforcement begins at 2^21 (~2m) documents
- play-services-storage: limit enforcement begins at 2^21 (~2m) documents

The original limit was computed to support ~52 apps indexing up to the
limit (4,194,304 docs / 80,000 docs/app = 52.4 max indexing apps).

Regarding the per-package limit, we could do one of two things:
1. Keep the per-package limit at 80,000. Because we are proposing to
   only enforce this limit when 2^21 docs have been indexed, this means
   that one app could theoretically index 2^21 docs leaving only 2^21
   available document ids for other apps. At a limit of 80,000 per app,
   this means we would only be able to provide an absolute guarantee of
   up to 80,000 docs for 1 + (2,097,152 docs / 80,000 docs/app) = 27.2
   max indexing apps.
2. Reduce the per-package limit to 40,000. This would allow us to
   maintain the same number of guaranteed max indexing apps as before: 1
   + (2,097,152 / 40,000 docs/app) = 53.4 max indexing apps.

I would propose going with #1 - this allows to maintain guidance that is
consistent with previous guidance (that we would guarantee 80,000
documents) and it is extremely unlikely to ever come into effect.

Bug: 363301147
Test: ./gradlew appsearch:appsearch:build appsearch:appsearch-compiler:build appsearch:appsearch-local-storage:build appsearch:appsearch-platform-storage:build  icing:build icing:nativeLib:build appsearch:appsearch:connectedCheck appsearch:appsearch-local-storage:connectedCheck appsearch:appsearch-platform-storage:connectedCheck

Change-Id: Ia3bd2df2869028aa2286ae8d1dc9cfbac2543061
Schahen added a commit that referenced this pull request Oct 25, 2024
Schahen added a commit that referenced this pull request Oct 25, 2024
MatkovIvan pushed a commit that referenced this pull request Jul 14, 2025
This CL adds native multi-window support to the uiautomator library
primarily for enhancing large screen and desktop experience.
It provides new APIs to improve window searchability and testability.

Design: go/uiautomator-window-design
Bug: 425372420
Test: ./gradlew :test:uiautomator:i:t:connectedAndroidTest (UiWindowTest on phone, tablet and desktop)
Relnote: New APIs for desktop multi-window
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:951748bb9f202b98998a9b3e6f002a694cef3a62)
Merged-In: I359c4b3c36b1c20af4c50ccc3d2e7dbfeb0cd15b
Change-Id: I359c4b3c36b1c20af4c50ccc3d2e7dbfeb0cd15b
MatkovIvan pushed a commit that referenced this pull request Jul 14, 2025
Not all PDFs come from content:// URIs. A FileDescriptor based API
unblocks apps that download PDFs from web services or load PDFs from
Files in their private storage from using the libary. Drive is such
an app.

This API still accepts a URI:
1) As a unique identifier. Bound services produce unique IBinders for
unique Intents. It's critical we have some way to provide a unique
Intent per document, and setting the data field is a good way to
accomplish this.
2) PdfDocument exposes Uri in its API. This is potentially worth
reconsidering, but it's not terrible to keep in place given #1.

Relnote: Adds FileDescriptor API to PdfLoader
Test: ./gradlew :pdf:pdf-document-service:cAT
Change-Id: I60b8dfa37b4c3800392f2d14992375b9d2581f05
MatkovIvan pushed a commit that referenced this pull request Sep 30, 2025
Deciding TalkBack whether it should intercept RSB movtion events to
navigate a11y focus is based on the input focus. If the scrollable node
fail to acquire input focus, TalkBack would treat it that RSB motion
events could be used by the input focused node and then it doesn't
intercept RSB movetion events.

Therefore, if we want to navigate a11y focus by RSB, we need to request
input focus to the scrollable node which has CollectionInfo.

Node #1 at (l=0.0, t=0.0, r=119.0, b=456.0)px
 |-Node #2 at (l=0.0, t=0.0, r=119.0, b=456.0)px, Tag: 'scalingLazyColumn'
    |-Node #4 at (l=0.0, t=-22.0, r=119.0, b=478.0)px
      CollectionInfo = 'androidx.compose.ui.semantics.CollectionInfo@8d7827'
      Focused = 'true'
      ...

Bug: b/445332360
Test: Run wear.compose.integration-tests.demos
Change-Id: I6be3cd527a60eb95679889e4c86e8240530894b0
rock3r added a commit to rock3r/compose-multiplatform-core that referenced this pull request Nov 26, 2025
This fixes two issues with text context menus:

### 1. The menu should not show if it's empty
If the context menu has no items, it should not show.
This is easily achieved by only popping up the menu if
the items list is not empty.

### 2. The menu should not pop up "after the fact"
Once 1 is fixed, there is another issue that crops up:
the menu which was not popped up initially, becomes
visible as soon as there would be items in it. For
example, if no menu pops up in a `SelectionContainer`
if the user right-clicks an empty spot, but then does
a selection. Same for BTF, if the user types any text
in an initially-empty BTF after right clicking it.

This is done by explicitly closing the menu session if
it contains no items.

Note: JPopupContextMenuRepresentation works differently
and this only explicitly fixes JetBrains#1 for it. Due to it
being a completely different implementation, this does
not really suffer from JetBrains#2
rock3r added a commit to rock3r/compose-multiplatform-core that referenced this pull request Nov 26, 2025
This fixes two issues with text context menus:

### 1. The menu should not show if it's empty
If the context menu has no items, it should not show.
This is easily achieved by only popping up the menu if
the items list is not empty.

### 2. The menu should not pop up "after the fact"
Once 1 is fixed, there is another issue that crops up:
the menu which was not popped up initially, becomes
visible as soon as there would be items in it. For
example, if no menu pops up in a `SelectionContainer`
if the user right-clicks an empty spot, but then does
a selection. Same for BTF, if the user types any text
in an initially-empty BTF after right clicking it.

This is done by explicitly closing the menu session if
it contains no items.

Note: JPopupContextMenuRepresentation works differently
and this only explicitly fixes JetBrains#1 for it. Due to it
being a completely different implementation, this does
not really suffer from JetBrains#2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants