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

Commit 0ac1fc9d authored by Amith Yamasani's avatar Amith Yamasani
Browse files

Restricted account visibility

When accounts are shared to a restricted/limited user, apps can
opt-in to viewing accounts of a certain type. Other shared accounts
are not visible to the app.

App would specify the account type in the manifest <application> tag
with the attribute restrictedAccountType="foo.bar", where "foo.bar"
is the account type as defined by the authenticator.

Change-Id: I7586da04d6d6d32aae15adc6b1366f325bb07384
parent 2e73f5b8
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -858,6 +858,7 @@ package android {
    field public static final int resource = 16842789; // 0x1010025
    field public static final int restoreAnyVersion = 16843450; // 0x10102ba
    field public static final deprecated int restoreNeedsApplication = 16843421; // 0x101029d
    field public static final int restrictedAccountType = 16843733; // 0x10103d5
    field public static final int right = 16843183; // 0x10101af
    field public static final int ringtonePreferenceStyle = 16842899; // 0x1010093
    field public static final int ringtoneType = 16843257; // 0x10101f9
+5 −0
Original line number Diff line number Diff line
@@ -221,6 +221,9 @@ public class PackageInfo implements Parcelable {
    /** @hide */
    public boolean requiredForAllUsers;

    /** @hide */
    public String restrictedAccountType;

    public PackageInfo() {
    }

@@ -262,6 +265,7 @@ public class PackageInfo implements Parcelable {
        dest.writeTypedArray(reqFeatures, parcelableFlags);
        dest.writeInt(installLocation);
        dest.writeInt(requiredForAllUsers ? 1 : 0);
        dest.writeString(restrictedAccountType);
    }

    public static final Parcelable.Creator<PackageInfo> CREATOR
@@ -301,5 +305,6 @@ public class PackageInfo implements Parcelable {
        reqFeatures = source.createTypedArray(FeatureInfo.CREATOR);
        installLocation = source.readInt();
        requiredForAllUsers = source.readInt() != 0;
        restrictedAccountType = source.readString();
    }
}
+10 −0
Original line number Diff line number Diff line
@@ -290,6 +290,7 @@ public class PackageParser {
        pi.applicationInfo = generateApplicationInfo(p, flags, state, userId);
        pi.installLocation = p.installLocation;
        pi.requiredForAllUsers = p.mRequiredForAllUsers;
        pi.restrictedAccountType = p.mRestrictedAccountType;
        pi.firstInstallTime = firstInstallTime;
        pi.lastUpdateTime = lastUpdateTime;
        if ((flags&PackageManager.GET_GIDS) != 0) {
@@ -1766,6 +1767,11 @@ public class PackageParser {
                    false)) {
                owner.mRequiredForAllUsers = true;
            }
            String accountType = sa.getString(com.android.internal.R.styleable
                    .AndroidManifestApplication_restrictedAccountType);
            if (accountType != null && accountType.length() > 0) {
                owner.mRestrictedAccountType = accountType;
            }
        }

        if (sa.getBoolean(
@@ -3193,6 +3199,7 @@ public class PackageParser {
    }

    public final static class Package {

        public String packageName;

        // For now we only support one application per package.
@@ -3280,6 +3287,9 @@ public class PackageParser {
        /* An app that's required for all users and cannot be uninstalled for a user */
        public boolean mRequiredForAllUsers;

        /* The restricted account authenticator type that is used by this application */
        public String mRestrictedAccountType;

        /**
         * Digest suitable for comparing whether this package's manifest is the
         * same as another.
+5 −0
Original line number Diff line number Diff line
@@ -889,6 +889,11 @@
        <!-- Declare that your application will be able to deal with RTL (right to left) layouts.
             If set to  false (default value), your application will not care about RTL layouts. -->
        <attr name="supportsRtl" format="boolean" />
        <!-- Declare that this application requires access to restricted accounts of a certain
             type. The default value is null and restricted accounts won\'t be visible to this
             application. The type should correspond to the account authenticator type, such as
             "com.google" -->
        <attr name="restrictedAccountType" format="string"/>
    </declare-styleable>
    
    <!-- The <code>permission</code> tag declares a security permission that can be
+1 −0
Original line number Diff line number Diff line
@@ -2041,6 +2041,7 @@
  <public type="attr" name="indicatorEnd" />
  <public type="attr" name="childIndicatorStart" />
  <public type="attr" name="childIndicatorEnd" />
  <public type="attr" name="restrictedAccountType" />

  <public type="style" name="Theme.NoTitleBar.Overscan" />
  <public type="style" name="Theme.Light.NoTitleBar.Overscan" />
Loading