Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6dfdcf43 authored by Olivier Gaillard's avatar Olivier Gaillard
Browse files

Make work source APIs visible to system apps.

- Adds @SystemApi to the work source apis. Work source will help us to
better understand who is responsible for resources usage (starting with
cpu usage)
- Adds @SystemApi to the transact listener to allow system apps to
intercept outgoing transactions in order to the set work source.

Bug: 111534779
Test: n/a - just adding annotations
Change-Id: Ie86696228bb9df57f640b978a1d78439c99626d3
parent 02e7db9b
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -4025,6 +4025,19 @@ package android.os {
    field public static final java.lang.String EXTRA_EVENT_TIMESTAMP = "android.os.extra.EVENT_TIMESTAMP";
  }

  public class Binder implements android.os.IBinder {
    method public static final long clearCallingWorkSource();
    method public static final int getCallingWorkSourceUid();
    method public static final void restoreCallingWorkSource(long);
    method public static final long setCallingWorkSourceUid(int);
    method public static void setProxyTransactListener(android.os.Binder.ProxyTransactListener);
  }

  public static abstract interface Binder.ProxyTransactListener {
    method public abstract void onTransactEnded(java.lang.Object);
    method public abstract java.lang.Object onTransactStarted(android.os.IBinder, int);
  }

  public final class ConfigUpdate {
    field public static final java.lang.String ACTION_UPDATE_CARRIER_ID_DB = "android.os.action.UPDATE_CARRIER_ID_DB";
    field public static final java.lang.String ACTION_UPDATE_CARRIER_PROVISIONING_URLS = "android.intent.action.UPDATE_CARRIER_PROVISIONING_URLS";
+23 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.os;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.util.ExceptionUtils;
import android.util.Log;
import android.util.Slog;
@@ -399,6 +400,9 @@ public class Binder implements IBinder {
     * reasons, we only support one UID. This UID represents the original user responsible for the
     * binder calls.
     *
     * <p>{@link Binder#restoreCallingWorkSource(long)} must always be called after setting the
     * worksource.
     *
     * <p>A typical use case would be
     * <pre>
     * long token = Binder.setCallingWorkSourceUid(uid);
@@ -417,6 +421,7 @@ public class Binder implements IBinder {
     * @hide
     **/
    @CriticalNative
    @SystemApi
    public static final native long setCallingWorkSourceUid(int workSource);

    /**
@@ -430,6 +435,7 @@ public class Binder implements IBinder {
     * @hide
     */
    @CriticalNative
    @SystemApi
    public static final native int getCallingWorkSourceUid();

    /**
@@ -438,10 +444,24 @@ public class Binder implements IBinder {
     * <p>The work source will be propagated for future outgoing binder transactions
     * executed on this thread.
     *
     * <p>{@link Binder#restoreCallingWorkSource(long)} must always be called after clearing the
     * worksource.
     *
     * <p>A typical use case would be
     * <pre>
     * long token = Binder.clearCallingWorkSource();
     * try {
     *   // Call an API.
     * } finally {
     *   Binder.restoreCallingWorkSource(token);
     * }
     * </pre>
     *
     * @return token to restore original work source.
     * @hide
     **/
    @CriticalNative
    @SystemApi
    public static final native long clearCallingWorkSource();

    /**
@@ -461,6 +481,7 @@ public class Binder implements IBinder {
     * @hide
     **/
    @CriticalNative
    @SystemApi
    public static final native void restoreCallingWorkSource(long token);

    /**
@@ -601,6 +622,7 @@ public class Binder implements IBinder {
     * See {@link setProxyTransactListener}.
     * @hide
     */
    @SystemApi
    public interface ProxyTransactListener {
        /**
         * Called before onTransact.
@@ -663,6 +685,7 @@ public class Binder implements IBinder {
     * <li>Never execute another binder transaction inside the listener.
     * @hide
     */
    @SystemApi
    public static void setProxyTransactListener(@Nullable ProxyTransactListener listener) {
        BinderProxy.setTransactListener(listener);
    }