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

Commit c0bc9938 authored by Gustav Sennton's avatar Gustav Sennton
Browse files

Ensure at least one default-available webview package is a non-fallback

Parts of the WebViewUpdateService code assume that there exists at
least one webview package which is available by default and is not a
fallback package. With this CL we enforce this assumption by crashing
when parsing the webview packages config file if it doesn't hold.

Bug: 28014401
Change-Id: Ib7de1f596e31bae65542a6883a9f3af54337bf1b
parent 557c716a
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -68,6 +68,7 @@ public class SystemImpl implements SystemInterface {
    public WebViewProviderInfo[] getWebViewPackages() {
        int numFallbackPackages = 0;
        int numAvailableByDefaultPackages = 0;
        int numAvByDefaultAndNotFallback = 0;
        XmlResourceParser parser = null;
        List<WebViewProviderInfo> webViewProviders = new ArrayList<WebViewProviderInfo>();
        try {
@@ -111,6 +112,9 @@ public class SystemImpl implements SystemInterface {
                    }
                    if (currentProvider.availableByDefault) {
                        numAvailableByDefaultPackages++;
                        if (!currentProvider.isFallback) {
                            numAvByDefaultAndNotFallback++;
                        }
                    }
                    webViewProviders.add(currentProvider);
                }
@@ -127,6 +131,10 @@ public class SystemImpl implements SystemInterface {
            throw new AndroidRuntimeException("There must be at least one WebView package "
                    + "that is available by default");
        }
        if (numAvByDefaultAndNotFallback == 0) {
            throw new AndroidRuntimeException("There must be at least one WebView package "
                    + "that is available by default and not a fallback");
        }
        return webViewProviders.toArray(new WebViewProviderInfo[webViewProviders.size()]);
    }