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

Commit 4f70b9cf authored by Jason Monk's avatar Jason Monk
Browse files

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
parent 27649153
Loading
Loading
Loading
Loading
+1 −3
Original line number Original line Diff line number Diff line
@@ -54,6 +54,4 @@ include frameworks/base/packages/SettingsLib/common.mk


include $(BUILD_PACKAGE)
include $(BUILD_PACKAGE)


ifeq ($(EXCLUDE_SYSTEMUI_TESTS),)
include $(call all-makefiles-under,$(LOCAL_PATH))
include $(call all-makefiles-under,$(LOCAL_PATH))
endif
+4 −0
Original line number Original line Diff line number Diff line
@@ -27,3 +27,7 @@ LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_JAR_EXCLUDE_FILES := none
LOCAL_JAR_EXCLUDE_FILES := none


include $(BUILD_STATIC_JAVA_LIBRARY)
include $(BUILD_STATIC_JAVA_LIBRARY)

ifeq ($(EXCLUDE_SYSTEMUI_TESTS),)
    include $(call all-makefiles-under,$(LOCAL_PATH))
endif
+4 −0
Original line number Original line Diff line number Diff line
@@ -131,6 +131,10 @@ public class PluginInstanceManager<T extends Plugin> {
                new ComponentName(info.mPackage, info.mClass),
                new ComponentName(info.mPackage, info.mClass),
                PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                PackageManager.DONT_KILL_APP);
                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 {
    private class MainHandler extends Handler {
+3 −0
Original line number Original line Diff line number Diff line
@@ -36,6 +36,8 @@ import java.util.Map;
 */
 */
public class PluginManager extends BroadcastReceiver {
public class PluginManager extends BroadcastReceiver {


    public static final String PLUGIN_CHANGED = "com.android.systemui.action.PLUGIN_CHANGED";

    private static PluginManager sInstance;
    private static PluginManager sInstance;


    private final HandlerThread mBackgroundThread;
    private final HandlerThread mBackgroundThread;
@@ -105,6 +107,7 @@ public class PluginManager extends BroadcastReceiver {
        IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
        IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
        filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
        filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
        filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
        filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
        filter.addAction(PLUGIN_CHANGED);
        filter.addDataScheme("package");
        filter.addDataScheme("package");
        mContext.registerReceiver(this, filter);
        mContext.registerReceiver(this, filter);
        filter = new IntentFilter(Intent.ACTION_USER_UNLOCKED);
        filter = new IntentFilter(Intent.ACTION_USER_UNLOCKED);
+44 −3
Original line number Original line Diff line number Diff line
@@ -14,11 +14,14 @@


package com.android.systemui.tuner;
package com.android.systemui.tuner;


import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ComponentName;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.os.Bundle;
import android.os.Bundle;
import android.support.v14.preference.PreferenceFragment;
import android.support.v14.preference.PreferenceFragment;
import android.support.v14.preference.SwitchPreference;
import android.support.v14.preference.SwitchPreference;
@@ -27,6 +30,7 @@ import android.support.v7.preference.PreferenceScreen;
import android.support.v7.preference.PreferenceViewHolder;
import android.support.v7.preference.PreferenceViewHolder;
import android.view.View;
import android.view.View;


import com.android.systemui.plugins.PluginManager;
import com.android.systemui.plugins.PluginPrefs;
import com.android.systemui.plugins.PluginPrefs;
import com.android.systemui.R;
import com.android.systemui.R;


@@ -40,8 +44,31 @@ public class PluginFragment extends PreferenceFragment {


    private PluginPrefs mPluginPrefs;
    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
    @Override
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
        loadPrefs();
    }

    private void loadPrefs() {
        PreferenceScreen screen = getPreferenceManager().createPreferenceScreen(getContext());
        PreferenceScreen screen = getPreferenceManager().createPreferenceScreen(getContext());
        screen.setOrderingAsAdded(false);
        screen.setOrderingAsAdded(false);
        Context prefContext = getPreferenceManager().getContext();
        Context prefContext = getPreferenceManager().getContext();
@@ -64,6 +91,13 @@ public class PluginFragment extends PreferenceFragment {
        setPreferenceScreen(screen);
        setPreferenceScreen(screen);
    }
    }


    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            loadPrefs();
        }
    };

    private static class PluginPreference extends SwitchPreference {
    private static class PluginPreference extends SwitchPreference {
        private final ComponentName mComponent;
        private final ComponentName mComponent;
        private final boolean mHasSettings;
        private final boolean mHasSettings;
@@ -82,10 +116,17 @@ public class PluginFragment extends PreferenceFragment {


        @Override
        @Override
        protected boolean persistBoolean(boolean value) {
        protected boolean persistBoolean(boolean value) {
            getContext().getPackageManager().setComponentEnabledSetting(mComponent,
            PackageManager pm = getContext().getPackageManager();
                    value ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
            final int desiredState = value ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
                            : PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                    : PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
            if (pm.getComponentEnabledSetting(mComponent) == desiredState) return true;
            pm.setComponentEnabledSetting(mComponent,
                    desiredState,
                    PackageManager.DONT_KILL_APP);
                    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;
            return true;
        }
        }


Loading