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.plugins; 16 17 import android.content.Context; 18 import android.os.Looper; 19 import android.util.Log; 20 21 import com.android.systemui.Dependency; 22 import com.android.systemui.R; 23 import com.android.systemui.shared.plugins.PluginEnabler; 24 import com.android.systemui.shared.plugins.PluginInitializer; 25 import com.android.systemui.shared.plugins.PluginManagerImpl; 26 27 public class PluginInitializerImpl implements PluginInitializer { 28 29 /** 30 * True if WTFs should lead to crashes 31 */ 32 private static final boolean WTFS_SHOULD_CRASH = false; 33 private boolean mWtfsSet; 34 35 @Override getBgLooper()36 public Looper getBgLooper() { 37 return Dependency.get(Dependency.BG_LOOPER); 38 } 39 40 @Override onPluginManagerInit()41 public void onPluginManagerInit() { 42 // Plugin dependencies that don't have another good home can go here, but 43 // dependencies that have better places to init can happen elsewhere. 44 Dependency.get(PluginDependencyProvider.class) 45 .allowPluginDependency(ActivityStarter.class); 46 } 47 48 @Override getWhitelistedPlugins(Context context)49 public String[] getWhitelistedPlugins(Context context) { 50 return context.getResources().getStringArray(R.array.config_pluginWhitelist); 51 } 52 getPluginEnabler(Context context)53 public PluginEnabler getPluginEnabler(Context context) { 54 return new PluginEnablerImpl(context); 55 } 56 57 @Override handleWtfs()58 public void handleWtfs() { 59 if (WTFS_SHOULD_CRASH && !mWtfsSet) { 60 mWtfsSet = true; 61 Log.setWtfHandler(new Log.TerribleFailureHandler() { 62 @Override 63 public void onTerribleFailure(String tag, Log.TerribleFailure what, 64 boolean system) { 65 throw new PluginManagerImpl.CrashWhilePluginActiveException(what); 66 } 67 }); 68 } 69 } 70 } 71