1 /*
2  * Copyright (C) 2018 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
5  * except in compliance with the License. You may obtain a copy of the License at
6  *
7  *      http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software distributed under the
10  * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
11  * KIND, either express or implied. See the License for the specific language governing
12  * permissions and limitations under the License.
13  */
14 
15 package com.android.systemui.shared.plugins;
16 
17 import android.annotation.IntDef;
18 import android.content.ComponentName;
19 
20 /**
21  * Enables and disables plugins.
22  */
23 public interface PluginEnabler {
24 
25     int ENABLED = 0;
26     int DISABLED_MANUALLY = 1;
27     int DISABLED_INVALID_VERSION = 1;
28     int DISABLED_FROM_EXPLICIT_CRASH = 2;
29     int DISABLED_FROM_SYSTEM_CRASH = 3;
30 
31     @IntDef({ENABLED, DISABLED_MANUALLY, DISABLED_INVALID_VERSION, DISABLED_FROM_EXPLICIT_CRASH,
32             DISABLED_FROM_SYSTEM_CRASH})
33     @interface DisableReason {
34     }
35 
36     /** Enables plugin via the PackageManager. */
setEnabled(ComponentName component)37     void setEnabled(ComponentName component);
38 
39     /** Disables a plugin via the PackageManager and records the reason for disabling. */
setDisabled(ComponentName component, @DisableReason int reason)40     void setDisabled(ComponentName component, @DisableReason int reason);
41 
42     /** Returns true if the plugin is enabled in the PackageManager. */
isEnabled(ComponentName component)43     boolean isEnabled(ComponentName component);
44 
45     /**
46      * Returns the reason that a plugin is disabled, (if it is).
47      *
48      * It should return {@link #ENABLED} if the plugin is turned on.
49      * It should return {@link #DISABLED_MANUALLY} if the plugin is off but the reason is unknown.
50      */
51     @DisableReason
getDisableReason(ComponentName componentName)52     int getDisableReason(ComponentName componentName);
53 }
54