Faster plugin updating from UI control
Send a broadcast back and forth to speed up the rate at which plugins
are enabled or disabled.
Also update make files to handle exclude tests better.
Test: Manual
Change-Id: Ic8f45c663c3a5e5fd4b3e9e2f79480e155845c14
diff --git a/packages/SystemUI/Android.mk b/packages/SystemUI/Android.mk
index ffddf02..d1e1060 100644
--- a/packages/SystemUI/Android.mk
+++ b/packages/SystemUI/Android.mk
@@ -54,6 +54,4 @@
include $(BUILD_PACKAGE)
-ifeq ($(EXCLUDE_SYSTEMUI_TESTS),)
- include $(call all-makefiles-under,$(LOCAL_PATH))
-endif
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/packages/SystemUI/plugin/Android.mk b/packages/SystemUI/plugin/Android.mk
index 86527db..5e6dcc0 100644
--- a/packages/SystemUI/plugin/Android.mk
+++ b/packages/SystemUI/plugin/Android.mk
@@ -27,3 +27,7 @@
LOCAL_JAR_EXCLUDE_FILES := none
include $(BUILD_STATIC_JAVA_LIBRARY)
+
+ifeq ($(EXCLUDE_SYSTEMUI_TESTS),)
+ include $(call all-makefiles-under,$(LOCAL_PATH))
+endif
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/PluginInstanceManager.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/PluginInstanceManager.java
index 75a5434..ca18f31 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/PluginInstanceManager.java
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/PluginInstanceManager.java
@@ -131,6 +131,10 @@
new ComponentName(info.mPackage, info.mClass),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
+ final String pkg = info.mPackage;
+ final Intent intent = new Intent(PluginManager.PLUGIN_CHANGED,
+ pkg != null ? Uri.fromParts("package", pkg, null) : null);
+ mContext.sendBroadcast(intent);
}
private class MainHandler extends Handler {
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/PluginManager.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/PluginManager.java
index 686b4d4..5ec94b6 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/PluginManager.java
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/PluginManager.java
@@ -36,6 +36,8 @@
*/
public class PluginManager extends BroadcastReceiver {
+ public static final String PLUGIN_CHANGED = "com.android.systemui.action.PLUGIN_CHANGED";
+
private static PluginManager sInstance;
private final HandlerThread mBackgroundThread;
@@ -105,6 +107,7 @@
IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
+ filter.addAction(PLUGIN_CHANGED);
filter.addDataScheme("package");
mContext.registerReceiver(this, filter);
filter = new IntentFilter(Intent.ACTION_USER_UNLOCKED);
diff --git a/packages/SystemUI/src/com/android/systemui/tuner/PluginFragment.java b/packages/SystemUI/src/com/android/systemui/tuner/PluginFragment.java
index 132a6dd..f6b8891 100644
--- a/packages/SystemUI/src/com/android/systemui/tuner/PluginFragment.java
+++ b/packages/SystemUI/src/com/android/systemui/tuner/PluginFragment.java
@@ -14,11 +14,14 @@
package com.android.systemui.tuner;
+import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
+import android.net.Uri;
import android.os.Bundle;
import android.support.v14.preference.PreferenceFragment;
import android.support.v14.preference.SwitchPreference;
@@ -27,6 +30,7 @@
import android.support.v7.preference.PreferenceViewHolder;
import android.view.View;
+import com.android.systemui.plugins.PluginManager;
import com.android.systemui.plugins.PluginPrefs;
import com.android.systemui.R;
@@ -41,7 +45,30 @@
private PluginPrefs mPluginPrefs;
@Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
+ filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
+ filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
+ filter.addAction(PluginManager.PLUGIN_CHANGED);
+ filter.addDataScheme("package");
+ getContext().registerReceiver(mReceiver, filter);
+ filter = new IntentFilter(Intent.ACTION_USER_UNLOCKED);
+ getContext().registerReceiver(mReceiver, filter);
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ getContext().unregisterReceiver(mReceiver);
+ }
+
+ @Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ loadPrefs();
+ }
+
+ private void loadPrefs() {
PreferenceScreen screen = getPreferenceManager().createPreferenceScreen(getContext());
screen.setOrderingAsAdded(false);
Context prefContext = getPreferenceManager().getContext();
@@ -64,6 +91,13 @@
setPreferenceScreen(screen);
}
+ private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ loadPrefs();
+ }
+ };
+
private static class PluginPreference extends SwitchPreference {
private final ComponentName mComponent;
private final boolean mHasSettings;
@@ -82,10 +116,17 @@
@Override
protected boolean persistBoolean(boolean value) {
- getContext().getPackageManager().setComponentEnabledSetting(mComponent,
- value ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
- : PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
+ PackageManager pm = getContext().getPackageManager();
+ final int desiredState = value ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
+ : PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
+ if (pm.getComponentEnabledSetting(mComponent) == desiredState) return true;
+ pm.setComponentEnabledSetting(mComponent,
+ desiredState,
PackageManager.DONT_KILL_APP);
+ final String pkg = mComponent.getPackageName();
+ final Intent intent = new Intent(PluginManager.PLUGIN_CHANGED,
+ pkg != null ? Uri.fromParts("package", pkg, null) : null);
+ getContext().sendBroadcast(intent);
return true;
}
diff --git a/packages/SystemUI/tests/Android.mk b/packages/SystemUI/tests/Android.mk
index 6038171..ecf174f 100644
--- a/packages/SystemUI/tests/Android.mk
+++ b/packages/SystemUI/tests/Android.mk
@@ -87,7 +87,9 @@
include frameworks/base/packages/SettingsLib/common.mk
-include $(BUILD_PACKAGE)
+ifeq ($(EXCLUDE_SYSTEMUI_TESTS),)
+ include $(BUILD_PACKAGE)
+endif
# Reset variables
local_java_files :=