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

Unverified Commit dd77aca3 authored by Marvin W.'s avatar Marvin W. 🐿️
Browse files

Migrate Basement/Fido SafeParcelables to use processor instead of reflection

This improves speed and should help against ProGuard optimizing away our code
parent 23080f86
Loading
Loading
Loading
Loading
+19 −8
Original line number Diff line number Diff line
@@ -12,8 +12,12 @@ import android.app.Activity;
import android.app.PendingIntent;
import android.content.Intent;
import android.content.IntentSender;
import android.os.Parcel;
import android.text.TextUtils;
import org.microg.safeparcel.AutoSafeParcelable;
import androidx.annotation.NonNull;
import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;

import java.util.Arrays;

@@ -21,7 +25,8 @@ import java.util.Arrays;
 * Contains all possible error codes for when a client fails to connect to Google Play services.
 * These error codes are used by {@link GoogleApiClient.OnConnectionFailedListener}.
 */
public class ConnectionResult extends AutoSafeParcelable {
@SafeParcelable.Class
public class ConnectionResult extends AbstractSafeParcelable {
    /**
     * The connection was successful.
     */
@@ -158,12 +163,12 @@ public class ConnectionResult extends AutoSafeParcelable {
    public static final int DRIVE_EXTERNAL_STORAGE_REQUIRED = 1500;

    @Field(1)
    private final int versionCode = 1;
    @Field(2)
    int versionCode = 1;
    @Field(value = 2, getterName = "getErrorCode")
    private int statusCode;
    @Field(3)
    @Field(value = 3, getterName = "getResolution")
    private PendingIntent resolution;
    @Field(4)
    @Field(value = 4, getterName = "getErrorMessage")
    private String message;

    private ConnectionResult() {
@@ -195,7 +200,8 @@ public class ConnectionResult extends AutoSafeParcelable {
     * @param resolution A pending intent that will resolve the issue when started, or null.
     * @param message    An additional error message for the connection result, or null.
     */
    public ConnectionResult(int statusCode, PendingIntent resolution, String message) {
    @Constructor
    public ConnectionResult(@Param(2) int statusCode, @Param(3) PendingIntent resolution, @Param(4) String message) {
        this.statusCode = statusCode;
        this.resolution = resolution;
        this.message = message;
@@ -342,5 +348,10 @@ public class ConnectionResult extends AutoSafeParcelable {
        }
    }

    public static final Creator<ConnectionResult> CREATOR = new AutoCreator<>(ConnectionResult.class);
    @Override
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        CREATOR.writeToParcel(this, dest, flags);
    }

    public static final SafeParcelableCreatorAndWriter<ConnectionResult> CREATOR = findCreator(ConnectionResult.class);
}
+19 −8
Original line number Diff line number Diff line
@@ -5,20 +5,26 @@

package com.google.android.gms.common;

import org.microg.safeparcel.AutoSafeParcelable;

public class Feature extends AutoSafeParcelable {
    @Field(1)
import android.os.Parcel;
import androidx.annotation.NonNull;
import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;

@SafeParcelable.Class
public class Feature extends AbstractSafeParcelable {
    @Field(value = 1, getterName = "getName")
    private String name;
    @Field(2)
    private int oldVersion;
    @Field(3)
    int oldVersion;
    @Field(value = 3, getterName = "getVersion", defaultValue = "-1")
    private long version = -1;

    private Feature() {
    }

    public Feature(String name, long version) {
    @Constructor
    public Feature(@Param(1) String name, @Param(3) long version) {
        this.name = name;
        this.version = version;
    }
@@ -32,5 +38,10 @@ public class Feature extends AutoSafeParcelable {
        return version;
    }

    public static final Creator<Feature> CREATOR = new AutoSafeParcelable.AutoCreator<>(Feature.class);
    @Override
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        CREATOR.writeToParcel(this, dest, flags);
    }

    public static final SafeParcelableCreatorAndWriter<Feature> CREATOR = findCreator(Feature.class);
}
+20 −11
Original line number Diff line number Diff line
@@ -6,25 +6,29 @@
package com.google.android.gms.common;

import android.content.Context;
import android.os.IBinder;
import android.os.Parcel;
import androidx.annotation.NonNull;
import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
import com.google.android.gms.dynamic.IObjectWrapper;
import com.google.android.gms.dynamic.ObjectWrapper;
import org.microg.safeparcel.AutoSafeParcelable;

public class GoogleCertificatesLookupQuery extends AutoSafeParcelable {
    @Field(1)
    private String callingPackage;
@SafeParcelable.Class
public class GoogleCertificatesLookupQuery extends AbstractSafeParcelable {
    @Field(value = 1, getterName = "getCallingPackage")
    String callingPackage;
    @Field(2)
    private boolean allowTestKeys;
    boolean allowTestKeys;
    @Field(3)
    private boolean ignoreTestKeysOverride;
    boolean ignoreTestKeysOverride;
    @Field(4)
    private IObjectWrapper contextWrapper;
    IObjectWrapper contextWrapper;
    private Context context;
    @Field(5)
    private boolean isChimeraPackage;
    boolean isChimeraPackage;
    @Field(6)
    private boolean includeHashesInErrorMessage;
    boolean includeHashesInErrorMessage;

    public String getCallingPackage() {
        return callingPackage;
@@ -37,5 +41,10 @@ public class GoogleCertificatesLookupQuery extends AutoSafeParcelable {
        return context;
    }

    public static final Creator<GoogleCertificatesLookupQuery> CREATOR = findCreator(GoogleCertificatesLookupQuery.class);
    @Override
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        CREATOR.writeToParcel(this, dest, flags);
    }

    public static final SafeParcelableCreatorAndWriter<GoogleCertificatesLookupQuery> CREATOR = findCreator(GoogleCertificatesLookupQuery.class);
}
+18 −10
Original line number Diff line number Diff line
@@ -6,27 +6,30 @@
package com.google.android.gms.common;

import android.os.IBinder;
import android.os.Parcel;
import android.os.RemoteException;

import androidx.annotation.NonNull;
import com.google.android.gms.common.internal.CertData;
import com.google.android.gms.common.internal.ICertData;
import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
import com.google.android.gms.dynamic.IObjectWrapper;
import com.google.android.gms.dynamic.ObjectWrapper;

import org.microg.gms.common.Hide;
import org.microg.safeparcel.AutoSafeParcelable;

@Hide
public class GoogleCertificatesQuery extends AutoSafeParcelable {
    @Field(1)
    private String callingPackage;
@SafeParcelable.Class
public class GoogleCertificatesQuery extends AbstractSafeParcelable {
    @Field(value = 1, getterName = "getCallingPackage")
    String callingPackage;
    @Field(2)
    private IBinder certDataBinder;
    IBinder certDataBinder;
    private CertData certData;
    @Field(3)
    private boolean allowTestKeys;
    boolean allowTestKeys;
    @Field(4)
    private boolean ignoreTestKeysOverride;
    boolean ignoreTestKeysOverride;

    public String getCallingPackage() {
        return callingPackage;
@@ -65,5 +68,10 @@ public class GoogleCertificatesQuery extends AutoSafeParcelable {
        return certData;
    }

    public static final Creator<GoogleCertificatesQuery> CREATOR = new AutoCreator<GoogleCertificatesQuery>(GoogleCertificatesQuery.class);
    @Override
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        CREATOR.writeToParcel(this, dest, flags);
    }

    public static final SafeParcelableCreatorAndWriter<GoogleCertificatesQuery> CREATOR = findCreator(GoogleCertificatesQuery.class);
}
+18 −8
Original line number Diff line number Diff line
@@ -16,19 +16,23 @@

package com.google.android.gms.common.api;

import android.os.Parcel;
import androidx.annotation.NonNull;
import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
import org.microg.gms.common.PublicApi;
import org.microg.safeparcel.AutoSafeParcelable;
import org.microg.safeparcel.SafeParceled;

/**
 * Describes an OAuth 2.0 scope to request. This has security implications for the user, and
 * requesting additional scopes will result in authorization dialogs.
 */
@PublicApi
public class Scope extends AutoSafeParcelable {
    @SafeParceled(1)
    private int versionCode = 1;
    @SafeParceled(2)
@SafeParcelable.Class
public class Scope extends AbstractSafeParcelable {
    @Field(1)
    int versionCode = 1;
    @Field(value = 2, getterName = "getScopeUri")
    private final String scopeUri;

    private Scope() {
@@ -38,7 +42,8 @@ public class Scope extends AutoSafeParcelable {
    /**
     * Creates a new scope with the given URI.
     */
    public Scope(String scopeUri) {
    @Constructor
    public Scope(@Param(2) String scopeUri) {
        this.scopeUri = scopeUri;
    }

@@ -61,5 +66,10 @@ public class Scope extends AutoSafeParcelable {
        return scopeUri;
    }

    public static final Creator<Scope> CREATOR = new AutoCreator<Scope>(Scope.class);
    @Override
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        CREATOR.writeToParcel(this, dest, flags);
    }

    public static final SafeParcelableCreatorAndWriter<Scope> CREATOR = findCreator(Scope.class);
}
Loading