Merge "Report a CrashWhilePluginActiveException only if plugin disabled."
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstanceManager.java b/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstanceManager.java
index a378610..b8997c2 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstanceManager.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstanceManager.java
@@ -135,8 +135,7 @@
ArrayList<PluginInfo> plugins = new ArrayList<PluginInfo>(mPluginHandler.mPlugins);
for (PluginInfo info : plugins) {
if (className.startsWith(info.mPackage)) {
- disable(info, PluginEnabler.DISABLED_FROM_EXPLICIT_CRASH);
- disableAny = true;
+ disableAny |= disable(info, PluginEnabler.DISABLED_FROM_EXPLICIT_CRASH);
}
}
return disableAny;
@@ -144,10 +143,11 @@
public boolean disableAll() {
ArrayList<PluginInfo> plugins = new ArrayList<PluginInfo>(mPluginHandler.mPlugins);
+ boolean disabledAny = false;
for (int i = 0; i < plugins.size(); i++) {
- disable(plugins.get(i), PluginEnabler.DISABLED_FROM_SYSTEM_CRASH);
+ disabledAny |= disable(plugins.get(i), PluginEnabler.DISABLED_FROM_SYSTEM_CRASH);
}
- return plugins.size() != 0;
+ return disabledAny;
}
private boolean isPluginWhitelisted(ComponentName pluginName) {
@@ -166,7 +166,7 @@
return false;
}
- private void disable(PluginInfo info, @PluginEnabler.DisableReason int reason) {
+ private boolean disable(PluginInfo info, @PluginEnabler.DisableReason int reason) {
// Live by the sword, die by the sword.
// Misbehaving plugins get disabled and won't come back until uninstall/reinstall.
@@ -176,10 +176,12 @@
// assuming one of them must be bad.
if (isPluginWhitelisted(pluginComponent)) {
// Don't disable whitelisted plugins as they are a part of the OS.
- return;
+ return false;
}
Log.w(TAG, "Disabling plugin " + pluginComponent.flattenToShortString());
mManager.getPluginEnabler().setDisabled(pluginComponent, reason);
+
+ return true;
}
public <T> boolean dependsOn(Plugin p, Class<T> cls) {