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

Commit 62271723 authored by Fabrice Di Meglio's avatar Fabrice Di Meglio
Browse files

Add Default Browser App support and relax Hosts validation for AppLinks

- add private PackageManager APIs for setting/getting the default
Browser App package name
- serialize / deserialize the default Browser App package name per User

Also relax the Hosts name validation for the AppLinls feature. Now we
just care if the IntentFilter is having an HTTP or HTTPS scheme.

Change-Id: I4436f66ac6beff57e14f7f3a2a00b0b582c03be9
parent 2d897fbc
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -30603,6 +30603,7 @@ package android.test.mock {
    method public android.graphics.drawable.Drawable getApplicationLogo(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
    method public int getComponentEnabledSetting(android.content.ComponentName);
    method public android.graphics.drawable.Drawable getDefaultActivityIcon();
    method public java.lang.String getDefaultBrowserPackageName(int);
    method public android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo);
    method public java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int);
    method public java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int);
@@ -30650,6 +30651,7 @@ package android.test.mock {
    method public android.content.pm.ResolveInfo resolveService(android.content.Intent, int);
    method public void setApplicationEnabledSetting(java.lang.String, int, int);
    method public void setComponentEnabledSetting(android.content.ComponentName, int, int);
    method public boolean setDefaultBrowserPackageName(java.lang.String, int);
    method public void setInstallerPackageName(java.lang.String, java.lang.String);
    method public void verifyPendingInstall(int, int);
  }
+2 −0
Original line number Diff line number Diff line
@@ -33205,6 +33205,7 @@ package android.test.mock {
    method public android.graphics.drawable.Drawable getApplicationLogo(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
    method public int getComponentEnabledSetting(android.content.ComponentName);
    method public android.graphics.drawable.Drawable getDefaultActivityIcon();
    method public java.lang.String getDefaultBrowserPackageName(int);
    method public android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo);
    method public java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int);
    method public java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int);
@@ -33254,6 +33255,7 @@ package android.test.mock {
    method public void revokePermission(java.lang.String, java.lang.String, android.os.UserHandle);
    method public void setApplicationEnabledSetting(java.lang.String, int, int);
    method public void setComponentEnabledSetting(android.content.ComponentName, int, int);
    method public boolean setDefaultBrowserPackageName(java.lang.String, int);
    method public void setInstallerPackageName(java.lang.String, java.lang.String);
    method public void verifyPendingInstall(int, int);
  }
+20 −0
Original line number Diff line number Diff line
@@ -1358,6 +1358,26 @@ final class ApplicationPackageManager extends PackageManager {
        }
    }

    @Override
    public String getDefaultBrowserPackageName(int userId) {
        try {
            return mPM.getDefaultBrowserPackageName(userId);
        } catch (RemoteException e) {
            // Should never happen!
            return null;
        }
    }

    @Override
    public boolean setDefaultBrowserPackageName(String packageName, int userId) {
        try {
            return mPM.setDefaultBrowserPackageName(packageName, userId);
        } catch (RemoteException e) {
            // Should never happen!
            return false;
        }
    }

    @Override
    public void setInstallerPackageName(String targetPackage,
            String installerPackageName) {
+3 −0
Original line number Diff line number Diff line
@@ -450,6 +450,9 @@ interface IPackageManager {
    List<IntentFilterVerificationInfo> getIntentFilterVerifications(String packageName);
    List<IntentFilter> getAllIntentFilters(String packageName);

    boolean setDefaultBrowserPackageName(String packageName, int userId);
    String getDefaultBrowserPackageName(int userId);

    VerifierDeviceIdentity getVerifierDeviceIdentity();

    boolean isFirstBoot();
+26 −0
Original line number Diff line number Diff line
@@ -3657,6 +3657,32 @@ public abstract class PackageManager {
     */
    public abstract List<IntentFilter> getAllIntentFilters(String packageName);

    /**
     * Get the default Browser package name for a specific user.
     *
     * @param userId The user id.
     *
     * @return the package name of the default Browser for the specified user. If the user id passed
     *         is -1 (all users) it will return a null value.
     *
     * @hide
     */
    public abstract String getDefaultBrowserPackageName(int userId);

    /**
     * Set the default Browser package name for a specific user.
     *
     * @param packageName The package name of the default Browser.
     * @param userId The user id.
     *
     * @return true if the default Browser for the specified user has been set,
     *         otherwise return false. If the user id passed is -1 (all users) this call will not
     *         do anything and just return false.
     *
     * @hide
     */
    public abstract boolean setDefaultBrowserPackageName(String packageName, int userId);

    /**
     * Change the installer associated with a given package.  There are limitations
     * on how the installer package can be changed; in particular:
Loading