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

Commit 854211d1 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Store WebView package signatures as Signatures instead of Strings"

parents 839c570b 74473597
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -5625,7 +5625,7 @@ package android.webkit {
    field public final java.lang.String description;
    field public final boolean isFallback;
    field public final java.lang.String packageName;
    field public final java.lang.String[] signatures;
    field public final android.content.pm.Signature[] signatures;
  }

  public final class WebViewUpdateService {
+13 −6
Original line number Diff line number Diff line
@@ -17,10 +17,10 @@
package android.webkit;

import android.annotation.SystemApi;
import android.content.pm.Signature;
import android.os.Parcel;
import android.os.Parcelable;

import java.util.Arrays;
import android.util.Base64;

/**
 * @hide
@@ -34,7 +34,14 @@ public final class WebViewProviderInfo implements Parcelable {
        this.description = description;
        this.availableByDefault = availableByDefault;
        this.isFallback = isFallback;
        this.signatures = signatures;
        if (signatures == null) {
            this.signatures = new Signature[0];
        } else {
            this.signatures = new Signature[signatures.length];
            for (int n = 0; n < signatures.length; n++) {
                this.signatures[n] = new Signature(Base64.decode(signatures[n], Base64.DEFAULT));
            }
        }
    }

    // aidl stuff
@@ -54,7 +61,7 @@ public final class WebViewProviderInfo implements Parcelable {
        description = in.readString();
        availableByDefault = (in.readInt() > 0);
        isFallback = (in.readInt() > 0);
        signatures = in.createStringArray();
        signatures = in.createTypedArray(Signature.CREATOR);
    }

    @Override
@@ -68,7 +75,7 @@ public final class WebViewProviderInfo implements Parcelable {
        out.writeString(description);
        out.writeInt(availableByDefault ? 1 : 0);
        out.writeInt(isFallback ? 1 : 0);
        out.writeStringArray(signatures);
        out.writeTypedArray(signatures, 0);
    }

    // fields read from framework resource
@@ -76,5 +83,5 @@ public final class WebViewProviderInfo implements Parcelable {
    public final String description;
    public final boolean availableByDefault;
    public final boolean isFallback;
    public final String[] signatures;
    public final Signature[] signatures;
}
+3 −9
Original line number Diff line number Diff line
@@ -507,22 +507,16 @@ class WebViewUpdater {
        if (systemInterface.systemIsDebuggable()) {
            return true;
        }
        Signature[] packageSignatures;
        // If no signature is declared, instead check whether the package is included in the
        // system.
        if (provider.signatures == null || provider.signatures.length == 0) {
            return packageInfo.applicationInfo.isSystemApp();
        }
        packageSignatures = packageInfo.signatures;
        if (packageSignatures.length != 1)
            return false;
        if (packageInfo.signatures.length != 1) return false;

        final byte[] packageSignature = packageSignatures[0].toByteArray();
        // Return whether the package signature matches any of the valid signatures
        for (String signature : provider.signatures) {
            final byte[] validSignature = Base64.decode(signature, Base64.DEFAULT);
            if (Arrays.equals(packageSignature, validSignature))
                return true;
        for (Signature signature : provider.signatures) {
            if (signature.equals(packageInfo.signatures[0])) return true;
        }
        return false;
    }