Skip to content
Snippets Groups Projects
  1. Sep 06, 2021
    • Bernardo Rufino's avatar
    • Aaron Huang's avatar
    • Bernardo Rufino's avatar
      Don't throw for LazyValue in Parcel.hasFileDescriptors() · c087f624
      Bernardo Rufino authored
      In aosp/1819733 we extracted Parcel.hasFileDescriptor() for types
      produced by Parcel.writeValue() and consumed by Parcel.readValue() out
      of Bundle into Parcel. It's supposed to handle LazyValue too.
      
      However, we put a check to verify that it was a type supported by
      readValue()/writeValue() by retrieving the VAL_XXX type of the value via
      Parcel.getValueType(), however, that method throws for LazyValue since
      we don't actually write that special type on the wire. However, we still
      want Parcel.hasFileDescriptor() to support it, so moving the check into
      a last 'else' statement, making sure we don't throw in case the value is
      a LazyValue.
      
      Bug: 195622897
      Bug: 198433827
      Test: atest CtsNetTestCases android.net.cts.CaptivePortalTest#testCaptivePortalIsNotDefaultNetwork
      Change-Id: I1e6ec122557c12e74db6890e1631fec3cefe31f6
      c087f624
  2. Sep 03, 2021
  3. Sep 02, 2021
  4. Sep 01, 2021
  5. Aug 31, 2021
  6. Aug 30, 2021
  7. Aug 27, 2021
    • Mohammad Islam's avatar
      Merge changes from topic "new_aidl_required" · 56b3cf70
      Mohammad Islam authored
      * changes:
        Hook the new APIs in StagingManager to PackageManagerNative service
        Notify StagedApexObservers when there is a change in set of staged APEX
        Open up new API in StagingManager to get information about staged APEX
        Connect the new API from ApexService to ApexManager
      56b3cf70
    • Treehugger Robot's avatar
      16335690
    • Treehugger Robot's avatar
    • Bernardo Rufino's avatar
      Lazy bundle · 9ca6a5e2
      Bernardo Rufino authored
      Implement lazy deserialization for custom types in bundle:
      * Parcelable (VAL_PARCELABLE)
      * Serializable (VAL_SERIALIZABLE)
      * Parcelable array (VAL_PARCELABLEARRAY)
      * Lists (VAL_LIST)
      * Sparse array (VAL_SPARSEARRAY)
      * Bundle (VAL_BUNDLE)
      
      This enhances security, makes bundles more robust to deserialization
      errors and avoid deserializing unneeded objects in some cases*, for more
      details check go/lazy-bundle.
      
      To do that, we prefix those types with their length when writing them on
      the wire. Map serialization and deserialization now happens inside
      Bundle (instead of calling Parcel's readArrayMapInternal() /
      writeArrayMapInternal()) and we use an intermediary object - LazyValue -
      that holds information about the position and length of the value we
      will deserialize when queried.
      
      So, there are basically 3 states:
      
      1. We received the bundle but haven't queried anything about it (not
         even isEmpty()): in this case the original parcel is held inside and
         we haven't attempted any deserialization (except for the metadata at
         the beginning such as the magic, etc)
      
      2. We queried something on it (eg. isEmpty()): Now we deserialize the
         bundle skipping the custom values above (we're able to do this now
         with the length written on the wire) and instead placing LazyValue
         objects for them in the map.
      
      3. We query one of the lazy values: Now, we deserialize the object
         represented by LazyValue and replace it on the map.
      
      Since after (2) LazyValue objects are the only ones holding references
      to the original Parcel, when all LazyValues are deserialized, the
      original Parcel is available for GC.
      
      Inside bundle now we differentiate between unparcel(itemwise = true) and
      unparcel(itemwise = false) where the first also deserializes each item
      (such that there are no LazyValues in the map). This is because some
      operations such as kindofEquals() need all items deserialized.
      
      I had to break a few methods in parcel into multiple methods in parcel
      to be able to control the format in bundle. They are all @hide.
      
      * In quick local experiments, counting the bytes that didn't need to be
      deserialized after the change. Roughly 10% of bytes from custom-type
      items in Bundle are not deserialized in the testing scenario (if I
      haven't messed up the stats :). That's on a sdk_gphone_x86_64_arm64 a
      few minutes after boot. Check
      https://screenshot.googleplex.com/53uXrrqDMYahzg3, stats collection is
      on ag/15403076.
      
      Test: atest -d android.os.cts.ParcelTest android.os.cts.BundleTest android.os.BundleTest android.os.ParcelTest
      Test: Boot device
      Bug: 195622897
      Change-Id: Icfe8880cad00c3cd2afcbe4b92400ad4579e680e
      9ca6a5e2
    • Alice Kuo's avatar
      settinglib: add VolumeControl profile for auto-connect · bebf4be0
      Alice Kuo authored
      Bug: 150670922
      Test: Connect with a VCP supported device, make sure the connection
      Change-Id: Ic51ed557251a984c64b609936abe747f13d62578
      bebf4be0
    • Songchun Fan's avatar
  8. Aug 26, 2021
    • Songchun Fan's avatar
      [lint] add owners to frameworks/base/tools/lint · 032e444c
      Songchun Fan authored
      BUG: 197635708
      Test: none
      Change-Id: I81c85fa751bac2d3dfb4076096b5dd0920edf3f3
      032e444c
    • Daniel Norman's avatar
      Allow APEXes permission XMLs to declare features. · 5f079772
      Daniel Norman authored
      This allows APEXes to include permission XMLs like the NFC XMLs in
      frameworks/native/data/etc which declare NFC features.
      
      (This also enables `unavailable-feature` declarations.)
      
      Bug: 197680726
      Test: Include an NFC permission XML in an APEX.
            Observe feature is set correctly in logs and by
            enabling NFC in Settings app.
      Change-Id: Ied425b8897ab80df250d42cfbf0525634ed948aa
      5f079772
Loading