diff options
| author | 2015-11-13 17:08:39 +0000 | |
|---|---|---|
| committer | 2015-11-13 17:08:39 +0000 | |
| commit | 371df36b5c24bb7d6b6dbdb6b8aaf8b45ec208b1 (patch) | |
| tree | 7445a76adf9b4c56085526ce54127506c1aed771 | |
| parent | b6181565e5a96f9922c2c0ca7dd78a894a6ba224 (diff) | |
| parent | 3098cf2ea2d119a5630aa66e617f1f31de38cf17 (diff) | |
Merge "Trigger WebView relro creation when new provider package installed."
| -rw-r--r-- | services/core/java/com/android/server/webkit/WebViewUpdateService.java | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/webkit/WebViewUpdateService.java b/services/core/java/com/android/server/webkit/WebViewUpdateService.java index ac79b36f7005..97713fc2407a 100644 --- a/services/core/java/com/android/server/webkit/WebViewUpdateService.java +++ b/services/core/java/com/android/server/webkit/WebViewUpdateService.java @@ -54,6 +54,15 @@ public class WebViewUpdateService extends SystemService { @Override public void onReceive(Context context, Intent intent) { + // When a package is replaced we will receive two intents, one representing the + // removal of the old package and one representing the addition of the new + // package. We here ignore the intent representing the removed package to make + // sure we don't change WebView provider twice. + if (intent.getAction().equals(Intent.ACTION_PACKAGE_REMOVED) + && intent.getExtras().getBoolean(Intent.EXTRA_REPLACING)) { + return; + } + for (String packageName : WebViewFactory.getWebViewPackageNames()) { String webviewPackage = "package:" + packageName; @@ -73,7 +82,8 @@ public class WebViewUpdateService extends SystemService { } }; IntentFilter filter = new IntentFilter(); - filter.addAction(Intent.ACTION_PACKAGE_REPLACED); + filter.addAction(Intent.ACTION_PACKAGE_ADDED); + filter.addAction(Intent.ACTION_PACKAGE_REMOVED); filter.addDataScheme("package"); getContext().registerReceiver(mWebViewUpdatedReceiver, filter); |