• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 = 2;
28     int DISABLED_FROM_EXPLICIT_CRASH = 3;
29     int DISABLED_FROM_SYSTEM_CRASH = 4;
30     int DISABLED_UNKNOWN = 100;
31 
32     @IntDef({ENABLED, DISABLED_MANUALLY, DISABLED_INVALID_VERSION, DISABLED_FROM_EXPLICIT_CRASH,
33             DISABLED_FROM_SYSTEM_CRASH, DISABLED_UNKNOWN})
34     @interface DisableReason {
35     }
36 
37     /** Enables plugin via the PackageManager. */
setEnabled(ComponentName component)38     void setEnabled(ComponentName component);
39 
40     /** Disables a plugin via the PackageManager and records the reason for disabling. */
setDisabled(ComponentName component, @DisableReason int reason)41     void setDisabled(ComponentName component, @DisableReason int reason);
42 
43     /** Returns true if the plugin is enabled in the PackageManager. */
isEnabled(ComponentName component)44     boolean isEnabled(ComponentName component);
45 
46     /**
47      * Returns the reason that a plugin is disabled, (if it is).
48      *
49      * It should return {@link #ENABLED} if the plugin is turned on.
50      * It should return {@link #DISABLED_MANUALLY} if the plugin is off but the reason is unknown.
51      */
52     @DisableReason
getDisableReason(ComponentName componentName)53     int getDisableReason(ComponentName componentName);
54 }
55