From c0bc993801ae1296c8338b5fd971743309fde924 Mon Sep 17 00:00:00 2001 From: Gustav Sennton Date: Wed, 13 Apr 2016 16:43:44 +0100 Subject: [PATCH] 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 --- .../core/java/com/android/server/webkit/SystemImpl.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/services/core/java/com/android/server/webkit/SystemImpl.java b/services/core/java/com/android/server/webkit/SystemImpl.java index a5d68dabbdeb8..876bb20d25736 100644 --- a/services/core/java/com/android/server/webkit/SystemImpl.java +++ b/services/core/java/com/android/server/webkit/SystemImpl.java @@ -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 webViewProviders = new ArrayList(); 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()]); }