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

Commit 59076d89 authored by Philip P. Moltmann's avatar Philip P. Moltmann
Browse files

Add feature context

Currently only used by app-ops, but can be used by other modules too.

AppOps will collect app-ops based on feature. Only the most basic
parts of app-ops are supporting features yet. The rest will be added
later.

Test: atest CtsAppOpsTestCases
      atest RunSettingsLibRoboTests
      atest com.android.server.wm.ActivityStarterTests
      m -j doc-comment-check-docs
Bug: 136595429
Change-Id: Ia664f4ff1c1c2ceea721d76dc491ec50c237e9ce
parent 7e7af892
Loading
Loading
Loading
Loading
+12 −7
Original line number Diff line number Diff line
@@ -4279,23 +4279,24 @@ package android.app {
    method @Deprecated public int checkOp(@NonNull String, int, @NonNull String);
    method @Deprecated public int checkOpNoThrow(@NonNull String, int, @NonNull String);
    method public void checkPackage(int, @NonNull String);
    method public void finishOp(@NonNull String, int, @NonNull String);
    method @Deprecated public void finishOp(@NonNull String, int, @NonNull String);
    method public void finishOp(@NonNull String, int, @NonNull String, @Nullable String);
    method public boolean isOpActive(@NonNull String, int, @NonNull String);
    method @Deprecated public int noteOp(@NonNull String, int, @NonNull String);
    method public int noteOp(@NonNull String, int, @Nullable String, @Nullable String);
    method public int noteOp(@NonNull String, int, @Nullable String, @Nullable String, @Nullable String);
    method @Deprecated public int noteOpNoThrow(@NonNull String, int, @NonNull String);
    method public int noteOpNoThrow(@NonNull String, int, @NonNull String, @Nullable String);
    method public int noteOpNoThrow(@NonNull String, int, @NonNull String, @Nullable String, @Nullable String);
    method @Deprecated public int noteProxyOp(@NonNull String, @NonNull String);
    method public int noteProxyOp(@NonNull String, @Nullable String, int, @Nullable String);
    method public int noteProxyOp(@NonNull String, @Nullable String, int, @Nullable String, @Nullable String);
    method @Deprecated public int noteProxyOpNoThrow(@NonNull String, @NonNull String);
    method @Deprecated public int noteProxyOpNoThrow(@NonNull String, @Nullable String, int);
    method public int noteProxyOpNoThrow(@NonNull String, @Nullable String, int, @Nullable String);
    method public int noteProxyOpNoThrow(@NonNull String, @Nullable String, int, @Nullable String, @Nullable String);
    method public static String permissionToOp(String);
    method public void setNotedAppOpsCollector(@Nullable android.app.AppOpsManager.AppOpsCollector);
    method @Deprecated public int startOp(@NonNull String, int, @NonNull String);
    method public int startOp(@NonNull String, int, @Nullable String, @Nullable String);
    method public int startOp(@NonNull String, int, @Nullable String, @NonNull String, @Nullable String);
    method @Deprecated public int startOpNoThrow(@NonNull String, int, @NonNull String);
    method public int startOpNoThrow(@NonNull String, int, @NonNull String, @Nullable String);
    method public int startOpNoThrow(@NonNull String, int, @NonNull String, @NonNull String, @Nullable String);
    method public void startWatchingActive(@NonNull String[], @NonNull java.util.concurrent.Executor, @NonNull android.app.AppOpsManager.OnOpActiveChangedListener);
    method public void startWatchingMode(@NonNull String, @Nullable String, @NonNull android.app.AppOpsManager.OnOpChangedListener);
    method public void startWatchingMode(@NonNull String, @Nullable String, int, @NonNull android.app.AppOpsManager.OnOpChangedListener);
@@ -4477,6 +4478,7 @@ package android.app {
  public final class AsyncNotedAppOp implements android.os.Parcelable {
    method public int describeContents();
    method @Nullable public String getFeatureId();
    method @NonNull public String getMessage();
    method @Nullable public String getNotingPackageName();
    method @IntRange(from=0) public int getNotingUid();
@@ -6301,6 +6303,7 @@ package android.app {
  }
  public final class SyncNotedAppOp {
    method @Nullable public String getFeatureId();
    method @NonNull public String getOp();
  }
@@ -9777,6 +9780,7 @@ package android.content {
    method public abstract android.content.Context createContextForSplit(String) throws android.content.pm.PackageManager.NameNotFoundException;
    method public abstract android.content.Context createDeviceProtectedStorageContext();
    method public abstract android.content.Context createDisplayContext(@NonNull android.view.Display);
    method @NonNull public android.content.Context createFeatureContext(@Nullable String);
    method public abstract android.content.Context createPackageContext(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
    method public abstract String[] databaseList();
    method public abstract boolean deleteDatabase(String);
@@ -9808,6 +9812,7 @@ package android.content {
    method @Nullable public abstract java.io.File getExternalFilesDir(@Nullable String);
    method public abstract java.io.File[] getExternalFilesDirs(String);
    method @Deprecated public abstract java.io.File[] getExternalMediaDirs();
    method @Nullable public String getFeatureId();
    method public abstract java.io.File getFileStreamPath(String);
    method public abstract java.io.File getFilesDir();
    method public java.util.concurrent.Executor getMainExecutor();
+25 −2
Original line number Diff line number Diff line
@@ -458,6 +458,7 @@ package android.app {
  public static final class AppOpsManager.OpEntry implements android.os.Parcelable {
    method public int describeContents();
    method public long getDuration();
    method @NonNull public java.util.Map<java.lang.String,android.app.AppOpsManager.OpFeatureEntry> getFeatures();
    method public long getLastAccessBackgroundTime(int);
    method public long getLastAccessForegroundTime(int);
    method public long getLastAccessTime(int);
@@ -471,15 +472,37 @@ package android.app {
    method public long getLastRejectTime(int, int, int);
    method public int getMode();
    method @NonNull public String getOpStr();
    method @Nullable public String getProxyPackageName();
    method @Deprecated @Nullable public String getProxyPackageName();
    method @Nullable public String getProxyPackageName(int, int);
    method public int getProxyUid();
    method @Deprecated public int getProxyUid();
    method public int getProxyUid(int, int);
    method public boolean isRunning();
    method public void writeToParcel(android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.OpEntry> CREATOR;
  }
  public static final class AppOpsManager.OpFeatureEntry {
    method public long getDuration();
    method public long getLastAccessBackgroundTime(int);
    method public long getLastAccessForegroundTime(int);
    method public long getLastAccessTime(int);
    method public long getLastAccessTime(int, int, int);
    method public long getLastBackgroundDuration(int);
    method public long getLastDuration(int, int, int);
    method public long getLastForegroundDuration(int);
    method public long getLastRejectBackgroundTime(int);
    method public long getLastRejectForegroundTime(int);
    method public long getLastRejectTime(int);
    method public long getLastRejectTime(int, int, int);
    method @Nullable public String getProxyFeatureId();
    method @Nullable public String getProxyFeatureId(int, int);
    method @Nullable public String getProxyPackageName();
    method @Nullable public String getProxyPackageName(int, int);
    method public int getProxyUid();
    method public int getProxyUid(int, int);
    method public boolean isRunning();
  }
  public static final class AppOpsManager.PackageOps implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public java.util.List<android.app.AppOpsManager.OpEntry> getOps();
+25 −2
Original line number Diff line number Diff line
@@ -305,6 +305,7 @@ package android.app {
  public static final class AppOpsManager.OpEntry implements android.os.Parcelable {
    method public int describeContents();
    method public long getDuration();
    method @NonNull public java.util.Map<java.lang.String,android.app.AppOpsManager.OpFeatureEntry> getFeatures();
    method public long getLastAccessBackgroundTime(int);
    method public long getLastAccessForegroundTime(int);
    method public long getLastAccessTime(int);
@@ -318,15 +319,37 @@ package android.app {
    method public long getLastRejectTime(int, int, int);
    method public int getMode();
    method @NonNull public String getOpStr();
    method @Nullable public String getProxyPackageName();
    method @Deprecated @Nullable public String getProxyPackageName();
    method @Nullable public String getProxyPackageName(int, int);
    method public int getProxyUid();
    method @Deprecated public int getProxyUid();
    method public int getProxyUid(int, int);
    method public boolean isRunning();
    method public void writeToParcel(android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.OpEntry> CREATOR;
  }

  public static final class AppOpsManager.OpFeatureEntry {
    method public long getDuration();
    method public long getLastAccessBackgroundTime(int);
    method public long getLastAccessForegroundTime(int);
    method public long getLastAccessTime(int);
    method public long getLastAccessTime(int, int, int);
    method public long getLastBackgroundDuration(int);
    method public long getLastDuration(int, int, int);
    method public long getLastForegroundDuration(int);
    method public long getLastRejectBackgroundTime(int);
    method public long getLastRejectForegroundTime(int);
    method public long getLastRejectTime(int);
    method public long getLastRejectTime(int, int, int);
    method @Nullable public String getProxyFeatureId();
    method @Nullable public String getProxyFeatureId(int, int);
    method @Nullable public String getProxyPackageName();
    method @Nullable public String getProxyPackageName(int, int);
    method public int getProxyUid();
    method public int getProxyUid(int, int);
    method public boolean isRunning();
  }

  public class DownloadManager {
    field public static final String COLUMN_MEDIASTORE_URI = "mediastore_uri";
  }
+921 −243

File changed.

Preview size limit exceeded, changes collapsed.

+7 −4
Original line number Diff line number Diff line
@@ -16,10 +16,11 @@

package android.app;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.util.SparseIntArray;

import com.android.internal.util.function.QuadFunction;
import com.android.internal.util.function.TriFunction;

/**
 * App ops service local interface.
@@ -60,12 +61,14 @@ public abstract class AppOpsManagerInternal {
         *
         * @param code The op code to note.
         * @param uid The UID for which to note.
         * @param packageName The package for which to note.
         * @param packageName The package for which to note. {@code null} for system package.
         * @param featureId Id of the feature in the package
         * @param superImpl The super implementation.
         * @return The app op note result.
         */
        int noteOperation(int code, int uid, String packageName,
                TriFunction<Integer, Integer, String, Integer> superImpl);
        int noteOperation(int code, int uid, @Nullable String packageName,
                @Nullable String featureId,
                @NonNull QuadFunction<Integer, Integer, String, String, Integer> superImpl);
    }

    /**
Loading