tree c60cf8fb1ae5ddc46c7593afef7d017025851a87
parent 202b4dc5824484481e74f6e4a381ec434c7a7e30
author Anton Hansson <hansson@google.com> 1696434855 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 1696434855 +0000

Update git submodules

* Update platform/superproject from branch 'master'
  to 053a87e40fb267e0c02aae034fbc404fcdf98ffd
  - Update git submodules
    
    * Update external/doclava from branch 'main'
      to 462a79f857eedba89aee7a5364df55f4ccf759f8
      - Merge "Make doclava support baselining of lint issues" into main
      - Make doclava support baselining of lint issues
        
        There are many existing issues in the docs. Before new errors can
        be forbidden, make it possible to allow pre-existing errors.
        
        The baseline support is very crude -- any mention of a file will allow
        all lint errors in that file. It's my hope to trim the baseline down
        quickly so that this won't be an issue.
        
        Bug: 217734059
        Test: in follow-up changes which enables errors and passes baselines
        Change-Id: I78174f66f9d5cd59511951a481072f54339eba11
        
  - Merge "Added dependencies" into main
  - Merge "Extend dump function to print db contents" into main
  - Merge "assign labels to merged_txt modules with defs" into main
  - Tradefed ()
    
    ** For tradefed version, open version.txt (go/tf-prebuilt-version) **
    
    Tradefed
    This build IS suitable for public release.
    
    Bug: 178523691
    Test: None
    
    Change-Id: I418b834dc80caa93cfaded5a3dc7aeb5ea1d15a5
    
  - Autoupdate of 2 submodules
    
    *frameworks/base updated to 90693766af2cf6ad057d0c8e08275c87022c6301
    Merge "Add support to configure double line clock in lockscreen [1/2]" into main
    *packages/apps/Settings updated to 3be411d513eea897df89bcbf7425b1b34eb06673
    Merge "Add support to configure double line clock in lockscreen [2/2]" into main
    
  - Merge remote-tracking branch 'aosp/upstream-master' into mymerge
    
    Test: Treehugger
    Change-Id: I76ce568a9a35676c4c62148f37bcc957c19af459
    
  - Merge "Fix broken @see/@link references controls" into main
  - Merge "allow writes to /sys/power/sync_on_suspend from init" into main
  - Compile libs for both archs
    
    Our test config says to run on both supported archs, so our APK
    needs to include libs for both archs too.
    
    Bug: 303059650
    Test: zipinfo CtsSdkExtensionsTestCases.apk | grep lib
    Change-Id: I1ab29d68f14460635663a83a877c33c536887894
    
  - allowProtect/denyProtect only get called with a 1-elem vector
    
    Test: TreeHugger
    Signed-off-by: Maciej Żenczykowski <maze@google.com>
    Change-Id: Id180765c6f924e4b13f72312c757360b0434b185
    
  - Merge "cts: fix android.net.cts.VpnServiceTest#testProtect_int flake" into main
  - Merge "Fix the broken links in javadoc" into main
  - Floss: Refactor DBus intf and only expose after interal API is ready
    
    This does 2 things.
    
    1. refactor the work of DBus interface registration to a separated
    struct, i.e. InterfaceManager.
    
    2. delay the DBus interface registration until the api is ready.
    
    The reason why (2) is needed is because in many implementations, our
    APIs assume the underlying libbluetooth API is ready when the DBus
    method is called. If we register the API to DBus before it is ready,
    there is a tiny window that clients could poke the API and cause crash
    or get an unexpected result of it.
    
    (1) is just to make implement (2) easier.
    
    Bug: 299431339
    Test: mma -j 32
    Test: verify adapter/media/battery interfaces are there via gdbus
    Test: perform mouse, kbd, headset CUJ on brya/skolas
    Tag: #floss
    Change-Id: If532032bf29b796e4fc46a68b90fa9ebc6a0756e
    
  - Merge "Use pragma WAL in db connections" into main
  - Merge "Ignore access to shell on adbd vsock_socket" into main
  - Merge "Enable more asserts in LegacyLocalesTest." into main
  - Merge "Refactoring recovery related code" into main
  - GraphChecker/Arena container cleanups
    
    While working in aosp/2769298 I saw these opportunities
    for cleanups.
    
    Change-Id: Ie6c95b5521c4a8cbd3963a034e210860fb0b4ef0
    
  - Merge "Update timestamp in Cronet Testing" into main
  - Merge "tp: allow RewriteAll function to deal with rewritten SqlSources" into main
  - Merge "tp: add support for SqlSource::Substr for rewritten SqlSources" into main
  - traced_relay: implement the relay service
    
    This CL implements the relay service as a new binary, traced_relay, for
    taking the place of traced in a guest VM and relaying the producer
    connections to the host tracing service. The relay service listen to the
    producer socket and connects to the "relay socket" to the host. Socket
    connections are opened in pairs. Trace data and control commands are
    relayed back and forth between the connection pair.
    
            tracing service
                   ▲    PERFETTO_PRODUCER_SOCK_NAME
     relay socket  │
                   ▼   PERFETTO_RELAY_SOCK_NAME (tcp or vsock)
            relay service
                   ▲   PERFETTO_PRODUCER_SOCK_NAME
    producer socket│
                   ▼   PERFETTO_PRODUCER_SOCK_NAME
              producers
    
    The relay socket is used only to connect to the host producer port. The
    consumer port isn't supported. Peer credentials (PID and UID) is sent in
    the wire_protocol proto by the relay service.
    
    Setup example:
    * Start traced with producer endpoint on localhost:10001:
      `PERFETTO_PRODUCER_SOCK_NAME=127.0.0.1:10001 traced`
    * Start the relay service that uses unix socket for local producers and
      localhost:10001 for relaying to the remote tracing service:
      `PERFETTO_RELAY_SOCK_NAME=127.0.0.1:10001 traced_relay`
    * Start traced_probes that connects to the unix socket to the relay
      service:
      `traced_probes`
    * Collect a trace using the default consumer socket.
    
    The trace data provided by traced_probes will go over the unix socket to
    the relay service, forwarded to localhost:10001 and then get to the
    tracing service.
    
    Bug: 284258446
    Test: Unit tests in a followup CL
    
    Change-Id: I3e13b5d69b0cb78b417ccd3cc1523901b2ebebdc
    
  - Fix broken @link/@see references in Cronet
    
    - Some symbols appear to have been renamed. Fix those
    - Some public API docs were referencing @SystemApi, change that to @code
    - ExperimentalHttpEngine doesn't appear to exist
    
    Bug: 303184203
    Test: m docs
    Change-Id: I28e9369989b0ecb597ebc0ec446017cb702d4bd8
    
  - Merge "Fix broken documentation in NfcAdapter" into main
  - Merge "Fix broken documentation in view.translation" into main
  - Merge "LeAudioTestApp: Split and present BIS, ENC, PA states" into main
  - Merge "Fix broken @see/@link references in textclassifier" into main
  - Merge "Fix broken @see/@link references in Bluetooth" into main
  - Merge "Remove lint-baseline in staticlibs" into main
  - Autoupdate of 2 submodules
    
    *build/make updated to f81405aab0972f62d9af44e682227a787da2e4e3
    Merge "Remove PRODUCT_PRODUCT_VNDK_VERSION from soong_config" into main
    *build/soong updated to ce12ea8f95257a18b693ae3205e63703eb577f89
    Merge "Generate product variants by default" into main
    
  - Move APTX_ADAPTIVE_LE and APTX_ADAPTVIE_LEX to configurable
    
    We should bring the capabilities from the configure file that the device
    could have its own capabilties.
    
    Bug: 302173270
    Test: atest VtsHalBluetoothAudioTargetTest
    Change-Id: I2cb5194acbe64d7d64cca9b245b26ca5fbac35d4
    
  - Merge "floss: Handle unaligned bt_property_t data" into main
  - Merge "Floss: Fix invalid handle detection in SCO connection complete hack" into main
  - Clean up unused param warnings cert facade
    
    Bug: 302317771
    Test: m .
    
    Change-Id: I52c8dc731b278421958ac4bc566ca0616906b9c5
    
  - Merge "Fix pylint error in bazel_mode.py" into main
  - Merge "Track denials from gmscore_app to read_policy" into main
  - kselftests: Add component to OWNERS file
    
    Test: N/A
    Change-Id: I670f44093d4a6b386f558ea8e368c469f99b6dd8
    Signed-off-by: Edward Liaw <edliaw@google.com>
    
  - Avoid device reset via incremental flashing
    
    Test: presubmit
    Bug: 302226963
    Change-Id: I3cb159ff1dde89f057c9b0739725526ab4833653
    
  - Merge changes from topic "am-365a2cd5e8544d448c6a360a3a2a5bfa" into main
    
    * changes:
      [automerger skipped] Merge "DO NOT MERGE: Remove DUN capability from VCN test networks" into android13-tests-dev am: c1726079d3 -s ours
      [automerger skipped] DO NOT MERGE: Remove DUN capability from VCN test networks am: e41544b0d8 -s ours
    
  - Merge "Fix pylint warning line-too-long in atest_main" into main
  - Merge "Allow searching captital package name" into main
  - Merge "Cleanup existing firewall rule on myUid before the test" into main
  - Merge "Find system and vendor images in target_files subdirectory" into main
  - Test ffcsr, fflags and frmcsr, fflags and frm with Csrrwi and Csrrw
    
    Existing tests were enough for interpreter, but lite translator
    introduces separate code path for immediates handling this we want to
    test both register and immediate versions of instructions that write to
    fcsr, fflags and frm.
    
    Bug: 301768414
    
    Test: m berberis_all
    
    Change-Id: I6e35f86fc88b8c6e81c5ea8f18d5ce2a6da335b0
    
  - sepolicy(apex): Create NFC apex
    
    Bug: 303286040
    Test: Compiles
    Change-Id: I6a0edcb29879880f18e96d7d7a9cb1b08be1dc1b
    
  - Temporarily disable RELEASE_EXPOSE_FLAGGED_API in next builds
    
    This change temporarily disables RELEASE_EXPOSE_FLAGGED_API in next
    release builds. The flag will be enabled again once it is determined if
    the culprit APIs are supposed to be flagged or the logic of the feature
    is incomplete.
    
    Test: m nothing
    Bug: 303318940
    Change-Id: Ib040a956933fa296dff4ee6e2e8da866bfa2e7d5
    
  - Merge "Create a filegroup for versioner dependencies" into main
  - Roll ANGLE from 2c0f9d20f699 to 1eccf863d302 (34 revisions)
    
    https://chromium.googlesource.com/angle/angle.git/+log/2c0f9d20f699..1eccf863d302
    
    Please enable autosubmit on changes if possible when approving them.
    
    If this roll has caused a breakage, revert this CL and stop the roller
    using the controls here:
    https://autoroll.skia.org/r/angle-android-autoroll
    Please CC angle-team@google.com,rmistry@google.com,romanl@google.com on the revert to ensure that a human
    is aware of the problem.
    
    To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry
    
    To report a problem with the AutoRoller itself, please file a bug:
    https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
    
    Documentation for the AutoRoller is here:
    https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
    
    Test: Presubmit checks will test this change.
    Exempt-From-Owner-Approval: The autoroll bot does not require owner approval.
    Bug: b/285613719
    Bug: b/295208838
    Bug: b/295394803
    Bug: b/297901032
    Bug: b/300672851
    Bug: b/301999483
    Bug: b/302112423
    Bug: b/303065176
    Bug: b/303079476
    Bug: b/303089709
    Bug: b/303138134
    Bug: b/303276423
    Change-Id: Ia01babface5fc384187a4760b1948310423c07fa
    
  - Increase max_files from 100 -> 200
    
    We have several instances of people hitting the limit.
    200 is still reasonable.  Soon we should have metrics to let us
    know what users are seeing in their builds and we can use the right
    number.
    
    Test: adevice --help
    Test: atest
    Change-Id: I6bfac718023dc912cdecdeaa690514bbe0bdfb4c
    
  - Add missing <cassert> include
    
    Change-Id: Ic804a0cde9703105df5e930ee0a3c6e11666b79d
    
  - Merge changes Ib2667798,I9a1fa32b into main
    
    * changes:
      Symlink to rules_testing in soong integration test.
      Remove AconfigJavaHostTest from the allowlist.
    
  - Merge "BMS: Add active log in logcat" into main
  - libavb_rs: add validate_vbmeta_public_key() op
    
    Add support for the user callback op `validate_vbmeta_public_key()`.
    
    Bug: b/290110273
    Test: atest
    Change-Id: I6278ecc730793abed89548e99b4d4a4bbfc23d00
    
  - Autoupdate of 2 submodules
    
    *build/make updated to 842d96dc40c15af6e0583d6ccab2a3abde529909
    Merge "Clean out old rustc compiler intermediates" into main
    *build/soong updated to 2d1bf53169d2c846be4b189e16c82f0ed4e2de87
    Merge "Revert "Split Rust crate builds into compile and link phases."" into main
    
  - Merge "leaudio: Fix for invalid offloader behavior on localSink" into main
  - [build] Switch to use rust prebuilt toolchain
    
    Switch to use android rust prebuilt toolchain. The following changes are
    made:
    
    1. Fetch toolchain from android rust prebuilts instead of from rust
       distribution during workspace setup.
    2. Define dedicated toolchain targets for different platforms.
    3. Add rule for building rust sysroot libraries.
    
    Test: Build and run UEFI application.
    Bug: 302569430
    
    Change-Id: I199c226639b659f96a0909334907c680d6919c43
    
  - gfxstream: manually add debug logic
    
    It's hard to add via codegen.  Since it's just debug logic that's
    only needed temporarily add it by hand.  Anyone who re-generates
    the code will delete it, which is fine.
    
    BUG=298704840
    TEST=compile
    
    Change-Id: I7a19772069c369a925e158dcf45503420eac8ae4
    
  - Merge "Allow installing fake vendor packages" into main
  - Merge "IA2: Enum-ify bta::sys::tBTA_SYS_ID" into main
  - Add support for FCsr and FFlags CSR registers (part 2).
    
    Bug: 301768414
    
    Test: m berberis_all
    
    Change-Id: I0c9935f2a52e0c39f4c24e3e5e09a11a73ae0601
    
  - Merge "dumpstate: call printflags instead of reading flag files explicitly" into main
  - Merge "zip_artifacts to be called at last device removed from netsim" into main
  - Merge changes I5c0bca34,Ib0f09bbd,I0c2b4d51,I6cb64c35,Id0154a46, ... into main
    
    * changes:
      Clamp getRemainingFilterLft to fit in 2 bytes
      Convert most lifetimes to ints instead of longs
      Use secondsSinceBoot instead
      Rename currentTimeSeconds -> secondsSinceBoot
      Reducing log level so droidfood builds do not crash
      Have Ra#generateFilterLocked return void
      Remove mProgramBaseTime
      Stop purging RAs when they are expired
    
  - Merge "PDL: Always check IsValid in FromView" into main
  - Merge "Adding entry for 16k page developer option" into main
  - Add clone_args for nsjail.
    
    Test: treehugger
    Change-Id: I59239bfe7adf41b1081c6c2351695115519a552b
    
  - Merge "Import AndroidX from build 10881713" into main
  - Merge "[openwrt_authentication] Skip creating RSA key if exists." into main
  - Skip some WifiSoftAP tests if a DUT does not support Soft AP in the user UI.
    
    Add a new user param "softap_unsupported_models" in ACTS config.
    
    DONOT enable auto-submit, this CL has config dependency.
    
    Bug: 298142789
    Change-Id: Ia6158e54c10338aaf84dcd8b9fd19ba317745ee0
    
  - Merge "16k: Get the page size dynamically" into main
  - Merge "Fixed incorrect whitespaces in Android.bp" into main
  - Merge "Don't delete withres-withoutdex jar from R8 rules" into main
  - Merge changes I8f83d042,I3d6a6a07,If088188b,Ia0c1f55a into main
    
    * changes:
      netbpfload: update date in copyright messages, LOG_TAGs, etc.
      netbpfload: remove support for 'loader'
      netbpfload: remove support for 'vendor'
      netbpfload: remove support for 'platform'
    
  - [bssl] Make hkdf return Zeroizing type
    
    This cl modifies the output of hkdf to be of Zeroizing type,
    ensuring that the key is zeroized when it is dropped.
    
    Test: atest rialto_test & m pvmfw_bin
    Bug: 279425980
    Change-Id: I903c0b0129cd388b9831d87ddf6d29978350c252
    
  - Merge "Avoid "android.media.mediacodec.log-session-id" print redundancy" into main
  - Merge "Revert "Modify symlink_forest to rerun when soong_build has changed."" into main
  - Merge "Revert "Throw an exception when using RenderScript ScriptC with an API level above 34"" into main
  - Merge "libavb: add OWNERS file for Rust sub-dir" into main
  - Autoupdate of 3 submodules
    
    *external/robolectric updated to 37c38c554896296fbd3f5f7cef78489d799f134a
    Merge "Clean up obsolete aliases for Truth." into main
    *external/robolectric-shadows updated to a3d3d8ec2d296cf6dd1607588497120ce88e21d6
    Clean up obsolete aliases for Truth.
    
    Bug: 255714762
    Test: presubmit
    Change-Id: Iac6b1d66d95cd31ac80d680f53c715b8eac59377
    
    *test/robolectric-extensions updated to 0a22c64abb9cef27260e8a60c8715cd2ac73e0b1
    Clean up obsolete aliases for Truth.
    
    Bug: 255714762
    Test: presubmit
    Change-Id: I9c17cd1bb399cde85999409bf1e02f9aee605e1a
    
    
  - Merge "aconfig: change Map.of to Map.ofEntries in FakeFeatureFlagsImp" into main
  - Autoupdate of 3 submodules
    
    *build/make updated to a65cdd502474e61e7d7582189a6524bdbc7d688e
    Merge "Revert^2 "Add soong config variable Release_expose_flagged_api"" into main
    *build/release updated to b007a65fc1b9293a1cd03acc7eee9ba9bf6624ca
    Merge "Revert^2 "Add RELEASE_EXPOSE_FLAGGED_API release config flag"" into main
    *build/soong updated to a7e5e29ec1fa27a230e65956d84c13b46f2a31b7
    Merge changes from topic "expose_flagged_api_revert" into main
    
    * changes:
      Revert^2 "Add flagged api hide conditional to droidstubs"
      Revert^2 "Add soong config variable Release_expose_flagged_api"
    
    
  - Merge "Handle symlinks in isPackageBoundary" into main
  - Merge "riscv64: add vector stpcpy()." into main
  - Merge "Add another testcase." into main
  - Merge changes I226ea90a,I56bb4a29,If4ac928c,Ice193294,Ibb107092 into main
    
    * changes:
      Add test-data config flag.
      Add min_sdk_version config flag.
      Add host_first_multilib config flag.
      Add mode for converting cargo2android.json to cargo_embargo.json.
      Add option to get information from cargo.metadata without building.
    
  - Autoupdate of 2 submodules
    
    *build/bazel updated to b8a3427250caf73e7f28d55905c9932c9c6e1b04
    Merge "Convert java_aconfig_library to bazel." into main
    *build/soong updated to 7a90fcfa455820063ac6eadcd1f5a218a24ba3d1
    Merge "Convert java_aconfig_library to bazel." into main
    
  - Dismiss wizard explicitly if requested
    
    We used to rely on harness mode + reboot, which indirect. Instead if configured, explicitly dismiss the setup wizard.
    
    Test: presubmit
    Bug: 303135953
    Change-Id: I185cab2ee882ba034bb6f9a7959fcd3598f1b784
    
  - Casimir: Reduce log verbosity while polling
    
    Bug: 303241360
    Test: m casimir
    Change-Id: Icddc2dc29debe6f3bec666f8038c44531ef2d670
    
  - Merge "Reboot into the userspace after every fastboot reboot case" into main
  - Merge "Add soong team to owners for soong plugin" into main
  - Merge changes Ibadd782d,I8704dccf into main
    
    * changes:
      bpf: add constants PRIVATE, SHARED, MANDATORY, OPTIONAL
      switch from defines to static consts
    
  - Merge changes Idaeb9587,I85678818,Id8ebcbff,If6177b63 into main
    
    * changes:
      add comments
      network_stack_utils_jni.cpp - switch to classic bpf macros - part 6
      fix race: attachRaFilter() before bind, and cloexec it
      switch attachRaFilter() to ErrnoException
    
  - Lengthen timeout on declared slower devices
    
    If a device has set ro.hw_timeout_multiplier, use it
    to lengthen the timeouts in these tests.
    
    Bug: 303106879
    Test: Verified that the timeout is longer on a device declaring ro.hw_timeout_multiplier
    
    Change-Id: I482d8fafc91106921e9b31d4b5f3afa300a87a25
    
  - Add all the missing syscalls.
    
    Rather than keep doing these one-by-one, let's just add everything
    that's in our current bionic uapi headers (from the 6.5 kernel).
    
    We should have switched to musl long before anyone's complaining about
    missing 6.6 syscalls!
    
    Some code assumes that, if you have a syscall number defined, you also
    have the corresponding constants. Drag in enough of those constants to
    keep the build green (just the MFD_ constants).
    
    Test: treehugger
    Change-Id: I5aa759b31948b5650f4121b979d59f52ff7db7d1
    
  - ui: tp: switch IMPORT -> INCLUDE PERFETTO MODULE
    
    Change-Id: Id8b948fad7a601cc0a841d3e6cb693155c4e4262
  - Merge "[UWB HAL] Use AsyncFd to read the buffer only when it's readable." into main
  - mockcify: Update mockcify 6.1 => 6.2
    
    Bug: 299365655
    Test: m .
    
    Change-Id: Ib1d72862c833afed1e425056b8f3f1aaa766811b
    
  - Autoupdate of 2 submodules
    
    *cts updated to d0e373c80cec36f4d0001a9bba7bdea327c7f664
    Merge "Don't run the VPN tests on watches." into main
    *packages/modules/Connectivity updated to c8a42f6a39d852b7d9321ccbf778b2a8cef33a9c
    Merge "Disable the remaining VPN CTS tests on watches." into main
    
  - Merge "Allowlist tradefed-common-util and some dependents for tradefed" into main
  - Fix UnboundedSdkLevel on Q
    
    Set.of was introduced in API 30 and this code has min sdk version 29.
    
    Decided to still use Set.of in 30+ as it (probably) has some
    optimizations.
    
    Test: presubmit
    
    Bug: 295776695
    Change-Id: I744b1f582fd391f0d81b94ea5eee9b1822bac1f4
    
  - Support netsim_args in emulator
    
    - Add netsim_args field in NetsimdOptions struct
    - Process netsim_args by spliting it by space and append flags to launch
      command
    - Update parameters of CreateChannel()
    
    Bug: 295949723
    Test: objs/emulator @netsim -netsim-args "--hci-port=12345 --dev" -feature WiFiPacketStream
    Change-Id: I2aa4ca3ca8eda273717eac74e4b3f4be98f10537
    
  - Merge "Revert "Fix pylint error in bazel_mode.py"" into main
  - Merge "Revert "Add Overloads to Frame and Image Extract Functions"" into main
  - Update bp2build tests to use stubbed defs
    
    bp2build tests should not use bp2build_available:false test deps,
    because, with the "allowlist v2" feature, this will cause these modules
    to stop being converted with bp2build. Instead, such test deps should be
    "stubbed", which effectively treats them like targets in pre-existing
    BUILD files on the filesystem.
    
    Bug: 301312260
    Test: m nothing
    Change-Id: I277b5d4a7bfc4162209523cc2cfb85950b0222f2
    
  - Fix compilation when using system dependencies.
    
    This was due to an incomplete renaming of aemu targets.
    Also add missing `gfxstream-snapshot.headers` causing include failure.
    
    Change-Id: I25765ccbf4731d3e655f619a34de8316f08cdde3
    
  - Merge "Promote TEST_MAPPING to presubmit" into main
  - Merge "Throw an exception when using RenderScript ScriptC with an API level above 34" into main
  - Upgrade toybox to 0674deaed1dc59ee9c7c14ed147cd4c4c90abe09
    
    This project was upgraded with external_updater.
    Usage: tools/external_updater/updater.sh update toybox
    For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
    
    Test: TreeHugger
    Change-Id: I7068d52856684912937d45b8270b2c3022e84090
    
  - Merge "Clean up prebuilt stub deps & add comment" into main
  - Reapply "Update golden_test.sh to be aware of RELEASE_AIDL_USE_UNFROZEN"
    
    This reverts commit fc65b245e686ca7ede5c38582d4c8b4cec50658a.
    
    Now using $TARGET_RELEASE to know which release we are currently lunched
    into instead of a file that only defines the value for non-next
    releases.
    
    Also changed the "True" to "true" and "False" to "false" now that we
    aren't reading from the build flag file.
    
    Test: ./tests/golden_test.sh update
    Test: ./tests/golden_test.sh check
    Test: previous tests internal with lunch cf_x86_64_phone-next-userdebug
    Bug: 299364399
    Change-Id: I5033b875986687595dd7a57c81cc0d877412e887
    
  - Autoupdate of 2 submodules
    
    *build/bazel updated to 7532b9ad1f8e6c763c9bd17efb295c0dea4db86f
    Merge "Implement custom fdo_profile macro" into main
    *build/soong updated to 85455887b70cfbc9a3d581618e818f40f48c768f
    Merge "Change bp2build to switch to using custom fdo_profile macro" into main
    
  - Merge "Added  androix.privacysandbox.tools libraries" into main
  - Merge "tp: simplify algorithms in SqlSource and make semantics more precise" into main
  - tp: move QueryResultSerializer header to include/ext
    
    This CL moves the header for the QueryResultSerializer class from src to
    include/ext. This is necessary to depend on this class in BigTrace in
    G3.
    
    Change-Id: I5f37fc46498d4f7555de042f0280103552f5e576
  - Merge "Refactor api.bzl to depend explicitly on product variables." into main
  - Clean up CheckCast codegens.
    
    Remove comments from location builders which have the first
    half unnecessary and the second half wrong, maybe outdated.
    
    Change a "TwoRegisters" reference load call to "OneRegister"
    call because the arguments violate the documented API of the
    "TwoRegisters" version.
    
    Test: m test-art-host-gtest
    Test: testrunner.py --host --optimizing
    Test: run-gtests.sh
    Test: testrunner.py --target --optimizing
    Change-Id: Ide0980deffcf970eb76a9ff1fbadae83d4fabf82
    
  - Merge "Prioritize non-slices over slices" into main
  - Revert Reland "Add a small pattern matcher to JIT compilation."
    
    This reverts commit f221e75a1abbddef0bc319062db9953a44a2ada7.
    
    Reason for revert: still luci failures
    
    Change-Id: I4b3bd97305f6ef3dfd81becbb4fdad3f55e71029
    
  - [bssl] Implement AEAD BoringSSL wrapper
    
    AEAD will be used to encrypt the private key in the RKP HAL.
    
    Bug: 302286887
    Test: atest libbssl_avf_nostd.test
    Change-Id: I734cf5ecd8b938f2c47f439d6f51594ccafb4ff2
    
  - Autoupdate of 2 submodules
    
    *packages/modules/Connectivity updated to a675e966b2155fbde347a733c8946577c93bfd1e
    Merge "Remove defaultEnabled arg from isNetworkStackFeatureEnabled" into main
    *packages/modules/NetworkStack updated to f61986f9afeefad31f5cabc3d79c9f1348f7e922
    Merge "Remove defaultEnable arg from isNetworkStackFeatureEnabled" into main
    
  - Merge "CS: Read local capability when module start" into main
  - Merge "frameworks/av: Change url from google cloud to lorry" into main
  - Merge "Add graph for chrome scrolling offsets." into main
  - Merge "LeAudio: Minor variable rename" into main
  - Merge "leaudio: Fix stopping group when in transition to ENABLE" into main
  - Fix HIDL/AIDL status not checked
    
    Bug: 297486203
    
    Change-Id: I97d52115d4a59ec24f0b38437b27a4bd9c7df0f1
    
  - tp: fix iterator copy constructor deletion
    
    Copy constructor should be const and should not be noexcept
    
    Change-Id: Idc022be23fbc0ecaa8a1135b3c72a15bb665fc70
  - Merge "Fix pylint error in bazel_mode.py" into main
  - Merge "videocodec CTS: update max bframe test to not test av1 component" into main
  - Update the apf_allocate_buffer() and apf_transmit_buffer() document.
    
    Update the apf_interpreter() and apf_transmit_buffer() document to
    clearly document what is the expected behavior from the firmware.
    
    Bug: 293811969
    Test: TH
    Change-Id: Id1dfb7240f9169a2b2574770b744b1fddc1b347a
    
  - Autoupdate of 2 submodules
    
    *packages/modules/Connectivity updated to 0509e0da16020451a432f3c36734c0ecb684ecd3
    Merge "Remove Ikev2VpnProfile related shims usage" into main
    *packages/modules/NetworkStack updated to 263023229cd54b96d38ed7dc4ef8e7870cb18657
    Merge "Remove Ikev2VpnProfile related shims" into main
    
  - Merge "media.c2 aidl: Add AHardwareBuffer based C2Allocator" into main
  - Merge "le_scanning_manager: Pass handle for PAST to avoid address issues" into main
  - Merge changes I153682a9,I8271338e into main
    
    * changes:
      network_stack_utils_jni.cpp - switch to classic bpf macros - part 5
      network_stack_utils_jni.cpp - switch to classic bpf macros - part 4
    
  - Merge "Consolidate the functions used to generate the java test filter" into main
  - Merge "Minor refactor tools/releasetools/common.py" into main
  - Merge "Add an example Parameterized test" into main
  - Use Truth library built from source.
    
    Bug: 255714762
    Test: presubmit
    Change-Id: I8fdf4b6877808d321d3b4fb484c82fdf1b66220a
    
  - Autoupdate of 2 submodules
    
    *external/caliper updated to 7ddb89d3d873da009d3fb3fcfbb6fa67ea664628
    Use Gson built from source.
    
    Deletes the prebuilt, which is also used from external/vogar
    (see the other CL in this topic).
    
    Bug: 243950468
    Test: presubmit
    Change-Id: I4d6507c0e38dbf3ff7151f7ca1e0ff80019b5afd
    
    *external/vogar updated to de89c379921383d76812fb1f4f034480327b4b4a
    Use Gson built from source.
    
    Bug: 243950468
    Test: presubmit
    Change-Id: I33e1af6a1e99293af2451e9976c4fbf8c1d94db1
    
    
  - Use Truth library built from source.
    
    Bug: 255714762
    Test: presubmit
    Change-Id: I87020f4c6615b15887b3ef0afa676f5d007b1c14
    
  - Merge "Exclude --enable-device-preparer from the unsupported list" into main
  - Merge "Fix IoPerfCollectionTest after GTest upgrade." into main
  - Merge "Add convenience wrapper functions for the colorize method" into main
  - Add a TODO for the removed flag
    
    Bug: 300882567
    Test: atest-dev atest_unittests
    Change-Id: I3f86c1b20d77ca6c28c1d4f8d539c842ba3a94f1
    
  - Add test implementation for APF allocate/transmit buffer APIs
    
    Add the test implementation for apf_allocate_buffer() and
    apf_transmit_buffer() APIs. The implementation will only be used in unit
    test.
    
    Bug: 293811969
    Test: TH
    Change-Id: Id3086aff338d5b39baaa3e31fc086d33bc557f44
    
  - Fix APFv6 API definition and description
    
    Update the APFv6 API definition and description to fix error and reduce
    ambiguities.
    
    Bug: 293811969
    Test: TH
    Change-Id: I30da5adcb9964ebd833c180ce4a6563f5bfb0096
    
  - Merge "Convert gsi_skip_mount.cfg to soong" into main
  - Merge "Mark mMinLifetime private final" into main
  - getRemainingFilterLft should not rely on global state
    
    Pass currentTimeSeconds as an argument. This makes the method useful in
    places where mProgramBaseTime may not be set / current.
    
    Test: TH
    Change-Id: I4d35c407545fceb172b3646dc227cf9ac39745b0
    
  - Merge changes from topic "power_telemetry" into main
    
    * changes:
      Power Telemetry Stage 2
      Add logs for Battery Historian and feature flag and unittest
      Adding Power Telemetry data into Dumpsys
    
  - Isolate ValidNameNativeBridge_test.
    
    The test depends on static state that cannot be reset and is
    modified by other tests. Upstream googletest sorts the tests
    before running them, so it's no longer possible to control the
    order of tests via the order of the srcs attribute.
    
    Bug: 302771018
    Test: art/libnativebridge/tests/runtests.sh
    Change-Id: If6b96049f6ed7a276ca1dcd0d7a70966d7ffecbf
    
  - Merge "Truncate mCallbacks after removing a callback." into main
  - Merge "import bpfloader into p/m/C" into main
  - Merge "Remove unused --tf-early-device-release flag" into main
  - BpfClassic.h - more helpers
    
    Test: TreeHugger
    Signed-off-by: Maciej Żenczykowski <maze@google.com>
    Change-Id: Ie0eb8895c2d887b71ba886735ad106c1118ebeac
    
  - audio: Set 'maxOpenStreamCount' to unlimited for input ports
    
    Since libaudiohal@aidl reports that the most current legacy C API
    version is supported by the HAL, the audio server uses a different
    logic for telephony scenarios than for the HIDL HAL. This involves
    opening more streams on the same mix port. Allow opening
    an unlimited number of streams. However, keep the number of active
    streams to be `1`.
    
    Bug: 302132812
    Test: atest CtsMediaAudioTestCases --test-filter=".*AudioNativeTest.*"
    Test: atest CtsMediaAudioTestCases --test-filter=".*CallAudioInterceptionTest.*"
    Change-Id: I896398fca73f28d28d9397d00751394c969531b4
    
  - Merge remote-tracking branch 'aosp/upstream-main' into merge
    
    * aosp/upstream-main: (40 commits)
      seccomp: add clock_gettime to swap aarch64
      Roll recipe dependencies (trivial).
      devices: balloon: add suspendable_virtio_tests
      cros_tracing_analyser: Remove average output
      cros_tracing_analyser: Add histogram
      devices: Make PciConfiguration not serializable
      x86_64: Reserve MMCFG region in ACPI
      x86_64: Add ACPI PCI routing table
      acpi: Make aml::Package own its children
      Roll recipe dependencies (trivial).
      devices: pcie_host: simplify zerocopy usage
      devices: vfio: replace expect() with error handling
      devices: vhost: remove unused vhost_header functions
      cmdline: allow key=value in --vhost-user-fs
      Roll recipe dependencies (trivial).
      devices: video: decoder: wait on output buffers that may be accessed by the guest CPU
      devices: gpu/video: pass the CPU readable flag across the GPU bridge
      devices: usb: Use DMA buffer for data transfer if possible
      Roll recipe dependencies (trivial).
      devices: vhost-user: frontend: add max-queue-size option
      ...
    
    Bug: 303052865
    Test: cf + test mapping
    Change-Id: I726f464565ea101379dabb309110aee92da702c8
    
  - Autoupdate of 2 submodules
    
    *build/soong updated to 77b232da24f2570998e34cd0828c53673aba756e
    Merge changes from topic "linter_integration_tests" into main
    
    * changes:
      Add .lint tagged output to Java modules
      Add lint.suppress_exit_code attribute
    
    *frameworks/base updated to 2768c06f7a8723505cea678706900cbd5f91e615
    Merge "Add integration test for EnforcePermissionHelperDetector" into main
    
  - [scudo] Mark page status in getStats in secondary (#67588)
    
    Cache entry marked with [R] indicates that the pages have been released
    by releaseToOS().
    
    GitOrigin-RevId: ce00dde80e5c2ac3bd34346c2c75511b4c96708b
    Change-Id: I361d3d9977281078b4c2b7c1c0a585233750a423
    
  - Don't depend on String8 cast to C string
    
    Bug: 295394788
    Test: m checkbuild
    Change-Id: Idec78a8922beb4a5a4659c32f01086c929ac3eed
    
  - Merge "Remove -Wsign-promo." into main
  - Merge "Add @RequiresPermission annotation to ACTION_MASTER_CLEAR_NOTIFICATION intent" into main
  - Merge "More documentation for C++ global config." into main
  - Merge remote-tracking branch 'aosp/upstream-main' into 'aosp/main'
    
    This merge includes https://github.com/bazelbuild/rules_rust/pull/2165 which unblocks aosp/2721473 for non-host rust toolchain.
    
    Test: N/A
    Bug: 295918553
    Change-Id: I19dbc09be2fd2c11ce7b77ec3d44e2b8aeb24ab3
    
  - Add support for FCsr and FFlags CSR registers (part 1).
    
    Bug: 301768414
    
    Test: m berberis_all
    
    Change-Id: Ib11794d152fcf25bd7fb03a8cdaa2d1a798116c7
    
  - Merge "Respect visibility on java_library" into main
  - Merge changes from topic "revert-2646423-HDQXAAHWBW" into main
    
    * changes:
      Revert "NDK library: enable feature flags for dumping ABI repres..."
      Revert "NDK library: enable feature flags for diffing ABI repres..."
    
  - Merge "Removed 'androidx.room:room-common': {}," into main
  - Merge "Move off test_per_src." into main
  - Autoupdate of 3 submodules
    
    *prebuilts/bazel/common updated to b3bb783608db9652d54616acb113f55772529d74
    Bazel release 9bf8f396db5c8b204c61b34638ca15ece0328fc0
    
    Test: verify script
    Test: presubmits
    Change-Id: I7427ed2b4835bd5f268a69de550d8cf3322458c6
    
    *prebuilts/bazel/darwin-x86_64 updated to 1f0e64472655fbbdef7166e227cffb7deb79b00e
    Bazel release 9bf8f396db5c8b204c61b34638ca15ece0328fc0
    
    Test: verify script
    Test: presubmits
    Change-Id: I2230a0e15d56d149b8a60f34553a025e250350bb
    
    *prebuilts/bazel/linux-x86_64 updated to 79b8b6ff0f364bacd647b85a654c70d9e91aa438
    Bazel release 9bf8f396db5c8b204c61b34638ca15ece0328fc0
    
    Test: verify script
    Test: presubmits
    Change-Id: If14482b18513c1f7e04f9ba2a4e115a75c435ef3
    
    
  - Merge "Log the CowOperation when decompression failed" into main
  - PTS: use extended advertising API
    
    Test: atest pts-bot
    Bug: 302595208
    Change-Id: I21448266dbfefc40722939a969ed9c586f584ae2
    
  - [toolchain] Uprev rustc and use lld for linking
    
    The CL makes the following changes:
    
    1. Uprev rustc version to 1.72.0.
    2. Make linker flag optional for CC toolchain. Rustc can generate the
       needed linker flags. In most caess there's no need to specify
       ourselves.
    3. Use lld directly for linking instead of clang/clang++ frontend. rustc
       1.72.0 starts using windows style linker argument which does not get
       recognized by clang/clang++ frontend.
    
    Bug: 302569430
    Change-Id: I64368a526690c87fec6045bddfb8852287fcf6bc
    
  - Move rexhoffman to top of OWNERS priority list.
    
    Test: na
    Change-Id: I07e66a0b095a9cc31681e380845dec332cb4253b
    
  - [BluetoothMetrics] Adding enums for le Audio device/group health status counter metrics
    
    Counter metrics mapping:
    1. Device_status_good: valid DB, valid CSIS
    2. Device_status_bad: invalid DB, invalid CSIS
    3. Group_status_good: start stream succeed
    4. Group_status_bad: Never succeed in stream creation, 3 consistent failure(create cis/signaling failure)
    5. Group_status_trending_bad: Had some success, bug failing rate >
       70%(create cis/signaling failure)
    6. Others mapped to specific failure reasons
    
    Bug: 301448525
    Test: manual check of enums
    Change-Id: Ifd1b659e5ca3228850b7d86864a3326b2b0141be
    
  - Merge "inputflinger: add missing <functional> include" into main
  - Merge "Condense impls of MacAddressToString, Ipv6ToString" into main
  - Merge "Replace CHECKs in disk_flags.cc with CF_EXPECT" into main
  - Merge "Merge "Revert "CTS-V: Skip Audio Descriptor Test if HDMI feature is not supported"" into android13-tests-dev am: 45144f3492" into main
  - Merge "Added 'androidx.room:room-common-jvm': {}," into main
  - Merge "[stdlib] Optimize critical path generation" into main
  - Kill any test initiated perfetto process before test run.
    
    Bug: b/288396763
    
    Test: PerfettoListenerTest, PerfettoHelperTest
    Change-Id: Ia9314c7ce066bc9e638bf2fbcc09ac0eace71e4d
    
  - Merge "Use Gson built from source." into main
  - Autoupdate of 3 submodules
    
    *cts updated to 12149387f336109ead84d9884137346a18550f85
    Merge "Use canonical Gson instead of a random prebuilt." into main
    *external/android-key-attestation updated to 829619986f23190686e1929f7c30dde62f1c0d1f
    Use Gson built from source.
    
    Bug: 243950468
    Test: presubmit
    Change-Id: I2ea07fad3c2c98d094c007557e94b00dd995c338
    
    *external/wycheproof updated to 27fe73361c98ff70f62621ca769b1530a22b8b5e
    Use Gson built from source.
    
    Deletes the prebuilt JAR.
    
    Bug: 243950468
    Test: presubmit
    Change-Id: I3c37eb2e373c25ac4f97f410dec31afa550af3db
    
    
  - Update min SDK for TS.43 auth library
    
    Also add self to owners
    
    Test: build
    Bug: 284212452
    Change-Id: I9392c65dc5798df35d8f4a0a7a168a47b671d06c
    
  - Merge "Change sbom_test.sh to take command line arguments for target product, release and build variant, which is for a corresponding change in CI." into main
  - Merge changes I7df6e323,I0e3412b9 into main
    
    * changes:
      audio: Fix notification of streams of the device change
      audio: Fix update of an existing patch
    
  - rename BPF2_REJECT_IF_ANY_BITS_SET -> BPF2_REJECT_IF_ANY_MASKED_BITS_SET
    
    Test: TreeHugger
    Signed-off-by: Maciej Żenczykowski <maze@google.com>
    Change-Id: I54a189f0f7b73917aa3fd049fe2eca387aaca250
    
  - riscv64: [codegen] Implement Baker read barriers.
    
    Implement codegen changes and entrypoints for Baker read
    barriers. Also implement resolution and initialization
    entrypoints and enable codegen for certain instructions to
    allow stress-testing the Baker read barrier implementation.
    
    Fix `CodeGeneratorRISCV64::Finalize()` to avoid finalizing
    the code twice. This double finaization bug was exposed by
    enabling compilation of some larger methods.
    
    Test: # Edit `run-test` to disable checker, then
          testrunner.py --target --64 --ndebug --optimizing
          # Ignore 7 pre-existing failures.
    Bug: 283082089
    Change-Id: I55a128921b388fae1bf818bfbda0bcb18f6dbfb3
    
  - glibc: define __NR_getrandom.
    
    Bug: http://b/303040212
    Test: treehugger
    Change-Id: I766c82bfd5a80819796e3a888c9e176b31becd78
    
  - Change RELEASE_ACONFIG_VALUE_SETS bazel labels from soong module names.
    
    Bug: 300669419
    Test: CI
    Change-Id: Ieec40f3d6c7011d0edf0c65ef019bf097db6d408
    
  - Merge "Add go module and workspace files" into main
  - Merge "pts: Disable tests AVRCP/TG/MDI/BV-04-C, AVRCP/TG/MDI/BV-05-C" into main
  - Merge "Treat src=name filegroups as handcrafted targets" into main
  - Merge changes I59bbb506,I997eceaf into main
    
    * changes:
      Parse SOL_MAX_RT option in DHCPv6 messages.
      Take Option Request Option in DHCPv6 Solicit/Request messages.
    
  - Merge "libfdt: Add FdtNode::name()" into main
  - Merge "Create and Start secure_env snapshot control server" into main
  - Merge "Pin the SDK version of the RenderScript tests to 33" into main
  - Add a check to confirm getFileSystem check
    
    Bug: 302743398
    Test: presubmit
    Change-Id: I95fbb6488ea6226cda4fb2c5d400ffa0d4a032d0
    
  - Merge changes Iaae9dabd,I70298ef6 into main
    
    * changes:
      shared_lib: Tests for protozero serialization
      shared_lib: Add helpers to serialize packed repeated fields
    
  - Merge "build framework: remove app-compat-annotations from test" into main
  - Merge "Alternating packets queued in the audio buffer" into main
  - riscv64: Fix stack map validation.
    
    Test: # Cherry-pick https://android-review.googlesource.com/2767026
          . build/envsetup.sh
          lunch aosp_cf_riscv64_phone-userdebug
          m
    Bug: 283082089
    Change-Id: Ia48f3da1e98d35b7089b2fd333883519c5439d18
    
  - Add missing override specifier on generated header
    
    Change-Id: I29e771339a7a17860548bf4ae64d55935b9e581e
    
  - Merge "Add report module events sparsely option" into main
  - Merge "Import AndroidX from build 10859964" into main
  - Merge "Handle rootcanal configuration e2e from StreamPackets to bluetooth_facade" into main
  - Merge "NdkMedia: fix android.mediav2.cts.CodecEncoderSurfaceTest failed." into main
  - Merge "Modify symlink_forest to rerun when soong_build has changed." into main
  - Set local.prop if it hasn't been in non persistent opti
    
    Test: presubmit
    Bug: 302908241
    Change-Id: Ie5a8fae0c2a6000c5a2afbfabb763f45d2a55025
    
  - Merge "Remove obsolete <linux/capabilities.h> workarounds." into main
  - Add the support to control advertising, discovery and upgrade mediums
    
    1) Add the support to control advertising, discovery and upgrade mediums
    2) Enable Aware if Aware medium if used.
    3) Disable log redaction
    
    Bug: 302553748
    Test: performance test
    Change-Id: I2f66d898343611a0b9a45173f987f57b1821674a
    
  - Merge "Basic widget for text paragraphs, used in scroll jank plugin." into main
  - Merge changes from topic "b/302677468" into main
    
    * changes:
      Allow execution of code in extra APKs
      Multi_tenant is the new payload_not_root
    
  - Autoupdate of 3 submodules
    
    *build/bazel updated to 365bd5c0904e2628000a99d2954b38064c5bc551
    Merge "For host java versions < 9, use the same bootclasspath as Soong." into main
    *build/soong updated to e2007bfd0ed933c245a5a5a42b8ad575135fc9ee
    Merge "Use manual BUILD files in jdk8 and allowlist apache-commons-compress" into main
    *prebuilts/jdk/jdk8 updated to 94bbc6ab3dcc1c6a65bbb708888e702544258ab4
    Manual BUILD file in jdk8 to access custom host bootclasspath jars
    
    Bug: 302587886
    Change-Id: I79d0b338261a095de28f510c6f5140504e0e300b
    
    
  - Merge "Scroll Details panel to show all frame presentation delays." into main
  - Merge "Add method to read trunk stable flag" into main
  - Merge "Move away from mod.rs" into main
  - [bssl] Retrieve error code from BoringSSL
    
    This cl retrieves the error code from BoringSSL when an operation
    fails and returns it to the users.
    
    Test: atest rialto_test
    Bug: 302527194
    Change-Id: I36da67c2ff9e7f45aea8db659d400c347d9705ca
    
  - Merge changes I94a0e2de,I95ebfef6 into main
    
    * changes:
      NDK library: enable feature flags for diffing ABI representations
      NDK library: enable feature flags for dumping ABI representations
    
  - Optimize Select instructions regarding equality
    
      * Select[a, b, EQ(a,b)] / Select[a, b, EQ(b,a)] into a
      * Select[a, b, NE(a,b)] / Select[a, b, NE(b,a)] into b
    
    Test: art/test/testrunner/testrunner.py --host --64 -b --optimizing
    Change-Id: I5a32af63dc9fb27868d0ffb313324cb1772cff64
    
  - Autoupdate of 2 submodules
    
    *art updated to ee83f167e5041ea43439617e4b5985cad4a34210
    Revert^2 "Use the same cache for MethodType-s created in native and managed code."
    
    This reverts commit 52d0ba769ae791c8eac5160e03de7ad369f07ade and
    11b1b75c1b6e15500a10288834e299e673010165.
    
    Reason for revert: aosp/2768053 should break initialisation cycle.
    
    Bug: 297147201
    Test: ./art/test/testrunner/testrunner.py --host --64 --optimizing -b
    Test: ./art/test/testrunner/testrunner.py --jvm -b
    Test: ./art/test.py --host -b
    
    Change-Id: I15b8c1d1014b912ab7e4e9b2adab73736fe2b09b
    
    *libcore updated to 42c915dbdf1fcb713d6ec20b63a07d8f294591ba
    Merge "Lazily initialize ThreadLocalRandom.instance field." into main
    
  - Merge changes from topic "am-cbdb0d71365a4c25891c2a85f0309b5a" into main
    
    * changes:
      Merge changes from topic "am-60cf3e87d9d4407399be4f8630d54cb7" into android13-tests-dev am: add86d3077 -s ours
      [automerger skipped] Merge "Revert "Exclude CtsSecurityTestCases tests from cts-on-gsi"" into android12L-tests-dev am: fe89a6bb00 -s ours am: 1f8e44f20c -s ours
    
  - Merge "Run derive_sdk --dump from SdkExtensionsTest" into main
  - Merge "[ui]: Augment the binder txn name with monitor contention" into main
  - Merge "Comment tests which raise multiple choices" into main
  - Reland "Add a small pattern matcher to JIT compilation.""
    
    This reverts commit 1017823d56e821f29606e5b08f4bf51078c257a9.
    
    Reason for revert: Fix included in aosp/2761728
    
    Change-Id: Ia59648bb27dc8bbb5659b1ee88b71a7647b9b158
    
  - Merge "Change test plan for RpcWire to TeeUIUtilsTest" into main
  - v4l2_codec2: Add RGBA video pixel format
    
    The format is supported by RaspberryPI-4 AVC HW encoder.
    
    Change-Id: I580dd68913bf43b1f14c0bed17d6990d733b3977
    Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com>
    
  - Merge changes I19b0a004,I0f7b0867 into main
    
    * changes:
      Fix pylint warning in cli_translator
      Fix pylint warning in atest_utils
    
  - riscv64: Implement `NullPointerHandler`.
    
    Test: # Edit `run-test` to disable checker, then
          testrunner.py --target --64 --ndebug --optimizing
          # Ignore 7 pre-existing failures.
    Bug: 283082089
    Change-Id: If7ca0546a4f2a3576002bc2586b1a8d4892bb6c2
    
  - Merge "bta_gattc_start_discover: trivial style fix" into main
  - Merge changes from topic "revert-2765950-TTMWHDWWDL" into main
    
    * changes:
      Revert "interpreter: Add FaultyLoad/Store with tests"
      Revert "interpreter: Use FaultLoad/Store"
      Revert "interpreter: Raise SIGILL on undefined instruction"
      Revert "tests: Add riscv64 not executable handling test"
    
  - [ui] Fix Chrome extension link
    
    The whitespace within the href led to a failed navigation.
    
    Change-Id: If00a19872e12acce08ce19fc65dc7f28fe21f90f
    
  - Merge "Abort and display error if ninja command fails." into main
  - Test: Enable verbose logging in doh_ffi_test
    
    Enable the verbose logging to debug doh_ffi_test.
    This change will increase ~250 lines of log when running
    doh_ffi_test.
    
    Bug: 300679076
    Test: atest doh_ffi_test
    Change-Id: Icc4e264af9587ce1e8fa9eba13c13a3f69e80bff
    
  - Merge "Decouple Ipv6UpstreamRule with Ipv6DownstreamRule" into main
  - Revert "Add a check to confirm getFileSystem check"
    
    This reverts commit 69a8f7a00756eb84bbd8cb91f72503081f6618d9.
    
    Reason for revert: b/302989277
    
    Change-Id: I9c6384a0c5c1c0ecf4cb45bd1052c271bc8b3e05
    
  - Autoupdate of 3 submodules
    
    *external/avb updated to 2f1ad9dc7738bd7b88b67320f4e9f0991cecd727
    Merge "libavb: support chain partition no ab" into main
    *system/core updated to b90cd3b5ab07da2d09af576bebf21cb596986aee
    Merge "Adjust unit tests for supporting chain partition with no ab" into main
    *system/tools/mkbootimg updated to e41e464abbe37e4676f699136554c4cd1da4dac2
    Adjust unit tests for supporting chain partition with no ab
    
    Test: certify_bootimg_test
          mkbootimg_test
    Signed-off-by: wuhaitao3 <wuhaitao3@xiaomi.corp-partner.google.com>
    Change-Id: Ia8a1067e4fb3c07ad036976c17e09afc28015167
    
    
  - Merge "Remove use of vsetvl instruction from tests." into main
  - Merge "Copy reclient binaries into the out directory itself" into main
  - Autoupdate of 4 submodules
    
    *external/rust/crates/protobuf-support updated to 61d0730f92f53edaf18c56a49c469d4677648e98
    Adding autogenerated Trusty makefile rules
    
    Bug: 281857510
    Change-Id: I4de073d54d62fa1280b7c1d2a637ffb58cc40515
    
    *external/rust/crates/thiserror updated to 755628330722a5f4b02aba792803f450e2b90464
    Adding autogenerated Trusty makefile rules
    
    Bug: 281857510
    Change-Id: I911c2a05e3d3fcb428c7f04750311be05056a49e
    
    *external/rust/crates/thiserror-impl updated to e71ac1b9c0807ecbda3d1568f20420335be48663
    Adding autogenerated Trusty makefile rules
    
    Bug: 281857510
    Change-Id: I724eb8c8e3361bdc21fcb5d8b29ea6fb2617c648
    
    *external/rust/crates/unicode-ident updated to 61b9a1d38c006c7233b01508601f0896fcf2d5a3
    Adding autogenerated Trusty makefile rules
    
    Bug: 281857510
    Change-Id: Iefa90cce86d503171878606a31269400b839e1bd
    
    
  - Merge "Add mmap syscall benchmarks" into main
  - Lower CLAT max MTU from 65536 to 1528.
    
    Android's clat is for reaching the internet, which in general
    never has an ipv4 L3 mtu higher than 1500.
    
    (We could probably hit this on a jumboframe enabled IPv6-only
    wifi network [ http://b/292057969#comment18 ] where RA claims
    MTU of 9K [9170])
    
    Bug: 292057969
    Test: TreeHugger
    Signed-off-by: Maciej Żenczykowski <maze@google.com>
    Change-Id: I7a32455571458b8a3f1121ad980d54323b2ef06b
    
  - Merge "Reland 'Apply uid of original caller when starting LE scan by PendingIntent'" into main
  - Merge "Setup test case for APFv6" into main
  - Merge "[pvmfw] Use hkdf from libbssl instead of bssl bindgen" into main
  - Add a check to confirm getFileSystem check
    
    Bug: 302743398
    Test: presubmit
    Change-Id: I180e8e3e7f6557d789f395703cd1c36bdfe6f413
    
  - Delete file before hardlink to avoid errors of already existing
    
    Test: presubmit
    Bug: 290951369
    Change-Id: I4611be092ce60a6252149613f873bf3f857ccc7e
    
  - Refactor Android.bp file.
    
    Query Blaze for a list of source files and build a monolithic
    module instead of trying to replicate the structure of the
    upstream BUILD file.
    
    Bug: 266055490
    Test: presubmit
    Change-Id: I7cb26d39a53688af3f6f195b2206dde6f5d65c71
    
  - Merge "[uwb] Add countdown check after start ranging session" into main
  - Merge changes I52fcfd3f,I6de4abdc,I1e8944de,I9525bfe0,Ife09fef8, ... into main
    
    * changes:
      Use carrier service changed callbacks when flag is on
      Delete slots as the listeners are unregistered.
      Have a full class (not inline) for privilege listener
      Update the carrier service UID when onCarrierServiceChanged
      Pass the modem count to registerCarrierPrivilegeListeners
      Reorder add/remove/register/unregister carrier listeners
    
  - Merge "Remove debug only restrictions to network tracing" into main
  - Autoupdate of 2 submodules
    
    *device/google/cuttlefish updated to 333d31a08a297c4334c93595bd3b3d5acfb14d1b
    Merge "Revert "Install bootcontrol HAL APEX"" into main
    *hardware/interfaces updated to ac9f70ee2fdae67f8c44ce02ef6238b5d93314dc
    Merge "Revert "Add bootcontrol HAL APEX"" into main
    
  - Merge "Update cmdline-tools to ab/10883828" into main
  - Exclude the testcases which requires latest NetworkStack module from ConnectivityCoverageTests.
    
    Bug: 287798985
    Test: TH
    Change-Id: I414f51f5f4e3ce74acce86e3a69db74e30078b81
    
  - [uwb] Add null checks for callback and executor in oem extension
    
    Test: Compiles
    Bug: 302259017
    Change-Id: Ia0caaabb74728d666b4d0a5ad95b276d0f3657c4
    
  - Merge changes from topic "am-6e46dd0f76004cb5a2547f94ea3e40e5" into main
    
    * changes:
      [automerger skipped] Merge "Add a generics test plan with multiple includes" into android13-tests-dev am: 4196509d22 -s ours
      [automerger skipped] Add a generics test plan with multiple includes am: b5692ee611 -s ours
    
  - Merge "Add and change APNs in Hong Kong mcc454" into main
  - Merge "Delete staging directory after creating module package zip" into main
  - Merge "Address comments on aosp/2765367" into main
  - Merge "cts: Increase file size to boost storage performance for SequentialWriteTest" into main
  - Merge changes I167e70d6,If55154d1,I986bfb76,I53bef624 into main
    
    * changes:
      tests: Add riscv64 not executable handling test
      interpreter: Raise SIGILL on undefined instruction
      interpreter: Use FaultLoad/Store
      interpreter: Add FaultyLoad/Store with tests
    
  - Wait for process to exit before unmounting postinstall partition
    
    When postinstall action is cancelled, update_engine sends SIGKILL to
    postinstall scripts and immediately unmounts postinstall partition.
    However, if the subprocess hasn't exited yet when we attempt to
    unmount, there might be open file descriptors preventing the unmount
    
    Test: th
    Bug: 302336751
    Change-Id: I2913957eb97a917e328609e801f8c1a944a5673b
    
  - Merge changes from topic "am-19a1407a0a354ffb856cfedf75426530" into main
    
    * changes:
      Merge "[DO NOT MERGE] Fix testSpeakerphoneIntent for no speaker" into android13-tests-dev am: 79d876b5be
      [DO NOT MERGE] Fix testSpeakerphoneIntent for no speaker am: 65613adbe8
    
  - Merge "Update libphonenumber to v8.13.22" into main
  - Add snapshot feature server implementation
    
    Add the implementation for snapshotGce.
    Add suspendGce/resumeGce/stopGce which are necessary calls to happen
    before/after the snapshot call.
    
    Bug: 293357673
    Test: tools/tradefederation/core/tradefed.sh run singleCommand host -n --console-result-reporter:suppress-passed-tests --class com.android.tradefed.device.connection.AdbSshConnectionTest
    Change-Id: Id7d886d38d22e4be73b023df47b7a868910165bf
    
  - Merge "disallow 32-bit *system* userspace on 6.2+" into main
  - Merge changes from topic "am-80d2cdf99d5845b7b94f983272344bf2" into main
    
    * changes:
      [automerger skipped] Merge "enable telecom CTS on devices without Telephony" into android13-tests-dev am: bca8bd4217 -s ours
      [automerger skipped] enable telecom CTS on devices without Telephony am: 510f4ee287 -s ours
    
  - Merge "Merge "Directly launch activity in secondary split root" into android13-tests-dev am: 4e6dfdf598" into main
  - Broadening the fix for handling of zero-length descriptors.
    
    Usage of Corsair usb hubs results in zero-length descriptor
    (thereby resulting in uninitialized type field). Widening the
    conditions under which the loop-break is introduced, and also
    logging the value of the type field.
    
    Bug: 302212871
    Test: Manual test in the field
    Change-Id: Id943c959cc925749b26230c429f23e3f68ef0b56
    
  - [automerger skipped] Allow for server-side configuration of libstagefright am: 74ced30a63 -s ours am: 6d6c375441 -s ours am: d9c3aec4f2 -s ours
    
    am skip reason: Merged-In I72670ee42c268dd5747c2411d25959d366dd972c with SHA-1 6d3e772828 is already in history
    
    Original change: https://android-review.googlesource.com/c/platform/system/sepolicy/+/2762385
    
    Change-Id: Iacb6a5a7d103fd7125a5bdf48e2438fd3aece40e
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Merge "[ui] Add screenshot track" into main
  - Merge "Remove unused btm_read_remote_features_complete" into main
  - Merge "Don't memset() in the soinfo constructor." into main
  - Merge "Import AndroidX from build 10877805" into main
  - Merge changes from topic "am-fbacc3b9f9fb43448e622fc1354fc2cc" into main
    
    * changes:
      Merge "RESTRICT AUTOMERGE Add scroll to show cancel button on smaller displays" into android13-tests-dev am: 6119b73ed4
      RESTRICT AUTOMERGE Add scroll to show cancel button on smaller displays am: f29f49a533
    
  - Merge changes from topic "am-55ebae9f44ee4a74bd7deb82ff6a3e8c" into main
    
    * changes:
      [automerger skipped] Merge "Merge "Merge "Ensure revocation time is in the past when testing OCSP." into android12-tests-dev am: a542e6a991" into android12L-tests-dev am: a83fa5f157" into android13-tests-dev am: 141677d8c2 -s ours
      [automerger skipped] Merge "Merge "Ensure revocation time is in the past when testing OCSP." into android12-tests-dev am: a542e6a991" into android12L-tests-dev am: a83fa5f157 am: 83e7d554b9 -s ours
    
  - Merge "[uwb] Add countdown latch for oem extension callback" into main
  - Ensure verity is enabled in incremental flashing
    
    Also fallback to full flashing when possible
    
    Test: presubmit
    Bug: 290951369
    Change-Id: I4b9bf4a129eee063a31a00a7738d9f23459562e2
    
  - IA2: Remove unused vars for gd code
    
    Bug: 302317771
    Test: m .
    
    Change-Id: I65e7756ec7de1f5cccfb7f8c6957bcfbc8829128
    
  - Merge "Run java formatting on upload" into main
  - Merge "Fix running device detection in CleanPriorFiles" into main
  - Merge "Raise minSdkVersion to fix lint error" into main
  - Merge "[bssl] Add HKDF wrapper to libbssl" into main
  - Add Vrsub instructions.
    
    Bug: 300690740
    
    Test: m berberis_all
    Change-Id: Ic7393a552adf76388be3b47e26f66e794127088c
    
  - Upgrade googletest to most recent upstream version.
    
    Changes needed to complete the upgrade:
    
    - Bump GMock C++ version to C++14.
    - Set gmock_tests to C++14 to work around an issue with
      ExpectCallTest.NonMoveableType, which fails to compile
      with the current AOSP compiler.
    - Disable -Wthread-safety-negative for the Notification type
      (breaks code that enables -Werror).
    - Disable -Wfloat-equal in AppropriateResolution (ditto).
    - Disable -Wuser-defined-warnings for the pointer printer
      to avoid errors in mock methods from the std namespace
      manipulation in android-base/logging.h.
    - Temporarily add an inclusion of <iomanip> to
      gtest/internal/custom/gtest-port.h. This header was previously
      included by gtest/internal/gtest-internal.h and many tests
      do not include it explicitly.
    - Remove the newline added in AddTestPartResult so that the
      golden output tests in gtest_isolated_tests do not break.
    
    Bug: 271622675
    Test: presubmit
    Change-Id: Ic34a9add234dbbc5fc5162d0408c78844f2ae1e6
    
  - IA2: Change bta::dm::gatt_history_callback from a copy to a reference
    
    Bug: 298524037
    Test: atest bt_host_test_bta
    
    Change-Id: I3c75513cacc639661cec1f3a82eb8870dda01151
    
  - Implement METADATA protobuf changes for go/tp-metadata-id
    
    Test: TreeHugger
    Change-Id: Ib23685b35c961595e112c74c6f07cdf4e60e5342
    
  - Merge "Revert^3 "Make the target_files zip reflect the recent partition change"" into main
  - Merge "Floss: set |a2dp_uipc| to nullptr after clean" into main
  - Merge "avoid NullPointerException" into main
  - Merge changes Iaf39e9e8,If725a3b0,Ia3eeeae6,I88eada64,I41ed2ada, ... into main
    
    * changes:
      Rename PacketRetransmittingState to MessageExchangeState
      s/Millis/Ms/ for brevity
      Start transaction timer when the first message is sent
      Move transaction-related fields to PacketRetransmittingState
      Move packet validation to PacketRetransmittingState
      Pass transId and elapsedTimeMs through build message functions
      Pass transaction id and elapsed time to sendPacket
      Every message exchange should start a new transaction
      Only enforce t1 <= t2 and t2 <= preferred if t2 is not zero
    
  - Merge "Revert "Revert "[uwb] Add flagging support to uwb""" into main
  - Merge "Add VDM team as owner of the companion Android.bp file" into main
  - Merge "Add wifi connection info and increase tx timeout" into main
  - ndk: add strerrorname_np to vic and current ABI
    
    Bug: 156513478
    Change-Id: Iebace8061838632d21b66ccf51e38fafbd708b21
    Signed-off-by: Aleksei Vetrov <vvvvvv@google.com>
    
  - Remove duplicate entries in expectation file.
    
    Entries are already in the libcore_gcstress_failures.txt.
    
    Test: run-libcore-tests
    Change-Id: I0d024fdf7a1d91477be68c4eb883d95981d255dc
    
  - Update clang-tools to ab/10774124
    
    Needed to bring bindgen up to 0.65.1 for Rust-in-Linux
    
    Bug: 302590988
    Test: TH
    Change-Id: I9daedf3e2c4c6dbf951d7db5a18fe20a7fb3e147
    
  - Upgrade toybox to b3fd188e6e6ccc2af77412cd261feeedaab249a1
    
    This project was upgraded with external_updater.
    Usage: tools/external_updater/updater.sh update toybox
    For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
    
    Test: TreeHugger
    Change-Id: I2e1d8421731db15c53d890b24960c3d50dab92bb
    
  - Adding Max Metrics Memory Check to Avoid Warning
    
    Currently, when max_metrics_memory_kb is not set, our code sets the
    value to 0. This leads to a warning being printed. We want to avoid this
    warning when the field is not set.
    
    Bug:292249544
    Test: m -j
    Test: statsd_test
    Change-Id: I36e431ba6ec6eba6bfeb8a7fd91fb8505926105c
    
  - Merge "libaudiohal@aidl: Fix position and latency reporting" into main
  - Merge "Bumping package version number for release: 34.0.5" into main
  - Autoupdate of 4 submodules
    
    *cts updated to 12639ec0ee6afc506c6844c715e048e34cd0856d
    Merge "Nfc: Check for hardware support in tearDown()" into main
    *frameworks/base updated to b63e63a28055906e1b5c2295f967194e6524dac4
    Merge "Nfc: Add CtsNfcTestCases as presubmit to the test mappings" into main
    *packages/apps/Nfc updated to d7b41796c1015dfecacd7f48cfd108b8197055cc
    Merge "Add CtsNfcTestCases as presubmit to the test mappings" into main
    *system/nfc updated to 4f536f7c340039537f17914314b776d59ad57c66
    Add CtsNfcTestCases as presubmit to the test mappings
    
    Bug: 302547310
    Test: NA
    Change-Id: I5929d6192f840d2e624124c2239483102b4a5467
    
    
  - Upgrade bc to 6.6.1
    
    This project was upgraded with external_updater.
    Usage: tools/external_updater/updater.sh update bc
    For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
    
    Test: TreeHugger
    Change-Id: I707fc138c7218abbe3a45a742622b4549302b493
    
  - Allow pass in multiple JVM args by env variable for sandbox subprocess
    
    Test: presubmit
    
    Bug: 300287652
    Change-Id: I2778b2fa1027dd9f7ec4a054ade20a06c5036682
    
  - Update the unwinding code for C++20.
    
    I've just turned off the "please stop using volatile" warnings for now,
    since someone should probably pay closer attention to what's actually
    needed there.
    
    Test: treehugger
    Change-Id: I8b5877196c4749b9a91a7cb5ecc5151af5ab72da
    
  - Merge "Merge "Revert "Exclude CtsSecurityTestCases tests from cts-on-gsi"" into android13-tests-dev am: 89e943379c" into main
  - Merge "[Test][bssl] Test HMAC-SHA256 with test cases in RFC 4231" into main
  - Merge "Use `cvdr` for remote instance management." into main
  - Autoupdate of 4 submodules
    
    *build/soong updated to fc5ff341e85a8db63b2aa4f7f38541d549fc2a9a
    Merge "Skip @bazel_tools// labels from ninja" into main
    *prebuilts/bazel/common updated to 4f2c4c05a85c6ffe6943f9f1797ccf03db19ca78
    Updates bazel to af426041
    
    Test: release_bazel.py
    Test: m nothing
    Change-Id: I3903e95f01c7ffb5d7c1379f2ce9858583619950
    
    *prebuilts/bazel/darwin-x86_64 updated to 83e0a6c7e94d71ac0e39c1c09c318ec9471c5536
    Updates bazel to af426041
    
    Test: m nothing
    Test: release_bazel.py
    Change-Id: I915ca4c8a272edfdcc8856e1655857f537369fcc
    
    *prebuilts/bazel/linux-x86_64 updated to 044bfe1ceb67609dfeb961a719e602483fda3156
    Updates bazel to af426041
    
    Test: m nothing
    Test: release_bazel.py
    Change-Id: I7143e1d57491b619096806d40e5e985f99385357
    
    
  - Refactor handling of Vector instructions.
    
    Move handling of immediates to decoder.h and general purpose registers
    to semantics_player.h.
    
    Bug: 300690740
    
    Test: m berberis_all
    
    Change-Id: I9a9a209fcd58a3076d41c8ef255ca1a6b6f023f5
    
  - Merge "Add guest OS capability: SecretkeeperProtection" into main
  - Merge "Delete temporary files after d8 and r8 rules" into main
  - Merge "Delete legacy TEST_MAPPING file" into main
  - Upgrade coset to 0.3.5
    
    This project was upgraded with external_updater.
    Usage: tools/external_updater/updater.sh update rust/crates/coset
    For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
    
    Test: TreeHugger
    Change-Id: I2a7ebac9bf1076944cae21d038afccf90fb7f7a9
    
  - Include the ImageHeader in the passed 'data' to ImageHeader::WriteData.
    
    The method expects it.
    
    Test: image_test.cc
    Bug: 302114427
    Change-Id: I1345d18ee586ecd2af87197f234c01d9812f7aa8
    
  - Use OatQuickMethodHeader::IsStub for finding entry points.
    
    This is needed for the pattern match compiler, where we set C++ methods
    as ArtMethod entrypoints.
    
    Test: test.py
    Change-Id: I488253bda374f460590c02a459af85a3842ef0cc
    
  - Autoupdate of 5 submodules
    
    *build/make updated to d577d60221d513f3e35fd854feb2ceaacefa3699
    Merge "Added new framework-pdf jar inside MediaProvider module" into main
    *build/soong updated to 477a31271da3e41b9662b97cf7683c39b376ff44
    Merge "Added new framework-pdf jar inside MediaProvider module" into main
    *frameworks/base updated to e6c4de26af14ee5112325a1ff013f158317400de
    Merge "Added new framework-pdf jar inside MediaProvider module" into main
    *packages/providers/MediaProvider updated to 4fc49d6a4c965598996e923975c3e5cbfb09a8ff
    Merge "Added new framework-pdf jar inside MediaProvider module" into main
    *prebuilts/sdk updated to ac2cfbc33eda716fa223558f55a51e5ede179caa
    Merge "Added new framework-pdf jar inside MediaProvider module" into main
    
  - Merge "Revert "Revert "Revert "Revert "Add uid logging to tls_handshakes""""" into main
  - Merge "pvmfw: Rollback index of kernel & security_version" into main
  - Merge "Add NetworkStackModuleTest exclusion for ConnectivityCoverageTests in TEST_MAPPING." into main
  - Merge "Use clock_gettime to get thread time on Mac" into main
  - Merge "leaudio: Handle double StartStream request from the AudioHal" into main
  - Merge remote-tracking branch 'aosp/metalava-main' into 'aosp/main'
    
    Merge performed by:
      scripts/merge-from-metalava-main.sh
    
    This merge includes a number of changes so this contains a list of all
    the affected bugs.
    
    Bug: 286023667
    Bug: 294556178
    Bug: 295013652
    Bug: 297362755
    Bug: 300081840
    Bug: 301076671
    Bug: 301282006
    Bug: 301285165
    Bug: 301969474
    Bug: 302526377
    Test: m checkapi
    Change-Id: Iccaca682f609feb6070cb1cd18a84d2693f2315c
    
  - Merge "Add test for the Vsub instructions." into main
  - Merge "Add test for the Vadd instructions." into main
  - Merge "Add support of vstart, vl, vta, vma and vlmul > 4 to TestVectorInstruction" into main
  - Merge "Add test for the Vadd.vv instruction." into main
  - Add API for APFv6
    
    Add new apf_version(), apf_allocate_buffer() and apf_transmit_buffer()
    APIs that needed to be implemented in the firmware code. Rename the
    accept_packet() to apf_run().
    
    Bug: 293811969
    Test: TH
    Change-Id: I8a31cbb588b59d351eb219fc7d1c6957830ea4d5
    
  - Merge "add testcases for rust output file paths" into main
  - Merge "Fix handling of zero-length descriptors." into main
  - Merge "C2Fence: fix ready() of pipe based C2Fence" into main
  - IA2: Properly type bta::sys::tBTA_SYS_ID
    
    Bug: 298669075
    Test: m .
    Change-Id: Ia2f17d8d92b8bfd0f0d0bfaf0d307f2e76d23c6d
    
  - Merge changes Ifd7abd8a,I39cab8ff,I6b3270d6,Ia28c6abc,If47d7e23 into main
    
    * changes:
      Move the MULTI_SIM_ACTION receiver inline
      Inline registerForCarrierChanges
      Make mThread a local
      Introduce a flag for using the carrier service changed callbacks.
      Have DevSdkIgnoreRunner support @Parameterized parameters
    
  - Change the APF_INTERPRETER_H_ to APF_INTERPRETER_V5_H_
    
    The both this header file and apf_interpreter.h for APFv4 will be
    included in apf_jni.h. Renamed the macro name to allow both API from
    APFv4 and APFv6 to be included correctly.
    
    Bug: 293811969
    Test: TH
    Change-Id: I59d59a46178588df2f479a9c7370670b26138272
    
  - Merge "Exclude testGetNeighborsQuery from NetworkStackCoverageTests." into main
  - [RESTRICT AUTOMERGE] Add missing <assert.h> includes
    
    Bug: 175635923
    Test: treehugger
    Change-Id: I2fb72581c75e23586974548dcfc474690c3dde79
    Merged-In: I2fb72581c75e23586974548dcfc474690c3dde79
    
  - Merge "Add Unifique APNs to sample apns." into main
  - Merge "Add more necessary infra to CSTest" into main
  - Generate build_number.txt only once
    
    build_number.txt was generated in runKati, and runKati is run multiple
    times throughout the build. If a build number is not set, then one will
    be generated using the current timestamp, meaning that multiple
    different build numbers will be used in different phases of the build.
    
    Instead, generate build_number.txt during SetupOutDir(), so that we
    only have 1 build number.
    
    This is a resubmission with a change to ensure out/soong is created
    before writing the build number file.
    
    Bug: 297269187
    Test: edit a bzl file to force bazel to rerun, change the code so that use_fixed_timestamp=true during partition builds, m installclean, m bazel_sandwich, and observe that the bazel/make partitions are byte-for-byte identical
    Change-Id: I47abcca166c701bb66a6a7731aecad5818279244
    
  - Autoupdate of 2 submodules
    
    *frameworks/native updated to ecf372879bdbb2a6fef8f738fba3846e44fe0e7e
    Merge "make it clear mGpuMemTotalMap is R/O" into main
    *packages/modules/Connectivity updated to d58042e0d431f280e622c501cea288699530beec
    Merge "reverse BpfMap & BpfMapRO inheritence to make sense" into main
    
  - Autoupdate of 2 submodules
    
    *packages/modules/Connectivity updated to 241e110c6c47af7d8d15426cd2044127deacd018
    Merge "Update the logic of isFeatureEnabled and isFeatureNotChickenedOut" into main
    *packages/modules/NetworkStack updated to 31846af6404cb3d21a78482104c8d13e1446ae7b
    Merge "Follow isNetworkStackFeatureNotChickenedOut args change" into main
    
  - Merge "use BpfMap's resetMap() for creating new maps" into main
  - Merge "Fix flaky testIgnoreIpv6ProvisioningLoss_disableAcceptRaDefrtr." into main
  - Add encrypted data for 5.4 feature
    
    Bug: 301978669
    Test: atest pts-bot:GAP/ADV/BV-20-C -v
    Change-Id: I1de16e3da796ac04fd972a41caf396b2f3f09aa1
    
  - Merge "Match new google benchmark help output." into main
  - Merge "RootCanal: Update the logic in case of page collision" into main
  - Merge "Revert "Generate build_number.txt only once"" into main
  - Delete VpxFrameParser.cpp
    
    This change removes VpxFrameParser.cpp as it is not built by any targets.
    
    Test: presubmit
    Change-Id: Ia1360a846d7364fa54b68e094dc08279579923a0
    
  - Add device tests to atest_integration_test.sh
    
    Add adbd_test, HelloWorldTests, and CtsGestureTestCases to the atest
    integration test. Switch to using the remote_avd config and rely on a
    passed in RBE instance for the RBE server to use remote device tests.
    
    Test: abtd
    Bug: 302326892
    Change-Id: Ic885b857103de5b19beba9a48fde86bae560e7b8
    
  - Merge "Generate build_number.txt only once" into main
  - Merge "Stop writing launcher_pseudo_fetcher_config.json" into main
  - Clean up trace file from device before exiting
    
    perfetto creates a file in the device for storing the traces. In
    scenarios where we exit the script due to some errors, it is possible
    that perfetto already created the file.  So attempt to clean up that
    file.
    
    Bug: 302332410
    Test: PerfettoTraceRecorderFuncTest, Presubmit
    Change-Id: I309a55e2796020566bf576de0110009b392cf340
    
  - Merge "Floss: Mute false alarm UNDERFLOW after audio stop" into main
  - Fix Transformations.map not being on main
    
    Fix IllegalStateException from new AndroidX SDK drop
    
    Bug: 301546417
    Fix: 301546417
    Test: atest AppHibernationIntegrationTest
    Merged-In: Ie64330e5bbf7fa582bc23622dbe026721bb9be8c
    Change-Id: I41fe35cd61ceda3a25d7f9057a5aaf3f8a2e54fa
    
  - IA2: Separate do_in_main_thread into library
    
    Remove main thread code from libbt-stack as
    it is used throughout the entire stack
    including jni library.
    
    Bug: 301709692
    Test: m .
    
    Change-Id: I864db0e12e5ca7636e2a0076a0483e750e60df65
    
  - Merge "Skip known CTS failures on vendor code till U" into main
  - Merge "Remove other partition's AVB properties" into main
  - Upgrade Gson to version 2.10.1.
    
    Bug: 243950468
    Test: presubmit
    Change-Id: Ib9817864bd7f5a63f79e5f6d0391d210123bc9b1
    
  - Merge "Import AndroidX from build 10876824" into main
  - Merge "Suppressed build time warnings for proto deprecated values" into main
  - Merge changes I29177e20,I67c7fea0,I09f0c261 into main
    
    * changes:
      [le audio] Support rolling window sync for extra remote sources
      [le audio] Improve bassClient sync data to be based on broadcast BIG
      [le audio] BassClient enhancement to allow re-sync with known inactive source
    
  - Merge "Revert "Add OWNERS for wearconnectivity atom test folder"" into main
  - [scudo] Update header without read-modify-write operation (#66955)
    
    We used to update the deallocated block with
    atomic_compare_exchange_strong to ensure the concurrent double-free will
    be detected. However, this operation incurs huge performance overhead
    which takes over 50% execution time in deallocate(). Given that we
    already have the checksum to guard the most double-free cases and other
    block verifications in the primary allocator, use atomic-store instead.
    
    GitOrigin-RevId: 54ddd0762bd0dac31c9e2732bf807cea1785f091
    Change-Id: I8914b848b60f657249563722c944920ed9ae39a8
    
  - Merge "Audio : Add OpenInputMultipleTimes VTS for r_submix" into main
  - ANDROID: Unused variable build fix
    
    Bug: b/302571235
    Test: cd external/minigbm && mma
    Change-Id: If1466c7536ba1f95d2a4a7fa7cc27067c6fe8818
    
  - mock: Update mock_device_interop
    
    Bug: 299365655
    Test: m .
    
    Change-Id: I16cf20e7d5b889404a38dd3153faf1e74ba9929b
    
  - Autoupdate of 2 submodules
    
    *build/soong updated to dec9ce6693cd21c4fb765206c2bd1d72c6b736f3
    Merge "support aidl bp2build changes" into main
    *system/tools/aidl updated to 6186c842efc229c55fc30f91f6d92141541d1bbb
    Make aidl phony mod responsible for bp2build
    
    This effective no-op refactoring prepares for allowlist v2. Allowlist v2
    will require that, to be bp2build-on, a module's dependencies must be
    bp2build-on. Previously, the phony module created by aidl_inteface was
    not the same module that generated its bp2build definition, so any rdeps
    of that phony module could not possibly be bp2build-on. This change
    remedies this.
    
    Fixes: 301676937
    Test: m nothing
    Test: Presubmits
    Change-Id: Id2676856dbe967a629a0af10b62c3c0f62a65a06
    
    
  - Merge "Consistently use `#if defined(__BIONIC__)`." into main
  - Merge "Add the missing copyright headers to the .S files." into main
  - Merge "Introduced a standalone metrics launcher binary to streamline metrics testing." into main
  - [uwb] Interpret sync code as byte array
    
    Test: atest ServiceUwbTests
    Bug: 299072849
    Change-Id: If159d67182b5a5e770a951b6050a957647f7238c
    
  - Merge "Use strerrorname_np() in ASSERT_ERRNO()." into main
  - [scudo] Use MemMap in BufferPool and RegionPageMap (#66788)
    
    GitOrigin-RevId: 4b189961c579c512f0034b1aa9ae69715948fecf
    Change-Id: I905c27abc77f702b02aea728b0be02678827c58f
    
  - Release re-client version 0.116.1.9128bc4 to aosp
    Bug: b/169675226
    
    The change is generated with prebuilt drop tool.
    
    Change-Id: I7f7bb1d3edea55f2d7410b6c2c0653d591f335cb
    
  - Autoupdate of 2 submodules
    
    *external/truth updated to 74313e5f1807380eb4d6feb9ec0f10afcc7ba307
    Alias prebuilt Truth to the source version.
    
    This has the effect of consolidating on one version of the library
    before all of the build files are fixed.
    
    Bug: 255714762
    Test: presubmit
    Change-Id: I9f2c85c89ffeae22d4fba9135d7d26756b106ebd
    
    *prebuilts/tools updated to c47be75b2e4c9ac6716137f56916aa0e7d6761bf
    Merge "Delete Truth prebuilt." into main
    
  - Merge "validate server after client operations" into main
  - Merge remote-tracking branch 'aosp/upstream-main' into 'aosp/main'
    
    ... to pull in https://crrev.com/c/4897926.
    
    Bug: b/300616292
    Bug: b/300194143
    Bug: b/294661992
    Test: launch Cuttlefish, run SurfaceFlinger_test, inspect
          tracing around lifetime of cros_gralloc_driver
    Change-Id: I72c9164c2194af87bab0800fd821b4bc0934f245
    
  - Merge "gfxstream: add egl & gles deps for qnx cross build" into main
  - IA2: Split btu event and btu task
    
    hci event handling and main thread tasks are
    unrelated and should be separated.
    
    Bug: 301776146
    Test: m .
    
    Change-Id: I63ae8debf53ab6a0ae618202e10958b541644336
    
  - Merge "Remove an obsolete TODO now we have a new clang." into main
  - Merge "Remove incorrect package check in test override" into main
  - Merge "[LEA] Fix not select 32k in software path" into main
  - Don't depend on String8 cast to C string
    
    Bug: 295394788
    Test: m checkbuild
    Change-Id: I89e8dbd1b2e937c6ed8dc19f77cd014c99bd79f0
    
  - Merge "Apply MainlineTestModuleController to StasdTestUtilsTest" into main
  - [automerger skipped] Allow for server-side configuration of libstagefright am: 6d3e772828 -s ours am: 35d4336d4c -s ours
    
    am skip reason: Merged-In I72670ee42c268dd5747c2411d25959d366dd972c with SHA-1 1b32bccc1a is already in history
    
    Original change: https://android-review.googlesource.com/c/platform/system/sepolicy/+/2762618
    
    Change-Id: I4eea155c28552d50ebcb312aa162dab2863e2483
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Merge "Don't depend on String8 cast to C string" into main
  - Merge "Resolved Unexpected-exit crash." into main
  - Merge "Add tmp file to ramdom_fd for parcel fuzzing" into main
  - Merge "Require security version from the android.16 profile" into main
  - Merge "Update bp2build tests to use stubbed defs" into main
  - Merge "Keep fs_mgr_vendor_overlay_test in internal cf." into main
  - Autoupdate of 3 submodules
    
    *build/soong updated to 0843b79d8ca43ac4ba676092e8770c0eea1ae087
    Merge "Make the srcjar for bcp available in OutputFiles" into main
    *development updated to 08709dccaf55e2441e40f4c56f5d1a75c91d4ea2
    Merge "Replace logic for sdk source jar" into main
    *frameworks/base updated to 53565bfdb0193e38f96811b58f433d961711681f
    Merge "Make bootclasspath srcjar available to make" into main
    
  - Move a method from installer class to device util
    
    The grant permission method is not related to apk installer and so is moved to the device utils.
    
    Test: atest csuite-harness-tests
    Change-Id: Ib38556634abe390486d53048988f79bf0ae0d901
    
  - Merge "CtsNfcTestCases: Restore mocked NfcService class following NfcAdapter tests" into main
  - Merge "Add srcjar output for platform_bootclasspath" into main
  - fix a compile error
    
    Test: TreeHugger, m bpf_benchmark
    Signed-off-by: Maciej Żenczykowski <maze@google.com>
    Change-Id: Ib38c429be6d217ab0e13ed6c33923ecf5fc8f523
    
  - Merge "add time_to_running_state for the duration between launch and app start time." into main
  - Merge "SMP over BR: Clear LE link key info for temporary bond" into main
  - Merge "Collect transitive source files for java modules" into main
  - Autoupdate of 3 submodules
    
    *build/make updated to b78b33404118ff31e385129fe91a2cea9bfecf5c
    Merge "Add extra variables to soong.variables" into main
    *build/bazel updated to f42fdf4930cb5fd4df7b5b4c9994614fcf21d0c3
    Merge "AVB and selinux support in partitions" into main
    *build/soong updated to 6ed1e0fd590f8866e3933c20aa85f168c5b62869
    Merge "AVB and selinux support in partitions" into main
    
  - [intrinsics] Support MachineInsn in AsmCallInfo
    
    This allows automatic implementation of intrinsics for heavy optimizer
    frontend.
    
    Bug: 295189784
    Test: mm and berberis_host_tests
    Change-Id: Iea19dd5fa2b959b78070162d248ae5e543d0681d
    Merged-In: Iea19dd5fa2b959b78070162d248ae5e543d0681d
    
  - Merge "Define flag_alias for build_id, target and branch." into main
  - Make PrintDump print to any ostream
    
    Maintain the existing behavior of the derive_sdk binary printing
    to stdout, but allow callers to pass other streams as well.
    
    Bug: 277891386
    Test: run derive_sdk --dump
    Change-Id: Id68b6d31326b88bcb8df400e9520ad370dab7e11
    
  - Refactor derive_sdk loop
    
    Instead of listing /apex and looking for .../sdkinfo.pb files in each
    apex, just iterate through the apexes who's sdkinfo.pb we actually
    care about.
    
    This allows running the code from processes that don't have permission
    to list /apex.
    
    Bug: 277891386
    Test: atest derive_sdk_test
    Change-Id: I1ff1c471fa4f05f871cf362be8c171d44b86a3a1
    
  - Merge "Always drop deps from android_library with no srcs" into main
  - Merge "Add a simple usage guide for analyze_build" into main
  - Merge "Import AndroidX from build 10870640" into main
  - Merge "rust: Import protos from dependent rust_protobuf" into main
  - Merge "Increase timeout for java hprof tests" into main
  - Merge changes I6555ec2e,I8da9ba30 into main
    
    * changes:
      gfxstream: Use auto-generated function table for Fuchsia
      gfxstream: auto-generate Fuchsia ResourceTracker function table entries
    
  - [ui] Bump state version due to backward incompatible changes to some
    track info state objects.
    
    Change-Id: I494d0c53d4aa2f89f24f1b975147a7a49ddeb7d3
    
  - Use module specific soong variable when last_optional_release is set.
    
    The original idea of using module specific soong variable was for the modules when they start off as optional module (before transition to mandatory). However, practically at build time, it can remain optional. For now, we will keep self.last_optional_release as the condition and the module can have their specific variable (for enabling/disabling prebuilts) by setting last_optional_release.
    
    Bug: 301183608
    Test: atest mainline_modules_sdks_test --host
          packages/modules/common/build/mainline_modules_sdks.sh
    Change-Id: I8af5d3dd8733d244c2ade1d9b5118308b3c00622
    
  - Merge "Add test for vm for intrinsics" into main
  - Merge "Add test for vl for intrinsics" into main
  - Merge "tools: add utilities to record traces with reporter API" into main
  - Merge "[ui] Fix broken thread_state -> cpu_slice links." into main
  - Revert "Disable 2265-const-method-type-cached for redefine-stress."
    
    This reverts commit 316f5e7824d6582cb0f3084f7a63ecdf5c5924a2.
    
    Reason for revert: aosp/2763185 is reverted
    
    Change-Id: I58d041819d64ff331fb31f6affd66d5f0e3381ab
    
  - Merge "Add missing inclusion of <iomanip>." into main
  - Merge changes from topic "am-a2c28436e89b49cc8045c925856818d7" into main
    
    * changes:
      Merge changes from topic "am-964909a19a5441ea9269a8f3bdb2d26f" into android13-tests-dev am: 364365dfe5 -s ours
      [automerger skipped] Merge changes from topic "am-772994f7e3354d4faf8417e72762258a" into android12L-tests-dev am: 17aea3ea95 -s ours am: 7bee3217c0 -s ours
    
  - [refactoring][bssl] Move check_int_result to util module
    
    To facilitate its reuse in other modules such as hkdf and aead
    later.
    
    Test: atest libbssl_avf_nostd.test
    Bug: 302286887
    Change-Id: I5373047dcd6c264eee872d46c616cd1c2b475192
    
  - Remove --test-config-select from ROBOLEAF_UNSUPPORTED_FLAGS
    
    The `--test-config-select` flags enables users to specify the test
    configuration to use when multiple configurations are defined within the
    same module. Importantly, this feature does not impact the functionality
    of the Roboleaf mode, as a consequence, it is deemed safe to exclude
    this flag from the unsupported feature list.
    
    Bug: 302421038
    Test: atest-dev HelloWorldTest --test-config-select -c
    Test: atest-dev HelloWorldTest --test-config-select -c --no-bazel-mode
    Test: atest-dev UiBenchMicrobenchmark --test-config-select -c
    Test: atest-dev UiBenchMicrobenchmark --test-config-select -c \
      --no-bazel-mode
    Change-Id: Ib324e1efe6e39d0155ab98e68946d12cfe23cd53
    
  - Merge "le_audio: Split AudioStreamDataPath to Data Path and CIS state" into main
  - Merge "Revert "Format userdata image when fs type changed"" into main
  - Support to customize host package build id.
    
    Add additional flag alias for host package build id and host package
    build target.
    
    Bug: b/297097604
    
    Test: acloud-dev create --host_package_build_id 10678638
    --host_package_build_target aosp_cf_x86_64_phone-trunk_staging-userdebug
    
    Change-Id: Ie7c2d0de1a9ffe9b5904b6741c3f5d010ab961bf
    
  - Merge "Remove java generated files" into main
  - Merge "Revert^2 "rustSetToolchainSource to use linux-x86 srcs"" into main
  - Merge "C2AllocationGralloc: refactor for media.c2 aidl" into main
  - Merge "Remove unused flag --auto-sharding" into main
  - Revert "Use the same cache for MethodType-s created in native and managed code."
    
    This reverts commit 6c864435021a44110c39b93ca48fa960e382e4c0.
    Ignored unstarted_runtime changes because aosp/2760976 was
    merged.
    
    Reason for revert: circular dependency issue: ThreadLocalRandom.<clinit>() ends up calling ThreadLocalRandom.localInit()
    https://android-build.corp.google.com/artifact/submitted/10869943/art-generational-cc/latest/view/logs%2Fbuild.log
    
    Change-Id: I69b6984fd0bd39710a5bbbac6608d218919f9d07
    
  - Merge "Remove unused --flakes-info flag" into main
  - Autoupdate of 3 submodules
    
    *build/bazel updated to 0d09d5784ca77648dcb1293a3c95e2a745a006bb
    Merge "Hardcode android_test's internal android_binary testonly = True." into main
    *build/soong updated to 6b73be150c57a8453f60963f825853cba4688929
    Merge "Allowlist directories for tradefed's deps." into main
    *tools/tradefederation/core updated to 6e95559f87b9a82b2dc55c08fe508389eb0794c6
    Fix the module type of tradefed's app deps from android_test to android_test_helper_app.
    
    These aren't tests, so they don't need to be android_test modules.
    
    Test: presubmits
    Bug: 302094734
    Change-Id: I31868a8be698d57054654f3bf8bf12a5deda6941
    
    
  - Autoupdate of 2 submodules
    
    *frameworks/base updated to 0c787f5b6e8eac145596a20fd89ac465911311bf
    Merge "Expand @FlaggedApi(Flags.FLAG) in *all* API signature files" into main
    *frameworks/libs/modules-utils updated to a5cb615755ad500ca225df08adb6f5dc123fe9c2
    aconfig-annotations-lib: do not depend on current Android APIs
    
    aconfig-annotations-lib sets "sdk_version: system_current", which means
    the library has an (implicit) dependency on
    system-api-stubs-docs-non-updatable.
    
    Soong will automatically add a dependency on aconfig-annotations-lib to
    every java_aconfig_library. This means that everyh java_aconfig_library
    has an (implicit) dependency on system-api-stubs-docs-non-updatable.
    
    In order for metalava to correctly expand the aconfig auto-generated
    Flags.FLAG constants when generating API signature files, it needs
    access to the defintion of the Flags class(es). This is handled by
    adding the relevant java_aconfig_library{.generated_srcjars} as sources.
    
    In the case of system-api-stubs-docs-non-updatable, adding those sources
    creates a dependency cycle: in short system-api-stubs-docs-non-updatable
    depends on a java_aconfig_library, which in turn depends on
    system-api-stubs-docs-non-updatable.
    
    Break this dependency cycle by changing aconfig-annotations-lib to set
    "sdk_versions: core_current".
    
    Note: the new value of sdk_version is somewhat arbitrary. It can be
    anything (e.g. "34") that doesn't involve the current Android SDK.
    
    (cherry picked from commit a51e64d0f3abcf1115b3170b9150158cb9ffe43a)
    
    Bug: 301859633
    Test: m nothing
    Merged-In: I7f5249ec23802720d4ef6be865ef41266334d7df
    Change-Id: I7f5249ec23802720d4ef6be865ef41266334d7df
    
    
  - Remove unused regression flags in constants
    
    This is the final change removing unused flags of `--generate-baseline`,
    `--generate-new-metrics` and `--detect-regression` where these flags are
    not used for the last 99 days.
    
    Bug: 131879842
    Test: atest-dev HelloWorldHostTest atest_unittests
    Test: atest-dev --help
    Test: atest-dev HelloWorldTest#PrintHelloWorld --roboleaf-mode=dev
    Test: atest-dev HelloWorldHostTest -b
    Change-Id: I40a6084794ce7ff41dd94545cbc4cf9c331f83e9
    
  - Merge "Refactored automotiveSvV1.0_fuzzer" into main
  - Merge "Run mtectrl later in boot sequence" into main
  - Update bp2build tests to use stubbed defs
    
    bp2build tests should not use bp2build_available:false test deps,
    because, with the "allowlist v2" feature, this will cause these modules
    to stop being converted with bp2build. Instead, such test deps should be
    "stubbed", which effectively treats them like targets in pre-existing
    BUILD files on the filesystem.
    
    Bug: 301312260
    Test: m nothing
    Change-Id: I96286daec40aedf3f33c2780ce21c8d2c2cd6200
    
  - Allow NETSIM_ARGS environment variable as a way to pass args when invoking from emulator or cf.
    
    Bug: 301624545
    Test: NETSIM_ARGS='--pcap' emulator @AVD
    
    Change-Id: If39cce1a34e1f1e65fe2cb7766ba6ae283f3b84b
    
  - Delete the MRD check in PacketRetransmittingState.
    
    Consider that MRD constant defined in RenewState and RebindState is a
    bit redundant with known T2 or valid lifetime expiry, actually both MRD
    and T2 or valid lifetime expiry should be triggered simultaneously, to
    simplify the implementation and given Confirm message isn't supported
    yet, just delete the MRD check in PacketRetransmittingState, and rely on
    the rebindTimeout and expirationTimeout on behalf of MRD in RenewState
    and RebindState, which have been scheduled at BoundState#enter.
    
    Then we can also delete the onMessageExchangeFailed callback from
    RenewState and RebindState, which should be never called (both MRC and
    MRD is 0 equivalently for RenewState and RebindState).
    
    Bug: 260934173
    Test: atest NetworkStackRootTests
    Change-Id: Ic608217dd980d1855ced9a0cbe81929c5f827c5e
    
  - Merge "let's at least log the src mac as being the src mac, not the dst" into main
  - Autoupdate of 2 submodules
    
    *frameworks/av updated to cec0166e49b7e514a7e10ae0887422935f6c487f
    Merge changes from topic "c2-aidl-fence" into main
    
    * changes:
      media.c2 aidl: Use pipe() based fd for waitable object
      media.c2 aidl: Implement pipe based C2Fence
    
    *hardware/interfaces updated to c43c449c79a42eb46a078f9998592887f3c0e516
    Merge "media.c2 : Change waitable object to be based on single fd" into main
    
  - Autoupdate of 3 submodules
    
    *build/make updated to 377cf6298748a5388c7a8e4681ce281a44c2dbfb
    Merge "Revert "Add soong config variable Release_expose_flagged_api"" into main
    *build/release updated to 33e10877bf61f43c8fe0effa10ebd9f7d8bb39ed
    Revert "Add RELEASE_EXPOSE_FLAGGED_API release config flag"
    
    Revert submission 2755310
    
    Reason for revert: Broken build b/302407753
    
    Reverted changes: /q/submissionid:2755310
    
    Change-Id: I7b912e6e366e278e3bb8039274d69c642d24dccd
    
    *build/soong updated to 4aa82a13db999ecd3c67a0a2d3d3bdfff75f459d
    Merge changes from topic "revert-2755310-HIIDCMFNIU" into main
    
    * changes:
      Revert "Add soong config variable Release_expose_flagged_api"
      Revert "Add flagged api hide conditional to droidstubs"
    
    
  - Merge "Make platform_mappings file deterministic" into main
  - Correct handling ArtMethod array during class linking
    
    In case of userfaultfd, we were setting declaring_class_ of all
    ArtMethods to nullptr. This could cause problem if a GC is taking place
    simultaneously and it is visiting the ArtMethod array at the same time.
    
    Instead, we should convert the array to a 'no gc-root array' so that
    compaction code skips it. The marking-phase will simply skips it as it
    will no longer be pointed by the class.
    
    Bug: 301880194
    Test: test infra
    Change-Id: I72007dd94ad71aa9ccc6005eb6d99b5a8c1ad7ee
    
  - Autoupdate of 2 submodules
    
    *system/core updated to cfec879ad634e152097550a137909f9d05eba0ec
    Merge "disable sync_on_suspend when flag is set" into main
    *system/sepolicy updated to da002632a27f808b0fb58038b9073f59f6e1e9ba
    Merge "create disable_sync_on_suspend property" into main
    
  - Merge "Update automotive.vehicle OWNERS file" into main
  - Merge "Developed a log parser script for analyzing Clearcut output logs." into main
  - Merge "Add test for vstart for intrinsics." into main
  - unzip device image in parallel for incremental flashing
    
    Also refactor logic to be part of the utility rather than
    leak in the flasher
    
    Test: presubmit
    Bug: 290951369
    Change-Id: I6b9a48a0a355773f0c2faae2e181847f572a692a
    
  - Tradefed (VanillaIceCream)
    
    ** For tradefed version, open version.txt (go/tf-prebuilt-version) **
    
    Tradefed
    ./TradeFedTestApp.apk
    package: name=com.android.tradefed.testapp
    versionCode=34
    versionName=VanillaIceCream
    compileSdkVersion=None
    compileSdkVersionCodename=None
    platformBuildVersionName=None
    platformBuildVersionCode=None
    sdkVersion: 4
    targetSdkVersion: 4
    
    ./TradeFedUiTestApp.apk
    package: name=com.android.tradefed.uitestapp
    versionCode=34
    versionName=VanillaIceCream
    compileSdkVersion=None
    compileSdkVersionCodename=None
    platformBuildVersionName=None
    platformBuildVersionCode=None
    sdkVersion: 8
    targetSdkVersion: 8
    
    This build IS suitable for public release.
    
    Bug: 178523691
    Test: None
    
    Change-Id: Ib5c28142d9fd9c6e86d5616079eca17e17dd35d5
    
  - Merge "Revert "RateLimitTest: temporarily dump ConnectivityThread if setUp fails"" into main
  - Merge "Add strerrordesc_np() and strerrorname_np()." into main
  - Stat-ify device::interop::load_to_database
    
    Bug: 299365281
    Test: m .
    
    Change-Id: If207745c7066acd32ee612ff101841647e983645
    
  - Roll ANGLE from 5afc76e3175b to 2c0f9d20f699 (68 revisions)
    
    https://chromium.googlesource.com/angle/angle.git/+log/5afc76e3175b..2c0f9d20f699
    
    Please enable autosubmit on changes if possible when approving them.
    
    If this roll has caused a breakage, revert this CL and stop the roller
    using the controls here:
    https://autoroll.skia.org/r/angle-android-autoroll
    Please CC abdolrashidi@google.com,angle-team@google.com,rmistry@google.com on the revert to ensure that a human
    is aware of the problem.
    
    To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry
    
    To report a problem with the AutoRoller itself, please file a bug:
    https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
    
    Documentation for the AutoRoller is here:
    https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
    
    Test: Presubmit checks will test this change.
    Exempt-From-Owner-Approval: The autoroll bot does not require owner approval.
    Bug: b/275102061
    Bug: b/280304441
    Bug: b/284462263
    Bug: b/286921997
    Bug: b/288119108
    Bug: b/289544394
    Bug: b/292282210
    Bug: b/292285899
    Bug: b/293349058
    Bug: b/295208838
    Bug: b/297901032
    Bug: b/301024256
    Bug: b/301283364
    Bug: b/301289624
    Bug: b/301653706
    Bug: b/301977186
    Bug: b/302020992
    Change-Id: I3df7527bb128ff36fc768240b6d2787a4e9ec782
    
  - Merge "OWNERS: master -> main" into main
  - Merge "OWNERS: master -> main" into main
  - Merge "[LE Audio] Handle later join case on offload" into main
  - Autoupdate of 3 submodules
    
    *build/bazel updated to 8813086c7afda69e750a557dec4e636e3790d31b
    Merge changes from topic "bazel_framework_res" into main
    
    * changes:
      Define a Bazel rule to build the framework resources
      Create rules_testing local repository.
      Utility function to determine if this is an unbundled app build.
    
    *build/soong updated to 641b62b205bbfd769b05e8c65cba33551cbf02f7
    Merge changes from topic "bazel_framework_res" into main
    
    * changes:
      bp2build support for framework-res
      Keep rules_testing BUILD files
    
    *external/bazelbuild-rules_testing updated to 20475333ee3b46b3bd787955caad990c6fdcabfe
    Merge remote-tracking branch 'aosp/upstream-master' into HEAD
    
    * aosp/upstream-master:
      Fix spelling
      feat: Add DefaultInfoSubject
      docs: add human-friendly changelog
      feat: Add StructSubject
      feat: Allow setting common rule attributes for analysis tests
      feat: add CollectionSubject.transform
      feat: add DictSubject.get
      feat: add file_basename_equals, file_extension_in matchers
      feat: publically expose the rest of the subjects
      docs: link to readthedocs instead of docs directory in readme
      feat: Add CollectionSubject.offset
      feat: Support unit test (non-analysis test) types of tests in rules_testing
      cleanup: Delete unused utils.bzl
      cleanup: Upgrade to stardoc 0.5.6 and enable bzlmod for building docs
      cleanup: upgrade to rules_python 0.22.0
      Add default_applicable_licenses to lib package.
    
    Change-Id: Iaca64c0f3dfbab9dbbedc2fcab1f958aff7f6a0e
    
    
  - Delete dead code
    
    Test: Soong
    Bug: NA
    Change-Id: If671844e4bc36947acd05970d7208816b4e9a926
    
  - Merge "audio: Align Module::getMmapPolicyInfos behavior with legacy" into main
  - [automerger skipped] Allow for server-side configuration of libstagefright am: 1b32bccc1a -s ours
    
    am skip reason: Merged-In I95aa6772a40599636d109d6960c2898e44648c9b with SHA-1 ffeb680417 is already in history
    
    Original change: https://android-review.googlesource.com/c/platform/system/sepolicy/+/2762467
    
    Change-Id: I719b9b0dd51bac4ac0fc513402918ca1c73dbe10
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - OWNERS: master -> main
    
    Change-Id: I403459bcc7c5ca08e356fca2ca1af31efb26d9df
    
  - OWNERS: master -> main
    
    Change-Id: I585740fd004707624bf5d0cc8a741446cad4318e
    
  - pre-upload: fix internal_failure setting
    
    This is a named tuple, so we need to replace the value, not set it.
    
    Bug: 299373007
    Test: None
    Change-Id: I86eb65c484878c11c2f02b6a0c6212943895f922
    
  - Merge "mtp: add <assert.h> and <functional> includes" into main
  - Merge changes from topic "revert-2755469-MKNJAGFRWS" into main
    
    * changes:
      Revert "use regex for sysfs_devices_block policies"
      Revert "simplify virtio-net policy to match virtio-block"
    
  - tp: fix missing const reference
    
    Change-Id: I8e7e9851f5a75755ef1c294463358c63678dccc4
  - Merge "Update and clean up audiorouting_tests" into main
  - Merge "Add aconfig flags for rust keystore2" into main
  - Merge "gbl: Update UEFI application" into main
  - Merge "LeAudioService: Handle double setActive call" into main
  - Merge "OWNERS: master -> main" into main
  - Merge "OWNERS: master -> main" into main
  - Merge "OWNERS: master -> main" into main
  - Merge "OWNERS: master -> main" into main
  - Merge "Fix false positives of go modules in bpbuild-prog" into main
  - Merge "OWNERS: master -> main" into main
  - OWNERS: master -> main
    
    Change-Id: Iad7d1818d1959024d5fd1fc8810d2b7ce0f06e40
    
  - Merge "OWNERS: master -> main" into main
  - Merge "Add devicelock to the list of individually toggleable module." into main
  - Merge "Add frameworks/base/mime to allowlist" into main
  - Merge "Add copyright to libsnapshot/tools" into main
  - Merge "Add binary to write basic COW" into main
  - Merge "Prevent VABC from being disabled on release-key builds" into main
  - Merge "Add APNs for Verizon network mcc999 mnc480" into main
  - Merge "pts-bot: Reactivate some RFCOMM tests" into main
  - Trace fastboot commands
    
    Test: presubmit
    Bug: 302224774
    Change-Id: I35cff878ee341b20eb8958e1e72b9fd951aa903a
    
  - Revert "Update golden_test.sh to be aware of RELEASE_AIDL_USE_UNFROZEN"
    
    This reverts commit aa017d93b28b82fba3556b35ecab35ff1e8f9691.
    
    Reason for revert: b/302231424 broke the 'next' checkbuild in git_main
    
    Change-Id: I746b2d667c171e8a0f24bf0bd24ce30aa01c56c4
    
  - Merge "wear proxy behind portal" into main
  - Merge "shared_lib: Add protozero zigzag decode functions" into main
  - gralloc960/mali_gralloc_debug.cpp: migrate to String.empty()
    
    as suggested by the commit here:
        https://android-review.googlesource.com/c/platform/system/core/+/2705824
    otherwise the following build error will be reported:
        device/linaro/hikey/gralloc960/mali_gralloc_debug.cpp:123:20: error: 'isEmpty' is a private member of 'android::String8'
                    if (!dumpStrings.isEmpty())
                                     ^
        system/core/libutils/include/utils/String8.h:158:33: note: declared private here
            inline  bool                isEmpty() const;
                                        ^
        device/linaro/hikey/gralloc960/mali_gralloc_debug.cpp:132:19: error: 'isEmpty' is a private member of 'android::String8'
                        if (dumpStrings.isEmpty())
                                        ^
        system/core/libutils/include/utils/String8.h:158:33: note: declared private here
            inline  bool                isEmpty() const;
                                        ^
        2 errors generated.
        ninja: build stopped: subcommand failed.
        ninja failed with: exit status 1
    
    Test: build and boot hikey960 build successfully
    
    Change-Id: Ibeb9c99b7c0f2fe4b1991541ba9d29c4ea3929a3
    Signed-off-by: Yongqin Liu <yongqin.liu@linaro.org>
    
  - Add telemetry data proto definition for Thread network.
    
    Cherrypick telemetry data proto to AOSP.
    
    Bug: 286800403
    
    Merged-In: Id0b785c1ab401335a532ab37e8fb112906eb6819
    Change-Id: Id0b785c1ab401335a532ab37e8fb112906eb6819
    (cherry picked from commit c3494677f0c9db2925eb18b1a9693590fd3caaca)
    
  - [NFC][scudo] Fix "comparison of integers of different signs"
    
    GitOrigin-RevId: 2bfcecf4d4afa592ca641191199f8b956e9b3193
    Change-Id: Ia8ca4ca6bf93f65ef811a8b84832a9cdf927b6e4
    
  - Merge "Revert "Revert "Add trusty code coverage controller daemon""" into main
  - Autoupdate of 3 submodules
    
    *build/make updated to 19cd806de1dbf4889f097b2b9b0f3c3b36a2e053
    Merge "Add soong config variable Release_expose_flagged_api" into main
    *build/release updated to 1d3c9bf3e02a35bd86b09df82bea0ff668e8871f
    Add RELEASE_EXPOSE_FLAGGED_API release config flag
    
    The flag determines whether members marked @FlaggedApi is exposed or
    not. The flag is defaulted to true, but is marked false for next
    release.
    
    Test: m nothing
    Bug: 299570421
    Change-Id: Ic46b3b82ba08474b49474f81f2037407a0e1f655
    
    *build/soong updated to af26c102b8f1da0f4eceba9301f13751e6b65a43
    Merge changes from topic "expose_flagged_api" into main
    
    * changes:
      Add flagged api hide conditional to droidstubs
      Add soong config variable Release_expose_flagged_api
    
    
  - Merge "Unsubscribe clients from sensors channel when they’re closed" into main
  - Merge "Import AndroidX from build 10859712" into main
  - Merge "Fix custom image OTA generation with extracted target files" into main
  - Merge "Fix typo in OWNERS file." into main
  - Merge "AVRCP Controller browsing fails with static JNI interface methods" into main
  - Merge "NDK library: fix ABI monitoring error message" into main
  - Merge "Unregister NetworkCallback in NetworkStatsManagerTest" into main
  - Merge "Add additional instance info to log" into main
  - Improve locking logic for sensors handler
    
    Be more precise on subscribe logic and make sure
    iteration over map holds active lock
    
    Bug: 301271216
    Test: manual
    Change-Id: Ibaba5fccfbba1c139da3eaf83973c8bdeaac5436
    Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
    
  - Merge "Remove ambgiuity in format specifier" into main
  - Replace GetInstance and GetHciPort in C++ with Rust os_utils
    
    Test: m netsimd
    Bug: 295398113
    Change-Id: I5521105718ea8832d7cf3fe0017a284dce8bb3d2
    
  - Merge changes I061e624a,I54c23e88,Ie28d74ca,I74b57f7f,I16977638, ... into main
    
    * changes:
      tests: Add NDK system properties tests
      tests: Add NDK signal stress tests
      tests: Add NDK setjmp tests
      tests: Add NDK sigaltstack tests
      runtime: Fix SIGSEGV in executable memory check
      lite-tr: Emit load/store recovery code
      tests: Add NDK signal tests
    
  - Add options that are missing in AOSP but available in main
    
    Bug: b/301363906
    Change-Id: I017d960bce09cdcd4caa7aab40937a1154d49456
    Merged-In: I106721cb6d351c7cd8e25ac1d9c3a37918fa6c06
    
  - Merge "Replacing hardcoded types with decltype() for enforcing static invariants and removing spurious assertions." into main
  - Merge "Revert "Revert "SELinux policy changes for uprobe.""" into main
  - Merge "[rkp] Derive HMAC key from DICE sealing CDI" into main
  - [test] Add API test target for libbssl
    
    And checks the function hmac_sha256.
    
    Bug: 301068421
    Test: atest libbssl_avf_nostd.test
    Change-Id: I3b4ebc9d9bd473b79103038181e2310a523f29a6
    
  - Merge "[ui] Fix details panel restore button." into main
  - Merge "Revert "Revert "Lock down String8|16.string() usage""" into main
  - Merge "Fix paths for unit test media resources" into main
  - Merge "[ui] Fix missing tracks in shared permalinks." into main
  - Merge "Add vset{i}vl{i} instructions." into main
  - Autoupdate of 4 submodules
    
    *external/google-benchmark updated to f45c56f9b5d3c9791589d8e58341b68ac8be1390
    Upgrade google-benchmark to v1.8.3
    
    This project was upgraded with external_updater.
    Usage: tools/external_updater/updater.sh update google-benchmark
    For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
    
    Bug: http://b/301509174
    Test: TreeHugger
    Change-Id: I5070fe3eca4a874fff005ef73b2a42d341b81c5b
    
    *frameworks/av updated to 8ee1950cf52837dd976e20064cae6ae9c61419a0
    Merge "Replace error_occurred with skipped" into main
    *system/logging updated to 479d3c9b5bc6888928652279aa9eea9dfc072050
    Fix comparison of integers of different signs error
    
    Bug: http://b/301509174
    Test: TreeHugger
    Change-Id: I551e2d4a4fd5b3524280b5d7d83fb532cc8a7a80
    
    *system/netd updated to 865f4608992b2e231fea601e56b2aa3ebe65174e
    Replace thread_index with thread_index()
    
    This has been changed in the latest version of benchmark.
    
    Bug: http://b/301509174
    Test: TreeHugger
    Change-Id: I315846873a6fe13f62b0081a91eea40ee03340e2
    
    
  - Add nogncheck to includes behind a buildflag
    
    gn check doesn't understand buildflags.
    
    Change-Id: Iab9aca35cd16880c8a5489ab372c8b5c4897dc88
  - Merge changes from topic "printflags-include-device-config" into main
    
    * changes:
      printflags: add printflags to PRODUCT_PACKAGES
      printflags: include device_config values
    
  - Merge "Revert "Add trusty code coverage controller daemon"" into main
  - [bssl] Remove redundant libcrypto_baremetal in libbssl_avf_nostd
    
    libcrypto_baremetal is already included as static in
    libbssl_ffi_nostd.
    
    Test: atest rialto_test
    Bug: 301068421
    Change-Id: Ibafa44448508a23df1e9b9c2e20e156f548c9ed5
    
  - RISCV: [Codegen] Add VisitTypeConversion
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Change-Id: I25d956b81f821ed0198c68d6023618a7b90094e9
    Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
    Signed-off-by: Wendong Wang <wangwd@xcvmbyte.com>
    
  - Merge "Support Rust builds of some AIDL interfaces." into main
  - RunOnSecondaryUserTargetPreparer - only select a secondary user that isn't "for-testing", remove any non "for-testing" user if it exists
    
    Fixes: 298599509
    
    Test: tapas tradefed-all && m && tools/tradefederation/core/tradefed.sh run singleCommand host -n --class com.android.tradefed.targetprep.RunOnSecondaryUserTargetPreparerTest
    (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:e3625b6488028ecaa183aa719ce1c7f727f28b84)
    
    Merged-In: I60433cb00ff0de478be89c70f83f821dcd5c34a9
    Change-Id: I60433cb00ff0de478be89c70f83f821dcd5c34a9
    
  - riscv64: store double result in two vreg slots
    
    Test: Run these opcodes against all interpreter
    tests on a Linux RISC-V VM.
    
    (1) setup
      lunch aosp_riscv64-userdebug
    
      export ART_TEST_SSH_USER=ubuntu
      export ART_TEST_SSH_HOST=localhost
      export ART_TEST_SSH_PORT=10001
      export ART_TEST_ON_VM=true
    
      . art/tools/buildbot-utils.sh
      art/tools/buildbot-build.sh --target
    
      # Create, boot and configure the VM.
      art/tools/buildbot-vm.sh create
      art/tools/buildbot-vm.sh boot
      art/tools/buildbot-vm.sh setup-ssh  # password: 'ubuntu'
    
      art/tools/buildbot-cleanup-device.sh
      art/tools/buildbot-setup-device.sh
      art/tools/buildbot-sync.sh
    
    (2) test
      art/test.py --target -r --no-prebuild --ndebug --64  -j 12 --cdex-none --interpreter
    
    Clean with `m check_cfi` too.
    Also exercised on cuttlefish boot. No SIGSEGV or SIGILL noted.
    
    Bug: 283082047
    
    Change-Id: I6317bd21236c569e32aba7bd300ecc78d1831e3b
    
  - Merge "Fix capturing KeyboardInterrput in prebuilt" into main
  - Merge "shared_lib: Fix AdvanceToFirstEnabledDynamicCategory" into main
  - Autoupdate of 3 submodules
    
    *build/soong updated to ec59517f6ac8bd8a6553292da6ff697d77aa2322
    Merge changes from topic "reland-rust-sbox-1" into main
    
    * changes:
      Revert^2 "conditionally escape rule builder command"
      Revert^4 "allow Ninja variables in RuleBuilder API"
      Revert^4 "add crate_root property to rust modules"
      Revert^4 "add rust_toolchain_rustc_prebuilt module type"
    
    *prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8 updated to 423a08856a18196830f5e205c29a7c83a1aa4953
    Merge "Revert^4 "add gcc tool inputs to filegroup"" into main
    *prebuilts/rust updated to f459ab789684da92bc8a4caae1c55e07931e975c
    Revert^2 "use correct .so suffix for darwin"
    
    f27a45989ffcb99fe43b0e87dcd287d0e86f4b8e
    
    Change-Id: Iab2fe6ace33407804f34134e0a86bda0a554f9da
    
    
  - Merge "LeAudioService: Handle AudioManager removing Active device" into main
  - Merge "LeAudioService: Do not block API for setVolume call" into main
  - Merge "cronet: Remove unused cronet_disabled api directory" into main
  - Merge "STT: Get disk size data from the stt build test" into main
  - Merge "mpeg4_writer_fuzzer: Bug Fix" into main
  - Merge "Use the ratio of total TCP retransmits as detection signal" into main
  - Merge "Add @AppModeFull annotation to NsdManagerDownstreamTetheringTest" into main
  - Merge "Fix compiling with C++20" into main
  - Merge changes from topic "am-27c69f0de31148c6860d42eec47459d4" into main
    
    * changes:
      [automerger skipped] Merge "Merge "Merge "Add a generics test plan with multiple includes" into android12-tests-dev am: 276f6e0c03" into android12L-tests-dev am: 81de22728b" into android13-tests-dev am: 2ccff3e744 -s ours
      [automerger skipped] Merge "Merge "Add a generics test plan with multiple includes" into android12-tests-dev am: 276f6e0c03" into android12L-tests-dev am: 81de22728b am: afb6f3a691 -s ours
    
  - Merge "enforce_permission_counter: Find targets automatically" into main
  - Merge "Use gmock functions in version_script_parser_test" into main
  - Upgrade gRPC to version 1.31.1.
    
    This version introduces a dependency on RE2.
    
    Local modifications applied:
    - Added missing virtual destructor to ClientReactor, which is
      present in subsequent upstream versions, to avoid triggering
      a compiler error.
    - Fixed some incorrect inclusions in generated UPB code.
    
    Bug: 279548314
    Test: presubmit
    Change-Id: I8043faafa8313d111a84c40779373727c23755ea
    
  - Merge "Import source for ZXing 3.5.2." into main
  - Merge "Fix RBE vars for atest integration test" into main
  - Merge "Use heuristics to run sepolicy_tests faster" into main
  - Merge "[HFP1.9] Make sure LC3 is really supported in host side" into main
  - Merge "nfc(app): Remove unused fields from IntentFilter#dumpDebug" into main
  - Merge "nfc(service): Use public API for application info flags" into main
  - Autoupdate of 2 submodules
    
    *packages/apps/Nfc updated to c12921e5adc01cd49016f3a22e5dd328478475f0
    Merge "nfc(service): Use NfcProperties for nfc.initialized" into main
    *system/libsysprop updated to efab9d17dabd625dde248e9360757b40acebe433
    sysprop(nfc): Use NfcProperties for nfc.initialized
    
    Bug: 268219397
    Test: m PlatformProperties
    Change-Id: I591d81a97f8bc702f42a1b2674d365c3d68cd2fc
    
    
  - Merge "Implementing the --rerun-until-failure functionality using TF's optio in Bazel Mode." into main
  - Merge "Rename .map.txt used by tests" into main
  - Fix cross-branch restriction of incremental flashing
    
    Change-Id: Ied386520cc6a9c5df87e97d30b03bb739853510b
    Test: presubmit
    Bug: 290951369
    
  - Merge "Nat464Xlat: rely on netd events being called on handler thread." into main
  - Merge "Use ro.vndk.version to check if VNDK is deprecated" into main
  - Merge "Initialize the retransmission parameters for Renew/Rebind state." into main
  - Merge changes from topic "am-794984931d72466583e8523d1abf8751" into main
    
    * changes:
      Merge changes from topic "am-36a16c2997b24c12923c6a123d02845e" into android13-tests-dev am: 555d032111 -s ours
      [automerger skipped] Merge "Merge "CTSV: Fix ScrollView in Analog Headset Audio Test" into android12-tests-dev am: 554e7ae91a" into android12L-tests-dev am: 31414dad90 -s ours am: 7e7b6c9095 -s ours
    
  - Merge "Adding an IMS APN for Surf Telecom." into main
  - Merge "Add APN for carrier Italia Power" into main
  - Merge "Retry SDP when we receive an SDP_BUSY response" into main
  - Autoupdate of 2 submodules
    
    *build/bazel updated to 6b84cb2ae6af31670c14b1018518d065b6373b2a
    Merge "Add suffix-less compat symlink for generated test entry point." into main
    *build/soong updated to c5b9abba309e4bb65e6ae69c60b44d0f4b59e278
    Merge "Allowlist libflagtest and FlagMacrosTests." into main
    
  - Merge "Clone ActiveDeviceManager to AudioRoutingManager" into main
  - Merge "should_flash_in_userspace signature change" into main
  - Merge "Fix for ndk having sanitizers" into main
  - Support a two steps drain of Tradefed
    
    Allow to stop scheduling and then shutdown Tradefed
    separately to avoid TF shutting down right after the last
    invocation.
    
    Test: presubmit
    Bug: 294415115
    Bug: 301432405
    Change-Id: Ifc7d46c32582f0d09444bd301fae3593fee71a1f
    
  - Merge "libs: Use Self::capacity() in Fdt::check_full()" into main
  - Merge "PTS-bot: Update mmi2grpc for PTS-setup v8.5.0" into main
  - Merge changes I0b64d84b,I0bd850a2 into main
    
    * changes:
      simplify virtio-net policy to match virtio-block
      use regex for sysfs_devices_block policies
    
  - [automerger skipped] SuspendSepolicyTests: Ignore already labeled wakeup nodes am: 9ba8e81cf4 -s ours
    
    am skip reason: Merged-In I7eb8185821ca7bb277604a67c5443fd5e503e4ea with SHA-1 d32d12bb20 is already in history
    
    Original change: https://android-review.googlesource.com/c/platform/system/hardware/interfaces/+/2763745
    
    Change-Id: If0a08dddb539f119bca56327786595661e8302f2
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Update golden_test.sh to be aware of RELEASE_AIDL_USE_UNFROZEN
    
    The script now reads the current value of the build flag from source.
    For "check" operation, it uses that value to determine which
    golden_output files to check against.
    For "update" operation, it uses the value to determin which
    golden_output files to update, then it modifies the value of the
    RELEASE_AIDL_USE_UNFROZEN flag and reruns it. It will kick off the build
    again to build the interfaces with this new value. This can take
    multiple minutes because it needs to regenrate the build files. It then
    reset the flag value to the previous value, which causes the next build
    to regenerate the build files again.
    
    Test: m aidl_unittests
    Test: golden_test.sh check
    Test: golden_test.sh update
    Test: modify some golden files and rerun both check/update
    Bug: 299364399
    
    Change-Id: Ieb2bbbe21b1489f5094d1c1c14a68e08266a49c7
    
  - Merge "Allowlist part of tradefed deps" into main
  - Work around fix for "libvtswidevine32.so" not found am: 720b897783
    
    Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2762345
    
    Change-Id: Ib27ff1c5ac57426f9368ef9bf3bf401641925e09
    Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
    
  - Merge changes from topic "am-04294feea56147a594021945e245eca8" into main
    
    * changes:
      Merge changes from topic "am-344d8e243d634799a1fff5d69745bbb7" into android13-tests-dev am: f6d9d9e53a -s ours
      [automerger skipped] Merge changes from topic "am-3e05d71f14954bc1afbc82c7e8574e25" into android12L-tests-dev am: 15f1adeeff -s ours am: 8671560174 -s ours
    
  - Merge changes I879933c4,I66022515 into main
    
    * changes:
      Add an integration test to verify ndk libs are not included
      Create a minimal app that builds against the NDK
    
  - Allow dumpstate to make binder IPC to automotive display service
    
    Bug: 280837170
    Test: atest android.security.cts.SELinuxHostTest#testNoBugreportDenials
    Change-Id: I8239ba23bb60b95e7dd07a4c8a99167f1e08192b
    
  - Merge "Fix protozero_to_json_unittests.cc include" into main
  - Merge "Merge "Wifi: Check WPA3 support in 6GHz SoftAp test" into android13-tests-dev am: c9d19dc8dd" into main
  - Merge "Support uint16/uint32 for ENUM Tag." into main
  - Merge "Remove architecture name from names of HOST_*.mk files." into main
  - Add a callback for whether download isDone or not
    
    Test: presubmit
    Bug: 302141502
    Change-Id: Iaae8a28e26456b9effa81e57f11825447fce4a66
    
  - Merge "traced & traced_probes: change cpuset to allow for scheduling on non-little cores" into main
  - Don't append duplicate proto_dep to dep in _java_proto_library
    
    This is the fix for b/302126746
    
    Test: CI
    
    Bug: 302126746
    Change-Id: Id75b16c8c4388471fa515e5c4bca631d9adb9804
    
  - Adds a helper class for passing stuff to and from the feature server.
    
    Bug: 293340724
    Test: TBD
    (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:4a3bb44722092ba31f7bba1bef0ff7d03b131e06)
    Merged-In: I43dcce80ad2a8825233f98419de520659ecb47b3
    Change-Id: I43dcce80ad2a8825233f98419de520659ecb47b3
    
  - Merge "[rkp-hal] Add DICE chain to the CSR in service VM" into main
  - Merge "Work around icu4c C++20 incompatibility." into main
  - Merge "Do not convert android_library_import with no aars." into main
  - IA2: Combine disc state machine and disc actions
    
    Bug: 294134018
    Test: m .
    
    Change-Id: I0876847cbd4b58aa3183168465fbd014e8f0720e
    
  - Merge "Duration metric: Clear trackers more aggressively" into main
  - Merge "descriptor: switched required -> optional to newly added fields" into main
  - Autoupdate of 2 submodules
    
    *art updated to 4646fc66fc85b97a03eb76819bb367181a306ca2
    Fix running uffd GC when transitioning to background state
    
    Added a 'background' collector type for CMC, similar to the one that
    exists for CC.
    
    Bug: 160737021
    Bug: 302022466
    Test: manual
    Change-Id: Ie0aa4cf6591175812b0fd4a6b78cb9d541d9f841
    
    *frameworks/proto_logging updated to 5ccd1e835489aa5defba163273e45e8c3ce4ed81
    Merge "Add CMC background GC Datum" into main
    
  - Merge "Restart the host connection if an IO error occurs" into main
  - Support uint16/uint32 for ENUM Tag.
    
    This commit introduces support for using uint16/uint32 as the underlying
    data type for an enum tag. Prior to this change, the enum tag was
    limited to uint8 data type. With this enhancement, uint16 and uint32 can
    be used, allowing for a wider range of values to be used as enum tags.
    
    Bug: 291356939
    Test: run vts -m VtsAidlKeyMintTarget
    Change-Id: I6a6fe9b7023fb8868e0a0f311e3075256532fdb5
    
  - Merge "RootCanal: Harden the implementation for Set Event Filter" into main
  - Bundle casuploader so we can drop prebuilts to older branches
    
    Test: presubmit
    Bug: 298890453
    Change-Id: I20418e93d7759a3af0d60effeb62c4c2284ab285
    
  - Merge "Revert "ApfGenerator - remove unused add{Div,Mul}{,R1}"" into main
  - [uwb-backend] Use TIRAMISU as anchor while doing version check
    
    Test: verified nearby share with android S
    Bug: 297460627
    Change-Id: Ie291351b3735a19310fee8535fffdd46982514c1
    
  - Merge "Include challenge in test_rkpd_attestation_key_upgrade" into main
  - Merge "Move kernel module options from bootconfig to modules.options" into main
  - Merge "gfxstream: fix meson build system issues" into main
  - Merge "StorageManagerService: fix names of user lifecycle methods" into main
  - Merge "[rkp] Sign the generated CSR with CDI_Leaf_Priv" into main
  - Set fastboot enabled flag only during device connection
    
    Currently we control fastboot enabled flag for virtual devices
    in 2 different places:
    
    1. During creating SSH tunnel
    2. During connection/disconnection to/from remote device
    
    Keep it only during device initial connection to avoid
    the logic conflict.
    
    Example of the conflict: https://android-build.corp.google.com/test_investigate/?invocationId=I13800010198348823&testResultId=TR68728945326879677
    
    Test: fastboot is disabled for goldfish run:
    https://android-build.corp.google.com/test_investigate/?invocationId=I20300010200422014&testResultId=TR85028954183053696&tab=artifacts
    Test: fastboot is enabled for cuttlefish run
    https://android-build.corp.google.com/test_investigate/?invocationId=I37900010200409333&testResultId=TR29428954169767605&tab=artifacts
    Test: cvd start && atest FastbootRebootTest
    Test: abtd 100 runs don't have fastboot related issues
    Bug: 300858577
    Bug: 301000513
    Change-Id: If3391c8caddcd6a366f6d38357b90b54a642bb3b
    Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
    
  - IA2: Straighten out stack::sdp header inclusion
    
    Bug: 302009443
    Test: m .
    
    Change-Id: I9c194c8e3c690aae8a6db9ff8e4e7f15487d7301
    
  - Merge "Set <partition>_available only if it is for device" into main
  - Merge changes Id34d3b9a,I4dc1d719 into main
    
    * changes:
      Add new APi for sending cvd launch comamnds to metrics component
      Add acloud proto buffer interface after execluding semantics , since semantics options don't build properly with android project.
    
  - Merge "Shard srcjars when sharding javac compilation" into main
  - Merge "Don't depend on String8 cast to C string [health]" into main
  - Merge "Stop duplicating <linux/capabilities.h>." into main
  - Autoupdate of 2 submodules
    
    *build/make updated to 596d514744ff85b01526eb127c127aaa90827710
    Merge "Add PRODUCT_NEXT_RELEASE_HID_FLAGGED_API for sdk targets" into main
    *build/soong updated to e4bb4d4e6b4d14b54f5349484dfc28f09e7c0db6
    Merge "Import make variable NextReleaseHideFlaggedApi to Soong" into main
    
  - Update 'next' golden_output
    
    Updated with:
    AIDL_USE_UNFROZEN=false
    $ANDROID_BUILD_TOP/system/tools/aidl/tests/golden_test.sh update
    
    Ignore-AOSP-First: git_main build is currently broken so submitting there to unblock sooner.
    
    Test: none
    Bug: 301309237
    Merged-In: I1fd60abfd1f563de0bab7441e62b3becbfe9ffca
    Change-Id: I1fd60abfd1f563de0bab7441e62b3becbfe9ffca
    
  - riscv64: Add named constants and other codegen cleanup.
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Change-Id: I31b4c1ffa52c6bed217590c51ea6827cccee74ad
    
  - tp: IWYU for standard headers
    
    Specifically a few of these files need the stdint types, so they should
    include cstdint, and one of them needs nullptr_t, so it should include
    cstddef.
    
    This fixes `bazel build trace_processor` on debian/ubuntu.
    
    Change-Id: Ibbe890f8f3fea4a23e341cae1822188ae1efa89c
  - [scudo] Use MemMap for AllocationRingBuffer
    
    Reviewed By: Chia-hungDuan
    
    Differential Revision: https://reviews.llvm.org/D159466
    
    GitOrigin-RevId: 42069258c63dc9b31017f927650c6bac2dfffd89
    Change-Id: I4bd0a832e9840ee254df3b29b66a8d25b01950c4
    
  - Merge "Park RemoteAuth Manager and Service" into main
  - Merge "Add system/tools/hidl to allowlist" into main
  - Merge "Revert "Replace ASan with HWASan"" into main
  - Merge remote-tracking branch 'aosp/upstream-main' into main
    
    Change-Id: I0fb8edacbd3f1bf51c2b3f9a20fcaec7daeb998a
    
  - Update imgdiag scripts
    
    run_imgdiag:
    * Add PID to output filenames.
    * Add option to specify host output directory.
    
    create_dirty_image_objects:
    * Add an option to merge imgdiag files with the same process names.
    * Improve object sorting.
    * Print stats in csv format.
    
    Test: ./run_imgdiag.py --host-out-dir out
    Test: ./create_dirty_image_objects.py ./out/imgdiag_* --merge-same-procnames --print-stats
    Change-Id: I94aba7b241e0a0c2ebfb33ffcc333640c04f2d01
    
  - Autoupdate of 3 submodules
    
    *cts updated to 6d01ac7f8ed5e73e05cf83e647e8b24ff750175a
    Merge "nfc(cts): CTS tests for new container classes" into main
    *frameworks/base updated to 4eb41e2e898343f6df91ad4ae0c1e99706f0cbcd
    Merge "nfc(api): Mark some data types as formal API for mainline" into main
    *packages/apps/Nfc updated to f50a10cd254a730a7465c9c9978e850d364646cb
    Merge "nfc(service): Changes to accomodate formal APIs for service info" into main
    
  - Merge "Fix problems when users passes non_default partitions." into main
  - [bssl] Move ec_key module from rialto to libbssl
    
    Bug: 301068421
    Test: atest rialto_test
    Change-Id: I04f3040f79f1af18b5c76546adcd6616aa052729
    
  - Autoupdate of 2 submodules
    
    *external/boringssl updated to 8f968b79847c8a6f900f8e003a9e3491522723b3
    [avf] Make baremetal crypto libraries available for virt apex
    
    Bug: 301068421
    Test: atest rialto_test
    Change-Id: I3b26400e4a212f97580be58218214e8292379771
    
    *packages/modules/Virtualization updated to c8f88f5757b5637c8d16b3f36dfe2197e447b94d
    [bssl] Add no_std compatible BoringSSL wrapper library for AVF
    
    Bug: 301068421
    Test: atest rialto_test
    Change-Id: I8af77d457f7a956b0bc88ba4a0498483651426b0
    
    
  - update excluded_deqp_cases.txt
    
    Test: the default presubmit tests
    Bug: b/302020618, b/290049349
    Change-Id: Ia2927963f0e8a94ad9cf42723ff2a9143f9ad38d
    
  - Merge "Improve optimize bp2build conditional." into main
  - Update ICU upgrade doc about the ART tests
    
    Bug: 299287991
    Test: n/a
    Change-Id: I4e283cdefb7ee021500b6fbf41bfb400eea6f14f
    
  - Merge changes from topic "am-8f2d48da4af14efd9e61845f64d0cde6" into main
    
    * changes:
      Merge "[DO NOT MERGE] Fixes CTS test to refer to proper type" into android13-tests-dev am: edf47ff55b
      [DO NOT MERGE] am: 6cd9533cef
    
  - Autoupdate of 2 submodules
    
    *external/erofs-utils updated to 65ccd2cccd2d7dfce649e5e124e37ce655f0d54f
    Merge remote-tracking branch 'aosp/upstream-master'
    
    This merges erofs-utils release 1.7
    
    Change-Id: I9b61d094ca3e583aab3604b8d59b36a0024c6b12
    
    *system/update_engine updated to 18e97e02e76e92cc010999dfa2c785cc712e9d58
    Fix erofs-utils 1.7 compatibility
    
    Test: th
    Change-Id: I273fb8937e584fadf8fe7205be75c049a474bdba
    
    
  - Merge "Handle grep finds no matches." into main
  - Autoupdate of 3 submodules
    
    *cts updated to 287963c45706aa0f9f44127b96a9bcd57d56e5cc
    Merge "Used a MGF1 digest setter method" into main
    *external/wycheproof updated to 96b5c298251b62626cbf0a54fd5499b4a253f2cd
    Used a MGF1 digest setter method
    
    Using a MGF1 digest setter method while RSA key import.
    This is required, so that specific MGF1 digest could be used for
    encryption/decryption.
    
    Bug: 284140060
    Test: atest CtsKeystoreWycheproofTestCases:RsaOaepTest
    Change-Id: I60cbcd22e11ebe2a56cea3a52c63e5bb2bdc6d00
    
    *frameworks/base updated to 32b5cf1bacafad01781fb75d90d88b37a2b04911
    Merge "MGF1 Digest: Add separate setter" into main
    
  - Make package parsing code consume annotations
    
    The code previously assumed an annotation meant there was no package
    declaration, but package declarations can be annotated. Update the
    code to consume any leading annotations.
    
    Bug: 151360309
    Test: jar_test.go (& manual verification on full bootclasspath srcs)
    Change-Id: I3de5a2a675363fc3627a278103dd2cabe80a2d80
    
  - Merge "ui: Clean up proto imports" into main
  - tp: add annotation support to protozero_to_json
    
    This CL adds support for emitting the __anntotations key at the root of
    metrics protos emitted as JSON. This used to work in the past when we
    used proto_to_json but when we moved to protozero_to_json, that broke
    this support. This is necessary because Chrome's TBMv3 depends on this.
    
    While we're here, remove proto_to_json from the codebase as nothing uses
    this anymore.
    
    Change-Id: Ieffe76fdb674a04f43ac621e132a59a0676c3f8f
  - Optimize Sub/Sub and Sub/Add operations
    
    Handles cases like:
     * y - (x + y) = -x
     * x - (x + y) = -y.
     * (x - y) - x = -y.
     * x - (x - y) = y.
    
    Bug: 301612598
    Fixes: 301612598
    Test: art/test/testrunner/testrunner.py --host --64 -b --optimizing
    Change-Id: I2f506b4a4903774baf39e8d2c681db6a59efeb2c
    
  - Merge "Update OWNERS order" into main
  - Make CbbFixed safer (again)
    
    The implied lifetime bound doesn't do what I expected, so make it all
    explicit.
    
    Bug: 299055662
    Test: TH
    Change-Id: I183bb5fec18a3f9326b7d8664ceefb6204a2c620
    
  - Merge "Update prebuilt platform protos for recent statsd changes." into main
  - Autoupdate of 3 submodules
    
    *build/make updated to 343fabb483f35a3daecf0b3e160d0e837bd5d235
    Merge "Export BINDER_DEATH_RECIPIENT_WEAK_FROM_JNI to soong" into main
    *build/release updated to 66715c4211730e3ca8c5bf801010f4f028902549
    Add RELEASE_BINDER_DEATH_RECIPIENT_WEAK_FROM_JNI
    
    The config is to guard the new behavior of Java binder which doesn't
    strongly reference DeathRecipients from JNI if the app is targeting
    Android V or beyond.
    
    Bug: 298374304
    Test: build
    Change-Id: I105d5e44a66bdd14f0eacd5209167a3ca26fac8b
    
    *frameworks/base updated to e916262ee7b91a6269563a525644e89ec793fd1d
    Merge changes from topic "death_recipient_flag" into main
    
    * changes:
      Guard the death recipient behavior behind a build flag
      binder: fix death recipient leak for apps targeting >= V
    
    
  - [BugFix][Memory]fix libsmapinfo initial integer type warn in class
    
    
    Default construct func did not initial for integer type in class, so it must initial integer explictly.
    
    Change-Id: I1e67ce58bfa59dce45e8921c0f53661571b72a86
    Signed-off-by: xueguolun <xueguolun@xiaomi.corp-partner.google.com>
    
  - Merge changes I8d17214e,Iafd9ae19 into main
    
    * changes:
      Setting enable wifi to true
      Fix the constant variable names
    
  - fix com.android.bips NE problem
    
    In the MTBF environment,two consecutive inits and two consecutive deletes occur,resulting in NE.
    
    Bug:299833184
    Test: run MTBF test
    
    Change-Id: Iaeab922bbf7c8f77829f492eb39663fd74a7a418
    
  - Merge "LeAudioServiceTest: Unregister from intents as a first thing on teardown" into main
  - Revert "Add the splict_config exception for run-from-apk slow start reason check."
    
    This reverts commit 30610251cebc3b4c9766060830df86d15beee83e.
    
    Bug: 278772867
    
    Reason for revert: not needed any more
    
    Change-Id: I296d860db515857ba2fb0ace2c06dd8d4a92387d
    
  - Check GceSshTunnelMonitor is not null inside notifyAdbRebootCalled
    
    Failure example:
    https://android-build.corp.google.com/test_investigate/?invocationId=I56400010198137065
    
    Bug: 300858577
    Bug: 301000513
    Change-Id: I8df47e619c5f0b157ec080d5f0352b49aa1b2582
    Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
    
  - Disable check_cfi and ArtServiceTests when built from prebuilts.
    
    These two target depends on disabled modules, thus it is required to be disable for device to build.
    
    Bug: 301527192
    Test: m (build from prebuilts)
    Change-Id: Ibfd747302deb073ab7c518f57416afec0a22311c
    
  - Merge "tracing: Allow access to a couple more binder events" into main
  - Merge "Fix testSetOemNetworkPreferenceForTestPref flake" into main
  - Merge "Skip tests if required BT profiles are not enabled." into main
  - Cleanup unstartedruntime.
    
    Remove deprecated JdkUnsafe.*Object.* methods and sort them
    in the same order as they are defined in unstarted_runtime_list.h.
    
    Bug: 297147201
    Test: ./art/test/testrunner/testrunner.py --host --64 -b
    
    Change-Id: Ie933fcff5583c9276abf82622224536cd719762e
    
  - Merge "Parse tags attached to version blocks" into main
  - Run linkerconfig tests as host test
    
    Current linkerconfig tests are running from the device, while it can be
    executed from host with same results. This change converts existing
    linkerconfig tests into host tests so it can be executed without any
    device.
    
    Bug: 298871899
    Test: atest passed without device running
    Change-Id: I86ca0d6cf51e78ee3ea2ba3941ae2efe02fd2631
    
  - Merge "Add QUERY_ALL_PACKAGES to FrameworksNetTestsLib" into main
  - Merge "Increase the number of attempts" into main
  - Merge "Fix narrow calculation warning" into main
  - Merge changes from topic "apf-chikenbit" into main
    
    * changes:
      Add Chicken bit for new Apf RA filter
      Snapshot ApfFilter before apply the new RA filters
    
  - Merge "Do not compare KEEP_VNDK with false" into main
  - Fix a bug that stops runs with test filter delegating to Roboleaf mode
    
    When specifying test filters on a Roboleaf-supported test, ATest
    should delegate to Roboleaf mode instead of run into non-module
    finders.
    
    Fix: 302021077
    Test: m atest && atest-dev --host HelloWorldHostTest
    Test: m atest && atest-dev --host \
      --roboleaf-mode=dev adb_test:LocalSocketTest#smoke
    Change-Id: Ia4b4ef51847e3bb581a7859df924caee8cc42831
    
  - Merge "Parse totalRetrans variable in TcpInfo" into main
  - Autoupdate of 3 submodules
    
    *build/bazel updated to 22a3fb496b191b685a88594f29752ee8bab0fef8
    Merge "Propagate `unbundled_app` api domain build setting from android_app" into main
    *build/soong updated to 370e34172f28f7bd8bdfa7b3b8a846523f2eba33
    Merge "Generate a ndk_sysroot target in bp2build" into main
    *system/tools/aidl updated to 2136a11a9a45615c51d40e3283f71a12045eb2fc
    Pass deps to SetStubsForDynamicDeps
    
    This function now requires an additional arg for `deps`. This will be
    used to add `ndk_sysroot` to deps of sdk variants of cc libraries.
    
    Update the usage of this function in system/tools/aidl
    
    Test: TH
    Bug: 300504837
    Change-Id: Id6ad0c254f65403ee273b4fbc56e20521160f886
    
    
  - Support installing obb files in crawler espresso mode
    
    Test: forrest
    Fix: 281897337
    Change-Id: Id7522300dee9c1a55028f742db8e8703fc1ed1b4
    
  - Allowlist system/core/libstats/expresslog
    
    Fixes: 302046711
    Test: b build //system/core/libstats/expresslog:libexpresslog --config=android
    Change-Id: I904fa0e6bd31d454ec38be91dbeecb765593266c
    
  - IA2: Properly type sco connection change callback
    
    Bug: 298669075
    Test: m .
    
    Change-Id: I0de3772927bad5ffa55c1d4777bcaabde61b722b
    
  - adb: Add interface to support adb over DbC
    
    This patch adds a new interface for ADB for Android
    host solutions using USB Debug Class (DbC). DbC is
    a xHCI extension providing USB 3.0 device mode on
    xHCI controller which is available on all hosts.
    
    Note: DbC class and subclass values can be found in table 7.35 of the xHCI spec version 1.2. Fetched from: https://www.intel.com/content/dam/www/public/us/en/documents/technical-specifications/extensible-host-controler-interface-usb-xhci.pdf
    
    Bug: b/121287022
    Test:adb connection on DbC supported device.
    Change-Id: I882c4d6595bc275dddcc2258f7e356e467c66cd9
    
  - Merge "fix off-by-one error in semaphore capacity check" into main
  - Merge "Fix a socket leak" into main
  - Merge "Null check new usages of mPhonePolicy" into main
  - Merge "Bring fetch_cvd constants in line with standards" into main
  - Merge "Add new trunk stable identifier to default target" into main
  - Merge "Simplify artifact lists to only keeping names" into main
  - Merge "Fix warning based on field init order" into main
  - Merge "Add bp2build for rust_protobuf module" into main
  - Merge "Skip snapshot for sanitizer variants with both cfi and hwasan" into main
  - Merge "Accommodate a change in the type of std::span's size" into main
  - Merge "Use root view's width instead of screen width" into main
  - Support parallel downloads in GCS dynamic downloader
    
    Test: presubmit
    Bug: 301447326
    Change-Id: I35fbdad19ed9e4a5e8f70a50d33178e2e2c18e95
    
  - Merge "Merge "Fix initialization of buttons in AudioOutColdStartLatency test." into android13-tests-dev am: 5491e08293" into main
  - Merge "Refactor PORT_MAX_RFC_PORTS" into main
  - Merge "Fix service discovery on dual mode device, when pairing on LE transport" into main
  - Prefer fake osi over mock osi
    
    Bug: 283886636
    Test: m .
    
    Change-Id: I811ff00f655cb90d3f807a7bd07f6f9ae4e5a98b
    
  - Merge "Use symlinks instead of hard links" into main
  - Casimir: Convert conn_id and rf_discovery_id to enums in nci_packets.pdl
    
    Makes it easier to track reserved values in the code
    and prevent invalid usage.
    
    Bug: 292164536
    Test: m casimir
    Change-Id: I598ab6e5eb0a9222c757fbd0fac0d0f6f2777f47
    
  - cherry-pick SdkSandbox atom message to AOSP.
    
    Test: build passed.
    Bug: 301923349
    Merged-In: I766fa6939efc92833081dfc80378e634ac696cc1
    Merged-In: I0f3332de525b64aaa9c305dc62d6417145157ffd
    Change-Id: Ic5d103b7394a2dbf58b176cf2520cb473b60bb1c
    
  - Merge changes I1731e65e,I2df84427 into main
    
    * changes:
      Factorize CarrierPrivilegeAuthenticator constructors
      Change mCarrierServiceUid from int[] to SparseIntArray
    
  - Merge "PDL: Add CreateOptional for validated packets" into main
  - Merge "Clean up how we skip tests when a syscall isn't in the kernel." into main
  - Merge "Disable Wi-Fi framework during VTS" into main
  - Autoupdate of 3 submodules
    
    *build/soong updated to 534e2e504dc96c77b5d4f3abb8f5134d33efc2e3
    Merge changes from topics "remove_api_files", "remove_naming_convention" into main
    
    * changes:
      Remove naming conventioned based file sorting in java_api_library
      Remove api_files property from java_api_library
    
    *frameworks/base updated to 901eda31b02ed684da614870f9d44e202129ede9
    Merge changes from topics "remove_api_files", "remove_naming_convention" into main
    
    * changes:
      Add api_surface prop to non-updatable droidstubs
      Replace api_files prop to api_contributions
      Remove non-updatable contribution from android_test_stubs_current_contributions
    
    *libcore updated to c57be5e7bb97131831c59be268bc297414cf9846
    Merge "Add api_surface prop to api surface contributing droidstubs" into main
    
  - Merge "Remove the use of gd_l2cap flag across our codebase." into main
  - SecureEnvMain should return Result<void>
    
    It currently returns 0 or -1 (on error). It can return Result<T>.
    The only caller is main, and main should see result.ok() and
    returns 0 or -1. This allows us to have a better error handling
    when we, in the coming CLs, have SecureEnvMain call APIs that
    returns Result<T>.
    
    Bug: 299983433
    Test: Run locally
    Change-Id: I4a61acd804ed6d75865684e354daf927e730875c
    
  - Merge changes I11e999b4,Ie7d5bbbe into main
    
    * changes:
      guest_abi: Add float tests for host func wrappers
      guest_abi: Fix extension for float arguments
    
  - Merge changes I4043630c,Ifafe72b9,I301dcbcb into main
    
    * changes:
      guest_abi: Fix extension for enum arguments
      guest_abi: Fix extension for integer arguments
      guest_abi: Clean up includes
    
  - Merge remote-tracking branch 'aosp/upstream-main' into merge
    
    * aosp/upstream-main: (41 commits)
      Rename struct Window to GuiWindow.
      Replace thread messages with a message router window.
      devices: virtio: snd: Always generate new StreamSource in Prepare
      Roll recipe dependencies (trivial).
      virtio_sys: fix ID for pvclock.
      Roll recipe dependencies (trivial).
      Roll recipe dependencies (trivial).
      plugin: add cfg checks for net feature
      base: windows: tube: simplify reading of MsgHeader
      Roll recipe dependencies (trivial).
      e2e_tests/guest_under_test: Fix Makefile
      Fix some cargo doc warnings in Windows-only code
      devices: usb: Demote the "cycle bit mismatch" message to debug
      tools: fix unit test filter
      devices: virtio: scsi: Implement TEST_UNIT_READY and REPORT_LUNS.
      devices: virtio: scsi: Implement INQUIRY command
      devices: virtio: scsi: Introduce Sense
      devices: virtio: scsi: Receive commands from virtqueue
      devices: virtio: scsi: Make scsi option experimental
      cros_tracing_analyser: Add events for flamegraph
      ...
    
    Bug: 301274839
    Test: atest --test-mapping external/crosvm
    Change-Id: I150b81ce68fd5d95a8faaafdb5cc1f0cb03d9b6c
    
  - Merge "Import AndroidX from build 10857647" into main
  - Merge "Revert^2 "Make the target_files zip reflect the recent partition change"" into main
  - Merge "Don't scan in GATT client test" into main
  - Implement the skeleton of SecureEnv snapshot controller
    
    Eventually, there will be a thread that runs the ControllerLoop,
    and each worker thread will wait/check if the ControllerLoop
    suspended secure_env or not. This is an intermediate CL that
    does not impact the existing secure_env/run_cvd. Instead,
    it's a set of skeleton codes.
    
    Bug: b/295028759
    Test: Run locally
    Change-Id: I54dc6b2ff52a1f49c55e02c7ba8c2a11bbc1565d
    
  - Merge "[RESTRICT AUTOMERGE] SF: Call clear() instead of empty()" into main
  - Merge "Fix the use-after-free issue with CREATE_UTF_OR_RETURN." into main
  - Merge "Add CoGS team as OWNERS of ftl" into main
  - Use longer names for temporary vars in OR_RETURN/OR_FATAL.
    
    Before this change, the macros declare a variable called `tmp`, which
    may shadow a variable above that has the same name and cause a problem
    when `expr` expends to something that contains `tmp`.
    
    For example:
    
    Result<int> tmp(1);
    int a = OR_RETURN(std::move(tmp));
                                ^^^
              The `tmp` in the macro shadows it.
    
    Without -Wall, this can lead to undefined behavior. Fortunately, the
    Android build system uses -Wall so that it can catch this issue and
    throw a compilation error, so undefined behavior will not happen.
    However, it's still not great that the macros don't allow the operand to
    expend to something that contains `tmp`.
    
    This change mitigates the issue by using a longer name with a leading
    "__" for the temporary variable.
    
    Test: Presubmit
    Change-Id: I5035570a21b6f0e1baf60a1d089a4b5eabd299f9
    
  - Remove obsolete hack.
    
    Test: treehugger
    Change-Id: I3de04cca1197612f90f57582ce6ef29c1b4f55df
    
  - Update OWNERS in packages/services/Car
    
    Bug: 301653547
    Test: build okay
    Change-Id: Ia2c5a30e2ffdc9ef1794cfea9653494b2fcbaaa1
    
  - HttpRemoteFileResolver: support query string in URL
    
    Bug: 297691558
    Test: WidevineBusinessLogicTests
    Change-Id: Id0e055f5aab274c0565118985d781f38453b75c2
    
  - Merge "Revert "Revert "[uwb-backend] Sync aosp from gmscore with latest""" into main
  - forcedefine: include <mutex> not "__mutex_base"
    
    `__mutex_base` was a libc++ implementation detail, and it was deleted
    in favor of a handful of headers in a `__mutex` sub-directory. Use the
    public <mutex> include instead.
    
    Bug: 175635923
    Test: m libforceredefine libforceredefined
    Change-Id: Ic91eeea1957996ce145cb02d54816af19d8efc3b
    
  - closeSession: actually remove elements from sessions_
    
    std::remove_if consolidates the non-removed elements at the start of
    the vector, but it doesn't change the vector's size. After upgrading
    libc++, std::remove_if is [[nodiscard]], so this bug causes a compiler
    error.
    
    Bug: 175635923
    Test: m android.hardware.drm-service.castkey
    Change-Id: Ie9734e616f0f93e290cd61f929af04598f236ee7
    
  - Merge "macsec: fix off-by-one when parsing attributes" into main
  - Merge "Skip known VTS failures on vendor code till U" into main
  - Merge "Add jreck to SF owners" into main
  - Merge "Add CoGS team as OWNERS of ftl" into main
  - Merge "tp: bunch of cleanups for table functions" into main
  - Merge changes I5d44b4e5,I46590c50 into main
    
    * changes:
      PandoraServer: Rename android.proto to os.proto
      PandoraServer: introduce map.proto
    
  - Merge "Update clang ubsan libraries to 64K aligned version" into main
  - Merge changes I0769bb44,If25df66b into main
    
    * changes:
      Adapter: Move Config init to AdapterService
      Adapter: Load native only with AdapterService
    
  - Merge "is_retrofit_device to work in bootloader" into main
  - Allow a cluster to opt-out of incremental flashing
    
    Test: presubmit
    Bug: 290951369
    Change-Id: If2056bfa98edc918137777d50c1aba7aa9c4ea31
    
  - Autoupdate of 2 submodules
    
    *build/bazel updated to 8b98e78e9e96bcdd03d5a837f527f975f0b80703
    Merge "Disable optimization in android_test by default." into main
    *build/soong updated to b95a8b33be5f12f4bb1f3d6c12e1f42a646848e7
    Merge "Enable/disable optimize for android_test and android_test_helper_app by default." into main
    
  - Autoupdate of 2 submodules
    
    *device/google/cuttlefish updated to 61c17815b83807b64880fd07b1a1cbd6f5a4ad36
    Merge "Implementing Send for TpmHmac" into main
    *system/keymint updated to 0eb2d947a68eeaa210586660fdb99d6e74dc121a
    Marking KeyMint traits with Send.
    
    Requiring all KeyMint trait implementations to be Send to be able
    to send them between threads.
    
    Bug: 284156152
    Test: trusty build
    Change-Id: I4f575e0f0c13dbb9122d11d3c94e8fccfe36eb70
    
    
  - Merge "Import AndroidX from build 10848417" into main
  - Merge changes I1305c019,Ifcbd4f49 into main
    
    * changes:
      binder_tracker: Support binder_command and binder_return
      Add binder_command and binder_return ftrace events
    
  - Merge changes I29147c77,I37fa9b87 into main
    
    * changes:
      Set STL explicitly for a test jni library
      Add a `deps` property to stl_info struct
    
  - Autoupdate of 3 submodules
    
    *build/make updated to 252e5a39fef5e8d27cc4a06d2336f2bfb632f7fb
    Merge "Add partition-related variables to soong_config.mk" into main
    *build/bazel updated to d3d3b722f8e812f25c023369679d0570afa5af0d
    Merge "Make bazel sandwich imports public" into main
    *build/soong updated to 71aa535721789ea81e96237e4ccd965d6c210952
    Merge "Emit a system image target for the current product" into main
    
  - Merge "[Large Audio frame support] Add aconfig feature flags" into main
  - Merge "Fix for compressed textures when using CopyCommands2" into main
  - Merge "perfetto: rename CTP -> BigTrace" into main
  - Merge "Cleanup and Add comments for common, frontend, model proto" into main
  - Merge "audio: Fix connection between alsa_device_profile and _proxy" into main
  - Merge "Move the Flag helper files to separate folders." into main
  - Limit cross-branch incremental until support bootloader
    
    Test: presubmit
    Bug: 290951369
    Change-Id: Ie777c8bc561a616c5a1ddadf4cb25b0ac2857077
    
  - Avoid string copying on the result message getter.
    
    Test: Presubmit
    Change-Id: Ie583b5d59d16b7a5f0512d10a9d1593bf16019e3
    
  - tp: scope args tracker for surfaceflinger parsing to packet
    
    This CL scopes the ArgsTracker to only the lifetime of parsing the
    surfaceflinger packets. This significantly reduces the memory use when
    parsing traces containing these packets.
    
    Change-Id: I08a79619e28f42b5d54cc3756611cd6fb999b574
  - Merge "Allow system_server to enable fs-verity on staging APK" into main
  - Merge "Extract a CBB helper" into main
  - Merge "Add all display owners to cts/display" into main
  - Merge "Import AndroidX from build 10824932" into main
  - Disable 2265-const-method-type-cached for redefine-stress.
    
    Bug: 297147201
    Test: none
    Change-Id: Idf991d8348be193288fe4ece3fd7f9a94af003d3
    
  - Update D8 and R8 to 8.3.7-dev
    
    Version: 8.3.7-dev
    This build IS NOT suitable for preview or public release.
    
    Built here: go/r8-releases/raw/8.3.7-dev
    
    Test: TARGET_PRODUCT=aosp_arm64 m -j core-oj
    Change-Id: I5412bd6c48479f322fe2dc75f7dcf625b7af6e99
    
  - Merge "Include label in aquery error" into main
  - Use normal reboot for fastboot tests
    
    Used rebootUserspace which is wrong in this case
    and unstable
    
    Bug: 300858577
    Change-Id: I68b7548e4c0e132730312ad0c94a402a09b7dab9
    Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
    
  - Merge "Ensure revocation time is in the past when testing OCSP." into main
  - Merge "ui: Sync screenshot tests" into main
  - Merge "Skip changingDebuggability related tests on Non-pVM" into main
  - [refactoring] Move service_vm_[comm|manager] to service_vm/
    
    No code change.
    
    Bug: 301068421
    Test: atest rialto_test
    Change-Id: Ib7f667014a35b1066c8b581a9b31bdcfcc14489e
    
  - RISCV: [Codegen] Add VisitNewArray
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Change-Id: I93f0ac9c3a7617e91ea480fc89617a7af0b109b6
    Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
    Signed-off-by: Wendong Wang <wangwd@xcvmbyte.com>
    
  - RISCV: [Codegen] Add VisitLoadString
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Change-Id: Id9e331a53eb4c4520e01bca667d503f0af35ccef
    Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
    Signed-off-by: Wendong Wang <wangwd@xcvmbyte.com>
    
  - Merge "[ui] Add option for rendering UTC timestamps." into main
  - RISCV: [Codegen] Add VisitStringBuilderAppend
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Change-Id: Iecefc35546d1c5ac009176137e0c110d244835f1
    Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
    Signed-off-by: Wendong Wang <wangwd@xcvmbyte.com>
    
  - Merge "to_ftrace: add samsung_tracing_mark_write" into main
  - Detect and throw error if a class implements itself
    
    Bug: 301108855
    Fixes: 301108855
    Test: art/test/testrunner/testrunner.py --host --64 -b --optimizing
    Test: Compile the app in the bug
    Change-Id: I66b529ea36013160e7d17c49bfb36606c268a8ff
    
  - RISCV: [Codegen] Add VisitNewInstance
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Change-Id: I258880e6289df186ed7f55a8438d6397733c4f23
    Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
    Signed-off-by: Wendong Wang <wangwd@xcvmbyte.com>
    
  - Merge "ui: Fix tools/check_imports dot and add tools/check_imports print" into main
  - Merge "[ui] Port android logs track to plugin tracks" into main
  - Merge "[ui] Port "cpu_slice" tracks to plugin tracks." into main
  - Initialize the retransmission parameters for RequestState.
    
    Per RFC8415 section 18.2.2:
        IRT     REQ_TIMEOUT
        MRT     REQ_MAX_RT
        MRC     REQ_MAX_RC
        MRD     0
    
    Bug: 260934173
    Test: TH
    Change-Id: I23ee15e4181244cf26efd8e9dc503b744e9e0a4b
    
  - Merge "Remove unused alpha05 files" into main
  - Merge "Fix a bug where slotId was used instead of subscription ID" into main
  - Merge "Move key events to AvrcpTargetService" into main
  - Reject partially invalid profiles.
    
    If a profile has both valid checksums (i.e. of DEX files actually in
    the APK) and invalid ones, it should be considered an invalid profile.
    
    Bug: 282901123
    Test: m test-art-host-gtest-art_libprofile_tests
    Test: -
      1. Construct a partially invalid profile.
      2. Prepare a device that has
         commit 9726215cf077737e02b998201809a06839a46014 (internal only)
         and this commit.
      3. Install the APK and the profile using `adb install-multiple`.
      4. See the command failing.
    Change-Id: Ic5830b3f2c1b2c7a9030195527a9e0a63691f98a
    
  - Remove punctuation in skipping message.
    
    Change-Id: I9b6409f3e028cc00915996332642fbc41d47f444
    
  - Merge "Create OWNERS for devicestateprovider" into main
  - Merge "Always stop LockHoldingService in FileChannelInterProcessLockTest" into main
  - [Thread] Disable ot-daemon posix multicast routing feature
    
    Disabled multicast routing feature in ot-daemon so the bbr feature can
    be enabled. Also enabled MLR feature for both ot-daemon and ot-cli-ftd.
    
    Bug: 301531582
    
    Test: Started cuttlefish session, manually checked bbr feature
    can be enabled with `bbr enable` without problem. Also checked
    both ot-ctl and ot-cli-ftd can register multicast address, and
    the address is shown on the Primary BBR with `bbr mgmt mlr listener`.
    
    Change-Id: I8a799edf0a0e1b1f3f7cf4b3d68757587d07e039
    
  - Use the same cache for MethodType-s created in native and managed code.
    
    Bug: 297147201
    Test: ./art/test/testrunner/testrunner.py --host --64 --optimizing -b
    Test: ./art/test/testrunner/testrunner.py --jvm -b
    Test: ./art/test.py --host -b
    Change-Id: I55a47439682f1a5903b0e47491e739434e04470f
    
  - Merge "Revert "SELinux policy changes for uprobe."" into main
  - [starlark] Remove use_props property from builders
    
    Now that properties are the only codepath, we can remove this flag.
    
    Change-Id: I011f034da8d67b53a2ef61964ac6b4b98e89faa0
    
  - Merge "Remove unused AVRCP hidden API" into main
  - Merge "Fix up NetworkSecurityConfigTests." into main
  - Merge "Add script for atest normal mode integration test" into main
  - Merge "Fix netd fd leak when netlink sock connect fail" into main
  - Remove remaining APEX sepolicy types
    
    Bug: 297794885
    Test: boot cuttlefish
    Change-Id: I2ff465217adcf1bb0267ea6d487a9a46b6584458
    
  - Merge "Skip /metadata/sepolicy creation" into main
  - program_runner: Add binfmt runner and configs
    
    ELF header values used in binfmt config magic section:
    
    - 0x020101: 64-bit, little endian, ELF v1
    - 0x0200f3: executable RISC-V (exe)
    - 0x0300f3: shared object RISC-V (dyn)
    
    Bug: 301484225
    Test: mmm frameworks/libs/binary_translation/program_runner
    Test: bionic-unit-tests --gtest_filter=stdio*
    Change-Id: I14768d903831060d46e304ac38cb8e2f77ce1ab2
    
  - Add VirtualCamera folder and OWNERS for VDM team
    
    Change-Id: I5799fdac33ccc3d0a46ae20bd92c61986493766d
    
  - RISCV: [Codegen] Add VisitInstanceOf & VisitLoadClass
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
    Signed-off-by: Wendong Wang <wangwd@xcvmbyte.com>
    Change-Id: Iab5eef589e112302aecab7999dd7d2c3181d8712
    
  - Merge "printflags: introduce device tool to print feature flags" into main
  - Merge "codecServiceRegistrant_fuzzer: Bug Fix" into main
  - Merge "mtp_packet_fuzzer: Bug fix" into main
  - Remove unused constant
    
    Bug: 297794885
    Test: presubmit
    Change-Id: I3674aea0c273a14403de543b33905a932208541a
    
  - Implement recording_manager to start/stop video recording and saving
    multiple files in CVD host.
    
    Fix: 296347541
    
    Test: Build local-image CVD instance and test with repeat start/stop
    command.
    
    Change-Id: I44eef4dee17095ae7e6f51cb98686f04fc122e3a
    
  - Merge "Merge constructor and start in multiple managers" into main
  - Merge "Updated vehicleManager_fuzzer" into main
  - Merge "Quote glob in prebuilt search" into main
  - Merge "Merge "Fixed cts for data only device." into android13-tests-dev am: 96a77830b0" into main
  - Merge "Add/install identity HAL APEX" into main
  - Enable the optimized feature by default
    
    It's been tested and seems stable
    
    Change-Id: I24854c99903a0954c45f0685374533521c0127da
    Test: presubmit
    Bug: 299943651
    
  - Create Domain socket pair for run_cvd and secure_env
    
    The socket pair is needed for them to exchange snapshot-related
    commands and responses. The CL only creates in the right order
    the domain socket file.
    
    Bug: 299982193
    Test: Build locally
    Change-Id: I1ad9f8bc442f67e29d2f32abe296a7f781123721
    
  - Merge "Add android.hardware.telephony.calling feature to emulator system image" into main
  - Merge "mediacuj CTS: Add Seek Test for E2E CUJ test cases" into main
  - Tradefed ()
    
    ** For tradefed version, open version.txt (go/tf-prebuilt-version) **
    
    Tradefed
    This build IS suitable for public release.
    
    Bug: 178523691
    Test: None
    
    Change-Id: I44cebac3245cc850d255fe8f220591e21888d544
    
  - Merge "Add aconfig for biometrics flags" into main
  - Properly use zipped create_snapshot
    
    Test: presubmit
    Bug: None
    Change-Id: Id2c804036b693522d5c7e041f56576cfaf58b956
    
  - Merge "Create_cow: Hash of target blocks should not be stored." into main
  - Merge "Revert "Make the target_files zip reflect the recent partition change"" into main
  - Merge "Symlink to checked-in prebuilt of libncurses.so.5" into main
  - Merge "Do not check with vendor vndk version" into main
  - Revert "Add a small pattern matcher to JIT compilation."
    
    This reverts commit c99838dfc0f9198887030e1e00c178e0aacd20d1.
    
    Reason for revert: Fails on luci.
    
    Change-Id: I0bb494fc36de393c5f4a615d325cfda3f9a56551
    
  - Merge "Remove --no-metrics from ROBOLEAF_UNSUPPORTED_FLAGS" into main
  - Merge "Search modules from both src and path" into main
  - IA2: Use proper types API tBTA_SYS_ID
    
    Bug: 298669075
    Test: m .
    
    Change-Id: Ib683319ccedd28a55a7baf153ab5bfe8751bc872
    
  - Merge "Remove commented out code" into main
  - Merge "Removed the untracked built section of the output." into main
  - Autoupdate of 6 submodules
    
    *build/soong updated to 40c7bae1df1028cc4f5545938858c16d5040442f
    Merge changes from topics "revert-2629131-sandbox-rust-inputs-JRFPQTIPEY", "revert-2758566-WBNIADIEXA" into main
    
    * changes:
      Revert^3 "add rust_toolchain_rustc_prebuilt module type"
      Revert^3 "add crate_root property to rust modules"
      Revert^3 "allow Ninja variables in RuleBuilder API"
      Revert "conditionally escape rule builder command"
      Revert "support sandboxed rust rules"
      Revert "fix failing rust_aconfig_library test"
      Revert "rustSetToolchainSource to use linux-x86 srcs"
      Revert "remove rust deps on clang prebuilts"
    
    *prebuilts/build-tools updated to 9f22e934f36abee63b22936b3c3bd5f5653d3a70
    Merge "Revert "add prebuilt_build_tool module for rust_extractor"" into main
    *prebuilts/clang/host/linux-x86 updated to d18dae65c6dc9231396a4a3826da13a5bda5726a
    Merge "Revert^3 "add prebuilt_build_tool modules for clang tools"" into main
    *prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8 updated to c1e38c919f781118947e158c42df1b18b05a45a5
    Merge "Revert^3 "add gcc tool inputs to filegroup"" into main
    *prebuilts/rust updated to 8da7c72809d9a647b144d5a8183e1c6aeb48ec60
    Merge changes from topic "revert-2629131-sandbox-rust-inputs-JRFPQTIPEY" into main
    
    * changes:
      Revert^3 "fully specify toolchain inputs"
      Revert "use correct .so suffix for darwin"
    
    *system/tools/aidl updated to 163fd237016ce65cc434327984a7947c61ccaed0
    Revert "update tests now that rustc is using RuleBuilder"
    
    Revert submission 2629131-sandbox-rust-inputs
    
    Reason for revert: Fail on android build.
    
    Reverted changes: /q/submissionid:2629131-sandbox-rust-inputs
    
    Change-Id: Id206e1645894426952a19dd12a2b46c9eadea61c
    
    
  - Merge "Fix read file error in extract_apks" into main
  - Autoupdate of 2 submodules
    
    *build/bazel updated to 1d9ca3837c91fb567f614bb63a800f832db94dc1
    Add libs and static_libs from original java_library as deps to compile proto srcs
    
    In java_*_proto_library, after the proto sources are generated,
    a java_library will compile them. The libs and static_libs from
    the original java_library module should be added to java_library
    deps because they are necessary in compile-time classpath
    
    Test: CI
    
    Bug: 301469542
    Change-Id: Id722a1d9dc68281a3e932853455d8311f42ef431
    
    *build/soong updated to 7c5b6d5273472f50f27597ece38f59e645c9826c
    Merge "Pass java_library libs and static_libs to java_*_proto_library" into main
    
  - Merge "Disable minimal build for ltp" into main
  - [scudo] Convert assert to CHECK macro. (#67184)
    
    This code is only for riscv, but use the CHECK macro to avoid unused
    parameters problems if assert is not defined.
    
    GitOrigin-RevId: f71ba7d323331bdb718e76a2f3a9562de835bb0d
    Change-Id: I2e480d3aa42a41338cad6e35abd7606cf653130c
    
  - BusinessLogicPreparer: handle multiple suite tags
    
    Bug: 299702412
    Test: atest BusinessLogicPreparerTest
    Change-Id: Ie840b878e5e258f042bbd333beeacfcb8d9332f0
    
  - Revert "[reclient] Update live version to 0.115.1.3dbd341."
    
    This reverts commit 8ff252e54ad419260e71a635d89d111eb28ceeea.
    
    Reason for revert: This is breaking Android developer builds because metricsuploader binary isn't set as 755 permissions.
    
    Change-Id: Ie321cc4aed3eedd77df7adfb30d251b74a2f15c5
    
  - Merge "Removed obsolete testProcessStatePssValue test" into main
  - Improve discovery
    
    1) Add random delay between startAdvertising and startDsicovery
    2) Increase discovery timeout to 30s / 35s for 1st / 2nd connection.
    
    Bug: 301453743
    Test: performance test
    Change-Id: I478442a24aa06892e3a29f473bdaef4540fcd050
    
  - Merge "<sys/statvfs.h>: add a new mount option." into main
  - Don't bail when restart command not found.
    
    I had added it as an error check, but it triggered with `adevice clean`
    
    Now it works:
    	% adevice clean
    	 * Checking for files to push to device
    	       -- adb ["root"]
    	       -- adb ["shell", "/system/bin/adevice_fingerprint", "-p", "system,system_ext"]
    	Stale device files:
    	  (These files are on the device, but not built or tracked.)
    	  (You might want to run `adevice clean` to remove them.)
    		system/bin/file1
    
    	You are about to delete 1 [untracked pushed] files. Are you sure? y/N
    	y
    	       -- adb ["exec-out", "stop"]
    	       -- adb ["remount"]
    	       -- adb ["exec-out", "setprop", "sys.boot_completed", ""]
    	       -- adb ["shell", "rm", "system/bin/file1"]
    	Finished in 3 secs
    
    Test: adevice clean
      # Forced a file to pushed with update to monitor reboot
    Test: adevice update
    Test: adevice status
    Test: atest
    Change-Id: I06765eab9cbbfa2193fd8d165db1c082ac040622
    
  - Merge "Merge remote-tracking branch 'aosp/metalava-main' into 'aosp/main'" into main
  - Merge "Switch bp2build mutator to bottom up" into main
  - Merge "floss: first check privacy mode for resolving list operations" into main
  - Merge "Fuzz readParcelable API of Parcel" into main
  - Merge "Satellite: do not prevent disable during session" into main
  - Merge "Merge remote-tracking branch 'aosp/metalava-main' into 'aosp/main'" into main
  - Merge "16k: Remove vsoc_arm64_only dependency for cf page agnostic target" into main
  - Merge "<linux/capability.h>: add some missing newer capabilities." into main
  - Merge "Start Automotive Proxy Service From Cuttlefish" into main
  - Merge "emulator_arm64: Revert TARGET_NO_KERNEL to emulator default" into main
  - Merge "Remove Windows workaround in file not built for Windows." into main
  - Merge "gbl: Add UEFI wrappers" into main
  - Merge "Add Permission bits to file fingerprint." into main
  - Autoupdate of 3 submodules
    
    *build/soong updated to ee03e4e5772e91bdedf06f93c2ea0d23eba2390a
    Merge "Add libcodec2_aidl into allowlist" into main
    *frameworks/av updated to 71b17f99c26d904aaf3ec2eda1283b9f820dd208
    Merge "Set minsdk for AIDL libs to 31" into main
    *hardware/interfaces updated to bea101032f871e3b52caf3f8a5f734d9bddeec3c
    Merge "media.c2: add apex_available and set minsdk to 31" into main
    
  - Merge "Revert "[uwb-backend] Sync aosp from gmscore with latest"" into main
  - Merge "gfxstream: nuke ResourceTracker::Impl" into main
  - Merge "floss: pad zero when convert to little endian" into main
  - Merge "Only skip _16k/_64k kernel modules dirs on 4K builds" into main
  - Remove unnecessary CarrierConfig keep rules
    
    These rules are redundant with those auto-generated from the manifest.
    
    Bug: 248580093
    Test: m + compare APKs
    Change-Id: Id115e11eba115568aad1bb0bff9677f46ba5b88b
    
  - Add a property for cached modules
    
    Add a property definition for test modules whose results were cached.
    
    Test: presubmit
    Bug: 290272074
    Change-Id: Ic18853d78bd44e098040d73e4e6b54ff361f01c7
    
  - Merge "Remove netsim.ini file on exit" into main
  - Merge "Connector mode can take a host:port from the netsim.ini file." into main
  - Merge "Use optional in config.proto for SlirpOptions so we can identify fields that are not specified." into main
  - Merge "Move SyncHelper to platform" into main
  - Merge "Avoid attempting to free invalid buffers" into main
  - Merge "[uwb-backend] Sync aosp from gmscore with latest" into main
  - Merge "av: change return value if effect is not processing" into main
  - Merge "webrtc: Automatically show/hide webRTC webcam UI button" into main
  - Merge "SELinux policy changes for uprobe." into main
  - Ensure partitions are at least 1 block in size
    
    delta_generator rounds down source partitions to multiples of block
    size. If the source image is < 1 block(4K), it will be rounded to 0.
    Ensure that we round down partitions to >= 4K.
    
    Test: th
    Bug: 297980845
    Change-Id: Idc1aeb7d6a5e2ed539c129a53b732435218a1a65
    
  - Merge "Removing extra includes" into main
  - Merge changes I343272f4,I5481893a into main
    
    * changes:
      Removing headers + using string
      Removing double delete from flashall
    
  - Add missing <functional> include
    
    Bug: 175635923
    Test: treehugger
    Test: m MODULES-IN-external-libldac
    Change-Id: I12db51b719020450b5e099b8d17962882ba46619
    
  - Merge "Fix nonce uniqueness tests" into main
  - Merge changes I7790dde8,I065907a5,Id2e82024 into main
    
    * changes:
      Add missing <assert.h> include
      Add missing <functional> and <vector> includes
      snapuserd_test: don't discard result of std::async
    
  - Merge "Remove LogCapture::WaitUntilLogContains async usage" into main
  - Merge changes Ic69fc75e,I6373d251 into main
    
    * changes:
      Add ICMP type/code and udplite/sctp in Nettrace.
      Make BundleKey a distinct struct from PacketTrace.
    
  - Merge "Handle already existing targets of different name" into main
  - Track metadata of build from origin in incremental flashing
    
    Test: presubmit
    Bug: 290951369
    Change-Id: I8ea595441f270449b3f7b52eed711a4236c96356
    
  - Use absolute path for '-p <package>' in local_mobly_runner.py, so it can always be correctly executed as a binary.
    
    Bug: N/A
    Test: local_mobly_runner.py -p quick_start_stress_test
    Change-Id: I8934a0b32891091338ba2591fa161a7b797b8ede
    
  - Merge "Add explicit host header directory and migrate virtio based headers" into main
  - Merge "Remove unused files." into main
  - Merge "Don't duplicate uapi ioprio constants." into main
  - Merge "Remove redefinition of uapi constant added in R." into main
  - Merge changes from topic "am-5a1849937ca647feb5e04634e0ef4b45" into main
    
    * changes:
      [automerger skipped] Merge "MediaRecorderTest: Increase file size for 720p cameras" into android13-tests-dev am: 0733c5bb5b -s ours
      [automerger skipped] MediaRecorderTest: Increase file size for 720p cameras am: bdcbcf0106 -s ours
    
  - Merge "Cleanup INCREASE_EVENT_QUEUE_50000_FLAG from statsd" into main
  - Merge changes I620cfd7b,I8ed1919a into main
    
    * changes:
      remove rust deps on clang prebuilts
      rustSetToolchainSource to use linux-x86 srcs
    
  - Merge "audio: Fix Effect worker thread" into main
  - Merge changes Ib94827b0,Ic70c3260,I8c363a64,I9c5ec06d into main
    
    * changes:
      Adapter: Lock before cleaning
      Adapter: clean constructor and impossible check
      Adapter: remove dead code ServiceLifecycleCallback
      Bluetooth boot: call doBind only if stack is ready
    
  - meminfo: Add memevents library
    
    A new library called memevents will provide APIs to parse information
    from the memhealth driver. Currently it only exposes APIs to parse
    information regarding out-of-memory (OOM) kills.
    
    Test: memevents_test
    Bug: 244232958
    Change-Id: I9f22abb263366b99139fcc2c689e3365044acee1
    Signed-off-by: Carlos Galo <carlosgalo@google.com>
    
  - Add a small pattern matcher to JIT compilation.
    
    Many small methods can easily be recognized and generic code can be
    returned for them. To save on compilation time and JIT memory usage, try
    to pattern match small methods before doing heavy JIT compilation.
    
    libart-compiler.so size increase: < 4K
    Average number of methods recognized in an APK: ~10%.
    Average number of methods tried for pattern matching: ~20%
    Compilation speed relative to baseline: ~800x faster.
    
    Test: test.py
    
    Change-Id: Ib684aa25f2cf7ae83874948370960838305af6e3
    
  - [reclient] Update live version to 0.115.1.3dbd341.
    
    Bug: b/169675226
    Change-Id: I726d747c949d9ecd0e3332066088396264934135
    
  - Merge "Update chrome_scrolls column names to be more accurate." into main
  - Disable test on jit-at-first-use.
    
    Test doesn't work when jitting can happen in parallel.
    
    Test: 2031-zygote-compiled-frame-deopt
    Change-Id: Ia5dd2ba195f31ca7ab696b12e745101149c96c55
    
  - Merge changes Ica598c5e,I5818ece0,I0edc83f7 into main
    
    * changes:
      Test secure import of EC keys
      Gate wrapped RSA key import test on VSR level
      Reuse existing KM tag number definitions
    
  - Include rootcanal.configuration.Controller in ChipCreate
    
    Synced proto --> Rust and TypeScript
    Modified testing/netsim-grpc/setup.py to handle rootcanal protobuf
    
    Test: m netsimd
    Bug: 301096751
    Change-Id: Ib56ad37fdc28f5cfad6306d86fd4ab6c99cb48ac
    
  - Merge "Enforcing static invariants to prevent failures arising from layout disparity." into main
  - Casimir: Implement RF data exchange for ISO-DEP interface
    
    Does not implement credit based control flow yet; the static
    RF connection behaves as if the DH had infinite credits
    
    Bug: 292164611
    Test: manual
    Change-Id: Ib8421bc72da17a478d84a74a77a2497e2854478b
    
  - Merge "aconfig: separate package name and flag name using dot" into main
  - Merge "Mark android_* modules with java_resources as unconvertible" into main
  - IA2: Separate bta::dm::bta_dm_disc search discovery
    
    Code separation only
    
    Bug: 291986936
    Test: m .
    
    Merged-In: Ie635cabbeaf77424f2df84d465a3fea87304ae72
    Change-Id: Ie635cabbeaf77424f2df84d465a3fea87304ae72
    
  - Merge "Add ASSERT_ERRNO and EXPECT_ERRNO (and use them)." into main
  - Merge "[ui] Don't trigger redraws when mousing over sidebar buttons" into main
  - Remove TARGET_FLATTEN_APEX remnants.
    
    Also clean up the build logic for the symbols symlink, which was an
    (already disabled) attempt to keep debug symbols working for the
    com.android.art.debug APEX.
    
    Test: art/build/apex/runtests.sh
    Bug: 171419613
    Bug: 297462832
    Change-Id: I911a8c26170b47a6f4a5fb4e7fb1922776782b6c
    
  - [rkp] Implement main steps to generate certificate request
    
    This cl implements the main steps required to generate a
    certificate request within the RKP HAL. The DICE chain will be
    included once retrieved in the service VM.
    
    Bug: 299256925
    Test: atest rialto_test
    Change-Id: Ia2055e13d3f5e31617bde01851059764d814f25e
    
  - Merge "Do not convert non-unit tests." into main
  - Merge "Floss: wait when audio profile connection received but SDP is empty" into main
  - [rkp] Build MACed public key from boringssl EC_KEY
    
    The secret will be added in a subsequent after we get the DICE
    chain info of the RKP VM.
    
    Bug: 300068317
    Test: atest rialto_test
    Change-Id: Ia373930fc8f1c6d38349208ca62b9b71b98d126f
    
  - Merge remote-tracking branch 'aosp/metalava-main' into 'aosp/main'
    
    Merge performed by:
      scripts/merge-from-metalava-main.sh
    
    This merge includes a number of changes so this contains a list of all
    the affected bugs.
    
    Bug: 297362755
    Bug: 301405075
    Test: m checkapi
    Change-Id: I9d51115606657a05281f68326d8926ef517af725
    
  - Merge "Extend SurfaceFlingerLayersConfig with MODE_GENERATED_BUGREPORT_ONLY" into main
  - Merge v0.9.0 into `main`.
    
    Test: Run `atest -a --test-mapping external/cpu_features:all` (on
          x86-64 and Arm64 devices)
    Change-Id: Idaadcf33b0da35104ff68eaf7941d1e7123c31b8
    
  - Merge "[ui] Fix layerX/offsetX/clientX issues in mouse events." into main
  - [dice] Pass DICE data to process_request API in service VM
    
    Bug: 287233786
    Test: atest rialto_test
    Change-Id: I673195a0fd42d8518d5dc4ab28f4112e6f688aea
    
  - Merge "[stdlib] Add time duration helpers" into main
  - Merge changes I0792d3de,I370dbbc1 into main
    
    * changes:
      Floss: Add DBus logging for outbound traffic
      Floss: Add DBus logging for inbound traffic
    
  - Merge "Use assemble_vintf output for vintf fragments in APEX" into main
  - Merge "Migrate create_view_function to Perfetto SQL." into main
  - Autoupdate of 2 submodules
    
    *device/google/cuttlefish updated to ad58b94e7458f4b4ff46cb6178cfa4ae221141d0
    Merge "Install dumpstate HAL APEX" into main
    *hardware/interfaces updated to 582a2010d69b43a3c309962a6fcfb916f7e03526
    Merge "Add dumpstate HAL APEX" into main
    
  - [Thread] Move the IOtDaemon AIDL package
    
    Update the package prefix to com.android.server.thread so it doesn't get jarjar-ed
    
    Bug: 301427427
    
    Test: build and check ot-daemon can be started
    
    Change-Id: I330773eb0b2b71837e066b51d93467e83f2eeb7b
    
  - Merge "Disable minimal build for kselftest series" into main
  - Remove @IgnoreUpTo(Build.VERSION_CODES.Q) annotation
    
    Mainline push is no longer pushed to Q devices. The annotation
    is unnecessary now.
    
    This commit also addresses some style check format issues.
    
    Test: atest NetworkStacktTests
    Change-Id: I95085a2de6e84979b35202de25bacaf6ca325c02
    
  - RISCV: [Codegen] Add VisitDivZeroCheck
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Change-Id: Ieb3c02a6a5ef52cb1b1fcc13b3df189217efb8ab
    Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
    Signed-off-by: Wendong Wang <wangwd@xcvmbyte.com>
    
  - RISCV: [Codegen] Add VisitCheckCast
    
    Test: m test-art-host-gtest
    Bug: 283082089
    Change-Id: I224941dc32773e885adf13f5329cb9487b4586e4
    Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
    Signed-off-by: Wendong Wang <wangwd@xcvmbyte.com>
    
  - Merge "allow ot_daemon to read/write sockets shared by system_server" into main
  - Merge "Revert "Increase scheduling niceness of traced/traced_probes"" into main
  - Update D8 and R8 to 8.3.6-dev
    
    Version: 8.3.6-dev
    This build IS NOT suitable for preview or public release.
    
    Built here: go/r8-releases/raw/8.3.6-dev
    
    Test: TARGET_PRODUCT=aosp_arm64 m -j core-oj
    Change-Id: I4fedf3c136812760bad8cf1b6b3b42a4d1ec8053
    
  - Merge "Remove --serial flag from ROBOLEAF_UNSUPPORTED_FLAGS" into main
  - Merge "Add README.md for tools/compare_cts_reports/." into main
  - Merge "Expand @FlaggedApi(FLAG) constants in API signature files" into main
  - Merge "Add a generics test plan with multiple includes" into main
  - Fix an indentation issue.
    
    BUG = None
    
    Change-Id: I676cdf6e63d7bda52cb356a00faf744e8a2e4642
    
  - Merge "lint_fix: fix CLI arguments use" into main
  - [scudo] Fine tune busy-waiting in HybridMutex
    
    Instead of using hardware specific instruction, using simple loop over
    volatile variable gives similar and more predicatable waiting time. Also
    fine tune the waiting time to fit with the average time in malloc/free
    operations.
    
    Reviewed By: cferris
    
    Differential Revision: https://reviews.llvm.org/D156951
    
    GitOrigin-RevId: cde307e4657738f1ef5f2eceaa7f896358acb3d6
    Change-Id: I8268b1407d4b1a5909939663b7bc43c193d49e53
    
  - Merge "MediaRecorderTest: Increase file size for 720p cameras" into main
  - Increase buffer count required for mutator thread during compaction
    
    Bug: 295940661
    Test: manual
    Change-Id: Ia058d68657267417ab9ea30ffc9cc43fe54a8f25
    
  - Merge "use different log.h header file" into main
  - Merge "Set embedded_launcher to false for quick_start_stress_test" into main
  - Merge "Remove /usr/bin from the PATH in partition rules" into main
  - Merge "Add unit tests for tools/compare_cts_reports/compare_cts_reports.py." into main
  - uwb(service): Add flag to enable the new CCC stop params sending
    
    This was added in aosp/2692326, but this is exposing issues with some
    vendors who cannot handle `GET_APP_CONFIG_CMD` when the session has been
    stopped.
    
    Bug: 299283394
    Test: atest ServiceUwbTests
    Change-Id: Ifbb99d168cf6465ceb0892c138bb8517c57392f4
    
  - Merge "use R0 <<= 0 instead of R0 |= 0 for noop" into main
  - Merge "Explicitly set disconnect() method to deflake tests" into main
  - Merge "ApfGenerator - remove unused add{Div,Mul}{,R1}" into main
  - Merge "Change default payload type from STREAM to FILE" into main
  - Merge "le_scanning_manager: Avoid sending double enabled commands" into main
  - Merge changes I8843ce7c,I90566998 into main
    
    * changes:
      Block the package updater while CTS are running
      Add a command to block networking for an app
    
  - Merge remote-tracking branch 'aosp/metalava-main' into 'aosp/main'
    
    Merge performed by:
      scripts/merge-from-metalava-main.sh
    
    This merge includes a number of changes so this contains a list of all
    the affected bugs.
    
    Bug: 286023667
    Bug: 294556178
    Bug: 295013652
    Bug: 297575681
    Bug: 299048934
    Bug: 299607178
    Bug: 299675771
    Bug: 300081840
    Bug: 300711240
    Bug: 301160262
    Bug: 301216695
    Test: m checkapi
    Change-Id: I92fd9cc16cfb8f6256ef22944a2123f68fc6116a
    
  - Merge "[remoteauth] Clean up unused deps" into main
  - Autoupdate of 2 submodules
    
    *build/make updated to a8c405f2643ca4f77ee16509fa557b13c435bc6b
    Merge "Define llndk modules instead of vndk_package" into main
    *system/linkerconfig updated to 72dd6faa905ede79f4f73fca54f942d30a8bfeef
    Merge "Do not check if the device is treblelized with VNDK" into main
    
  - Merge "Fix several flaky DeviceStateManagerServiceTests" into main
  - Merge "Remove unused file path" into main
  - Merge "Remove unused file path" into main
  - Merge "Modify the pass criteria add more results summary" into main
  - Merge "Resolve the issue of CtsOpenGlPerf2TestCases test exceptions causing the test item to wait indefinitely." into main
  - Merge "hal_dumpstate service is now AIDL service" into main
  - Merge "Generate a random number for DHCPv6 message retransmission algorithm." into main
  - Merge "Add libbinder_ndk_unit_test_host" into main
  - In local_mobly_runner.py, run test package directly as binary is novenv is specified
    
    This avoids certain test packages from failing when run with
    incompatible python interpreter versions.
    
    Bug: N/A
    Test: local
    Change-Id: I6b20d8e031cd7902c3309bc764e3f838d9e60da0
    
  - Merge "Move CtsDynamicMimeHostTestsCases to presubmit" into main
  - Merge "binder_status.h: include assert.h for __assert" into main
  - Merge "binder: add missing <functional> include" into main
  - Merge "Create a bp2build converter for ndk_headers" into main
  - Merge changes I52597c38,I8a4cec49 into main
    
    * changes:
      Update analyze_matrix.cpp, GetDescription for V.
      Add IfThisThen lint for Level.h.
    
  - Autoupdate of 2 submodules
    
    *build/soong updated to 0dc9d095b4571ae82385745563e50954d5a22a79
    Merge "Allowlist grpc-java and its deps" into main
    *external/grpc-grpc-java updated to acc04b8ffd6f17426fc733fbba4952107a5d535e
    Wrap gen_annotations.py in python_binary_host
    
    So that CI python can build grpc-java-annotation-stubs-srcjar
    correctly
    
    Test: m and CI
    
    Bug: 301138784
    Change-Id: I57d1cf2a4d9b1a3b0ae50d0b645fc3ac24bdb3e2
    
    
  - Merge "protozero: Finalize nested message when appending raw bytes" into main
  - Merge "Use std::filesystem when libc++ is new enough" into main
  - Merge "Nuke unused system directory" into main
  - Autoupdate of 2 submodules
    
    *build/bazel updated to 29c20b7dcf2f74f3a050736f93d2526ddfbe6522
    Merge "Decouple the target build variant from the platform" into main
    *build/soong updated to 747ecf4b1edb6e1e3ce9bca6a7b3dcfc5c5a404c
    Merge "Decouple the target build variant from the platform" into main
    
  - Merge "Add missing <cassert> include" into main
  - Merge "cputimeinstate: add missing <functional> include" into main
  - Autoupdate of 3 submodules
    
    *build/bazel updated to ca7cd2937951363c0c02e387f6137c922f1886e1
    Merge "Match Soong's handling of {min,target}_sdk_version in android_binary" into main
    *build/soong updated to 2c11851598697b19a3afa18898c13f477e9c63b0
    Merge "Use raw {min,target}_sdk_version properties in android_app converter" into main
    *external/bazelbuild-rules_android updated to 2988d9d8901eaa7c49e7c73626f5484a0b027863
    Expose ManifestContextInfo provider outside of Android Rules
    
    Bug: 301258446
    Change-Id: I9971e547a1a1180b5aac59cdfbe4a82641a3f477
    
    
  - Merge "Refactor some tests to not use bp2build_avail" into main
  - Merge "PandoraServer: remove scannning from `connectLe`" into main
  - Merge "Remove unused dependency from btif_sock." into main
  - Merge "Avoid conflict with math.h OVERFLOW macro" into main
  - Merge "Effect AIDL: correct some code format" into main
  - support open network
    
    Replace the empty string of wifi_password by None to support open
    network.
    
    Test: performance test
    Bug: 301009412
    Change-Id: I424d28d9fa2f6ba42705ebbebb4ca9e1d0f1d940
    
  - Merge "process_restarter: less boilerplate" into main
  - Merge "don't pass --restore flag to crosvm in response to guest reboot" into main
  - Merge "Document Debug Tracks on docs.perfetto.dev." into main
  - Move doDns64Synthesis and doDns64ReverseLookup around
    
    It needs to do a DNS64 synthesis or DNS64 reverse lookup only if the
    requester can do a DNS query or a reversed lookup. Move DNS64 handlings
    right after DNS (and reversed) lookups.
    
    Bug: 288340533
    Test: atest
    Change-Id: I488bfb5e6dabe254769a1c199459c5960653038f
    
  - Merge "Select the DICE validation rules based on the VSR" into main
  - Autoupdate of 2 submodules
    
    *hardware/interfaces updated to 606a406750182de160218a407feac2c53dc31139
    Merge "Don't require UNKNOWN_ERROR" into main
    *system/keymint updated to 9e4b4476b50475439bc6e4ac698193e093e79eb8
    Remove return of UNKNOWN_ERROR
    
    UNKNOWN_ERROR makes error attribution difficult. At the very least, we
    should be able to tell if an error is client's fault (e.g. invalid
    argument) or if its an internal failure (e.g. memory allocation
    failure).
    
    Added implementation-specific error codes for more error granularity.
    
    Also ran rustfmt to make the linter happy.
    
    Bug: 298194325
    Test: CtsKeystoreTestCases
    Test: VtsAidlKeyMintTargetTest
    Change-Id: I1255285d8d6c2374fb189cf892185abf97785b62
    
    
  - Merge "Merge "Resolve the issue of CtsOpenGlPerf2TestCases test exceptions causing the test item to wait indefinitely." into android13-tests-dev am: 9039762382" into main
  - Merge "Revert "Block CFI on static libraries"" into main
  - Merge "Add replySize for EFFECT_CMD_RESET to align with other commands" into main
  - Autoupdate of 2 submodules
    
    *build/bazel updated to 63498c08aae9c9e6a6a28d211a398111ae2c5269
    Merge "Revert^2 "android_binary: passthrough testonly attr."" into main
    *build/soong updated to a56002a473a592fbb66c7e5335b37725636c16a5
    Merge "Revert^2 "bp2build converter for android_test_helper_app."" into main
    
  - ndk: delete Abigail XML ABI dumps
    
    The code that could deal with those XML files is already gone.
    
    Bug: 156513478
    Change-Id: Ia33283c9725524bb4544f47a88fb815a0a58ae62
    Signed-off-by: Aleksei Vetrov <vvvvvv@google.com>
    
  - DO NOT MERGE: Move CF only tests to CF test mapping suite
    
    rename to `internal`
    
    Bug: 300519349
    Change-Id: I8069f9e6ba5b0ce1d2acd55f053386ca24d6dbab
    
  - Autoupdate of 2 submodules
    
    *build/bazel updated to 9ab0ad0947b88344a7c71989fa1990c4dc11c752
    Merge "Convert cc_aconfig_library to bazel." into main
    *build/soong updated to 62f7302701d0cfbbc03f1e7242d498a93edb7ea2
    Merge "Convert cc_aconfig_library to bazel." into main
    
  - Merge "Replace ASan with HWASan" into main
  - Merge "Delete unused DATA_MNT_POINT macro" into main
  - Merge "Always convert ndk_library" into main
  - Merge "Handle AVRCP SDP search collisions" into main
  - Merge "Add google-owned SMS short codes for Palestine" into main
  - Move CF only tests to CF test mapping suite
    
    This change doesn't modify presubmit coverage, the tests will still
    run in the lab as test mapping suite, just on a different ATP test
    config that dedicated to tests can only run on CF (not aosp_cf), on
    git_main branch.
    
    Bug: 300519349
    Test: atest presubmit check
    Change-Id: I8f060db66cd4d5a39f77bcabbe364a14c201f800
    
  - Clean up linux bionic and zipapex test support.
    
    They were only needed for the host APEX, which has been removed.
    
    Test: art/tools/buildbot-build.sh --host
          art/test/testrunner/testrunner.py --host --64
    Bug: 279835185
    Change-Id: I86bee85ce3d5eeba2a031cedc2d1ea5768a77f2d
    
  - Fix end2end tests after aosp/2751938
    
    Bug: b/293897204
    Test: GfxstreamEnd2EndTests
    Change-Id: Iba7c115e3613749aed4d4c3da9acee492974d5f7
    
  - Merge "Import AndroidX from build 10815243" into main
  - Merge "Upgrade curl to curl-8_3_0" into main
  - Autoupdate of 2 submodules
    
    *build/bazel updated to 0de51bad5ce54f8578c40829438d63810a1bb7ac
    Merge "Revert "android_binary: passthrough testonly attr."" into main
    *build/soong updated to 38b7be9d29424ab18b9440f99664aba3d1f255b9
    Merge "Revert "bp2build converter for android_test_helper_app."" into main
    
  - Merge "Set --config=ci and colorize logs for CI scripts." into main
  - Autoupdate of 2 submodules
    
    *build/bazel updated to 14542b7b5a8659ca891e686408c141f8a38b63fc
    Merge "android_binary: passthrough testonly attr." into main
    *build/soong updated to 72e22018c3ed1ee42a252ca4a705654118648416
    Merge "bp2build converter for android_test_helper_app." into main
    
  - Merge "Add VTS KM and RPC tests to TEST_MAPPING" into main
  - Merge "[dice] Map and read the DICE data in service VM" into main
  - Merge "Bp2build support for JNI deps of android_app." into main
  - Add a new user param "sim_supported_models" in ACTS config.
    
    DONOT enable auto-submit, this CL has config dependency.
    
    This is to skip some WifiEnterpriseTest tests if a DUT cannot equip with a SIM card.
    
    Change-Id: If3d185979b96a6ee2c8b5bad6dcd48da3c02c43f
    Bug: 301348555
    
  - MediaControl: Extract CCCD storage out of MediaControlGattService
    
    It is required for multiple MCS GATT service instances to have their own
    unique set of CCC values stored. CCC descriptor values cannot be shared between
    the instances. Since the service-owning profile knows the context in which
    the service is intantiated, it is able to store the CCC descriptor values with
    the proper context.
    
    This patch provides CCC descriptor value storage for the single Generic
    Media Control Service instance, stored under the BluetoothDevice.METADATA_GMCS_CCCD
    metadata. Other instances will not get their values stored, and empty list
    will be provided if they try to restore them. This is fine for now as
    there is no support for multiple MCS instances enabled yet.
    
    Bug: 276885705
    Test: atest BluetoothInstrumentationTests
    Change-Id: I58fc952ed6202d0586cf1e0fc7b7e2758f28e4aa
    
  - Let incidentd read the wakeup_sources debugfs node for userdebug/eng builds
    
    Currently, incidentd is allowed to read the wakeup_sources debugfs
    node only if a device does not enforce debugfs restrictions. If a device
    enforces debugfs restrictions, debugfs cannot be mounted on user builds,
    but can be mounted on userdebug and eng builds.
    
    Processes that need to use debugfs should therefore be able to
    access it on userdebug and eng builds. So, allow incidentd to
    read the wakeup sources debugfs node for userdebug and eng builds.
    
    Bug: 300477252
    Change-Id: I9bb480a0418a6d176b39753d552f409e139be178
    Signed-off-by: Isaac J. Manjarres <isaacmanjarres@google.com>
    
  - Merge "Block CFI on static libraries" into main
  - Merge "Fix Android version regex" into main
  - Merge "Add keep sorted tags" into main
  - Merge "Handle prebuilt vs source selection in bp2build" into main
  - Enable UFFD GC by default for Android U and above.
    
    Bug: 251150519
    Test: atest art_standalone_odrefresh_tests
    Test: (Tested on main) -
      1. Build with OVERRIDE_ENABLE_UFFD_GC=false
      2. See odrefresh triggered on the first boot.
      3. See "Using CollectorTypeCMC GC".
    Test: (Tested on UDC) -
      1. Build and install the ART APEX.
      2. See odrefresh triggered on the reboot.
      3. See "Using CollectorTypeCMC GC".
    Change-Id: I212f08fa4d51b4cdac3baedd922df815cd270581
    
  - Merge "Added entry to OWNERS" into main
  - Merge "Merge "Merge "Merge "Resolve the issue of CtsOpenGlPerf2TestCases test exceptions causing the test item to wait indefinitely." into android12-tests-dev am: 1b38ed25d6" into android12L-tests-dev am: b515f26baa" into android13-tests-dev am: df464f3242" into main
  - Merge "Update supported API level javadoc." into main
  - Merge "Update JSON data file with algorithm supported API levels." into main
  - Merge "Update API doc tools." into main
  - Merge changes I81b2115b,Ibe22be62 into main
    
    * changes:
      Remove isTcpInfoParsingSupported and Q test annotations
      Skip polling when light doze mode is enabled
    
  - Merge "PandoraServer: Add AcceptPutOperation in OPP" into main
  - Merge "[Refactor] Make uid owner match comparison logic into a function" into main
  - Merge "leaudio: Fix handling invalid offloader behaviour" into main
  - Merge "Move CF only tests to CF test mapping suite" into main
  - Revert "Declare to heap that switching from zygote to its child in test 2031"
    
    This reverts commit 80eeb4f3a06431e66b15950498487f68f7c6ded1.
    
    Reason for revert: In local testing realized that ScopedSuspendAll doesn't like doing a GC (as part of heap->PreZygoteFork()) before. Reverting to solidify the logic.
    
    Change-Id: I682bec08cb7c30e20016348904eb44156d1864d6
    
  - Merge "Remove unused --auto-ld-library-path flag" into main
  - Merge "Remove unused --smart-testing-local flag" into main
  - Autoupdate of 3 submodules
    
    *build/make updated to c774b33c6188cfc80f802ce65ef714af22de5971
    Merge "Add a build-time flag for AVF permission change" into main
    *build/release updated to 36d4c3decbd1827c0e63a19b7fce68862acfa001
    Add a build-time flag for AVF permission changes
    
    (And fix the alphabetic ordering in passing.)
    
    Bug: 278765584
    Test: Builds, with and without the flag enabled
    Change-Id: If19898009d9f242ef639d9f7a8a434247703a3c8
    
    *packages/modules/Virtualization updated to 06fd3c7d4bbec43aced9d2c9c68c8b6938d1b000
    Merge "Allow preinstalled apps to use the AVF APIs" into main
    
  - Merge "Introduce a method to set up MetricsBase.tool_name" into main

[...]