Search in sources :

Example 26 with WebViewProviderInfo

use of android.webkit.WebViewProviderInfo in project android_frameworks_base by crdroidandroid.

the class WebViewUpdateServiceImpl method isFallbackPackage.

boolean isFallbackPackage(String packageName) {
    if (packageName == null || !mSystemInterface.isFallbackLogicEnabled())
        return false;
    WebViewProviderInfo[] webviewPackages = mSystemInterface.getWebViewPackages();
    WebViewProviderInfo fallbackProvider = getFallbackProvider(webviewPackages);
    return (fallbackProvider != null && packageName.equals(fallbackProvider.packageName));
}
Also used : WebViewProviderInfo(android.webkit.WebViewProviderInfo)

Example 27 with WebViewProviderInfo

use of android.webkit.WebViewProviderInfo in project android_frameworks_base by DirtyUnicorns.

the class WebViewUpdateServiceImpl method updateFallbackState.

private void updateFallbackState(WebViewProviderInfo[] webviewProviders, boolean isBoot) {
    // If there exists a valid and enabled non-fallback package - disable the fallback
    // package, otherwise, enable it.
    WebViewProviderInfo fallbackProvider = getFallbackProvider(webviewProviders);
    if (fallbackProvider == null)
        return;
    boolean existsValidNonFallbackProvider = existsValidNonFallbackProvider(webviewProviders);
    boolean isFallbackEnabled = false;
    try {
        isFallbackEnabled = isEnabledPackage(mSystemInterface.getPackageInfoForProvider(fallbackProvider));
    } catch (NameNotFoundException e) {
        // No fallback package installed -> early out.
        return;
    }
    if (existsValidNonFallbackProvider && // ignore the state of that user during boot.
    (isFallbackEnabled || isBoot)) {
        mSystemInterface.uninstallAndDisablePackageForAllUsers(mContext, fallbackProvider.packageName);
    } else if (!existsValidNonFallbackProvider && // ignore the state of that user during boot.
    (!isFallbackEnabled || isBoot)) {
        // Enable the fallback package for all users.
        mSystemInterface.enablePackageForAllUsers(mContext, fallbackProvider.packageName, true);
    }
}
Also used : NameNotFoundException(android.content.pm.PackageManager.NameNotFoundException) WebViewProviderInfo(android.webkit.WebViewProviderInfo)

Example 28 with WebViewProviderInfo

use of android.webkit.WebViewProviderInfo in project platform_frameworks_base by android.

the class WebViewUpdateServiceImpl method updateFallbackState.

private void updateFallbackState(WebViewProviderInfo[] webviewProviders, boolean isBoot) {
    // If there exists a valid and enabled non-fallback package - disable the fallback
    // package, otherwise, enable it.
    WebViewProviderInfo fallbackProvider = getFallbackProvider(webviewProviders);
    if (fallbackProvider == null)
        return;
    boolean existsValidNonFallbackProvider = existsValidNonFallbackProvider(webviewProviders);
    boolean isFallbackEnabled = false;
    try {
        isFallbackEnabled = isEnabledPackage(mSystemInterface.getPackageInfoForProvider(fallbackProvider));
    } catch (NameNotFoundException e) {
        // No fallback package installed -> early out.
        return;
    }
    if (existsValidNonFallbackProvider && // ignore the state of that user during boot.
    (isFallbackEnabled || isBoot)) {
        mSystemInterface.uninstallAndDisablePackageForAllUsers(mContext, fallbackProvider.packageName);
    } else if (!existsValidNonFallbackProvider && // ignore the state of that user during boot.
    (!isFallbackEnabled || isBoot)) {
        // Enable the fallback package for all users.
        mSystemInterface.enablePackageForAllUsers(mContext, fallbackProvider.packageName, true);
    }
}
Also used : NameNotFoundException(android.content.pm.PackageManager.NameNotFoundException) WebViewProviderInfo(android.webkit.WebViewProviderInfo)

Example 29 with WebViewProviderInfo

use of android.webkit.WebViewProviderInfo in project platform_frameworks_base by android.

the class WebViewUpdateServiceImpl method updateFallbackStateOnPackageChange.

/**
     * Handle the enabled-state of our fallback package, i.e. if there exists some non-fallback
     * package that is valid (and available by default) then disable the fallback package,
     * otherwise, enable the fallback package.
     */
private void updateFallbackStateOnPackageChange(String changedPackage, int changedState) {
    if (!mSystemInterface.isFallbackLogicEnabled())
        return;
    WebViewProviderInfo[] webviewProviders = mSystemInterface.getWebViewPackages();
    // A package was changed / updated / downgraded, early out if it is not one of the
    // webview packages that are available by default.
    boolean changedPackageAvailableByDefault = false;
    for (WebViewProviderInfo provider : webviewProviders) {
        if (provider.packageName.equals(changedPackage)) {
            if (provider.availableByDefault) {
                changedPackageAvailableByDefault = true;
            }
            break;
        }
    }
    if (!changedPackageAvailableByDefault)
        return;
    updateFallbackState(webviewProviders, false);
}
Also used : WebViewProviderInfo(android.webkit.WebViewProviderInfo)

Example 30 with WebViewProviderInfo

use of android.webkit.WebViewProviderInfo in project platform_frameworks_base by android.

the class WebViewUpdateServiceImpl method handleNewUser.

/**
     * Called when a new user has been added to update the state of its fallback package.
     */
void handleNewUser(int userId) {
    if (!mSystemInterface.isFallbackLogicEnabled())
        return;
    WebViewProviderInfo[] webviewProviders = mSystemInterface.getWebViewPackages();
    WebViewProviderInfo fallbackProvider = getFallbackProvider(webviewProviders);
    if (fallbackProvider == null)
        return;
    mSystemInterface.enablePackageForUser(fallbackProvider.packageName, !existsValidNonFallbackProvider(webviewProviders), userId);
}
Also used : WebViewProviderInfo(android.webkit.WebViewProviderInfo)

Aggregations

WebViewProviderInfo (android.webkit.WebViewProviderInfo)61 WebViewProviderResponse (android.webkit.WebViewProviderResponse)28 MediumTest (android.test.suitebuilder.annotation.MediumTest)8 Test (org.junit.Test)8 BroadcastReceiver (android.content.BroadcastReceiver)4 Context (android.content.Context)4 Intent (android.content.Intent)4 IntentFilter (android.content.IntentFilter)4 NameNotFoundException (android.content.pm.PackageManager.NameNotFoundException)4 Signature (android.content.pm.Signature)4 CountDownLatch (java.util.concurrent.CountDownLatch)4 DialogInterface (android.content.DialogInterface)1 OnClickListener (android.content.DialogInterface.OnClickListener)1 RemoteException (android.os.RemoteException)1 ArrayList (java.util.ArrayList)1