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

Commit f6e33b1b authored by Dan Sandler's avatar Dan Sandler
Browse files

Revert "Add plugin to swap out recents"

This reverts commit 0ea67d82.

Bug: 64345190
Change-Id: I353c064db7bfaf91e98b5fd0d3e7180381a1b2b8
Test: n/a
parent 09900421
Loading
Loading
Loading
Loading
+0 −92
Original line number Diff line number Diff line
/*
 * Copyright (C) 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
 * except in compliance with the License. You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the
 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */

package com.android.systemui.plugins;

import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.os.Bundle;

import com.android.systemui.plugins.annotations.ProvidesInterface;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

/**
 * A PluginActivity is an activity that replaces another full activity (e.g. RecentsActivity)
 * at runtime within the sysui process.
 */
@ProvidesInterface(version = PluginActivity.VERSION)
public abstract class PluginActivity extends Activity implements Plugin {

    public static final int VERSION = 1;

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

    private Context mSysuiContext;
    private boolean mSettingActionBar;

    @Override
    public final void onCreate(Context sysuiContext, Context pluginContext) {
        mSysuiContext = sysuiContext;
        super.attachBaseContext(pluginContext);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Theme theme = getClass().getDeclaredAnnotation(Theme.class);
        if (theme != null && theme.value() != 0) {
            setTheme(theme.value());
        }
        mSettingActionBar = true;
        getActionBar();
        mSettingActionBar = false;
    }

    @Override
    public Resources getResources() {
        return mSettingActionBar ? mSysuiContext.getResources() : super.getResources();
    }

    @Override
    protected void attachBaseContext(Context newBase) {
        mSysuiContext = newBase;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
    }

    public Context getSysuiContext() {
        return mSysuiContext;
    }

    public Context getPluginContext() {
        return getBaseContext();
    }

    /**
     * Since PluginActivities are declared as services instead of activities (since they
     * are plugins), they can't have a theme attached to them. Instead a PluginActivity
     * can annotate itself with @Theme to specify the resource of the style it wants
     * to be themed with.
     */
    @Retention(RetentionPolicy.RUNTIME)
    public @interface Theme {
        int value();
    }
}
+0 −5
Original line number Diff line number Diff line
@@ -21,11 +21,6 @@ public class PluginDependency {
    public static final int VERSION = 1;
    static DependencyProvider sProvider;

    /**
     * Allows a plugin to get a hold of static dependencies if they have declared dependence
     * on their interface. For one-shot plugins this will only work during onCreate and will
     * not work afterwards.
     */
    public static <T> T get(Plugin p, Class<T> cls) {
        return sProvider.get(p, cls);
    }
+0 −3
Original line number Diff line number Diff line
@@ -34,7 +34,6 @@ import com.android.systemui.fragments.FragmentService;
import com.android.systemui.keyguard.ScreenLifecycle;
import com.android.systemui.keyguard.WakefulnessLifecycle;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.PluginActivityManager;
import com.android.systemui.plugins.PluginDependencyProvider;
import com.android.systemui.plugins.PluginManager;
import com.android.systemui.plugins.PluginManagerImpl;
@@ -295,8 +294,6 @@ public class Dependency extends SystemUI {

        mProviders.put(UiOffloadThread.class, UiOffloadThread::new);

        mProviders.put(PluginActivityManager.class,
                () -> new PluginActivityManager(mContext, getDependency(PluginManager.class)));

        mProviders.put(PowerUI.WarningsUI.class, () -> new PowerNotificationWarnings(mContext));

+0 −8
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.systemui;

import android.app.Activity;
import android.app.ActivityThread;
import android.app.Application;
import android.content.BroadcastReceiver;
@@ -41,7 +40,6 @@ import com.android.systemui.pip.PipUI;
import com.android.systemui.plugins.GlobalActions;
import com.android.systemui.plugins.OverlayPlugin;
import com.android.systemui.plugins.Plugin;
import com.android.systemui.plugins.PluginActivityManager;
import com.android.systemui.plugins.PluginListener;
import com.android.systemui.plugins.PluginManager;
import com.android.systemui.power.PowerUI;
@@ -281,10 +279,4 @@ public class SystemUIApplication extends Application implements SysUiServiceProv
    public SystemUI[] getServices() {
        return mServices;
    }

    @Override
    public Activity instantiateActivity(ClassLoader cl, String className, Intent intent) {
        if (!mServicesStarted) return null;
        return Dependency.get(PluginActivityManager.class).instantiate(cl, className, intent);
    }
}
+0 −43
Original line number Diff line number Diff line
/*
 * Copyright (C) 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
 * except in compliance with the License. You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the
 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */

package com.android.systemui.plugins;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
import android.util.ArrayMap;

public class PluginActivityManager {

    private final Context mContext;
    private final PluginManager mPluginManager;
    private final ArrayMap<String, String> mActionLookup = new ArrayMap<>();

    public PluginActivityManager(Context context, PluginManager pluginManager) {
        mContext = context;
        mPluginManager = pluginManager;
    }

    public void addActivityPlugin(String className, String action) {
        mActionLookup.put(className, action);
    }

    public Activity instantiate(ClassLoader cl, String className, Intent intent) {
        String action = mActionLookup.get(className);
        if (TextUtils.isEmpty(action)) return null;
        return mPluginManager.getOneShotPlugin(action, PluginActivity.class);
    }
}
Loading