Remove Dependency#get from qs.external.
Bug: 138786270 Test: manual Change-Id: I8d72f08ab5f7a23e9a1a414dead6e4db20cd2013
This commit is contained in:
@@ -19,7 +19,6 @@ import android.content.Context;
|
||||
import com.android.internal.logging.InstanceId;
|
||||
import com.android.internal.logging.UiEventLogger;
|
||||
import com.android.systemui.plugins.qs.QSTile;
|
||||
import com.android.systemui.qs.external.TileServices;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
@@ -35,7 +34,6 @@ public interface QSHost {
|
||||
Collection<QSTile> getTiles();
|
||||
void addCallback(Callback callback);
|
||||
void removeCallback(Callback callback);
|
||||
TileServices getTileServices();
|
||||
void removeTile(String tileSpec);
|
||||
void removeTiles(Collection<String> specs);
|
||||
void unmarkTileAsAutoAdded(String tileSpec);
|
||||
|
||||
@@ -24,7 +24,6 @@ import android.os.Looper;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.provider.Settings.Secure;
|
||||
import android.service.quicksettings.Tile;
|
||||
import android.text.TextUtils;
|
||||
import android.util.ArraySet;
|
||||
import android.util.Log;
|
||||
@@ -50,7 +49,6 @@ import com.android.systemui.qs.external.CustomTileStatePersister;
|
||||
import com.android.systemui.qs.external.TileLifecycleManager;
|
||||
import com.android.systemui.qs.external.TileServiceKey;
|
||||
import com.android.systemui.qs.external.TileServiceRequestController;
|
||||
import com.android.systemui.qs.external.TileServices;
|
||||
import com.android.systemui.qs.logging.QSLogger;
|
||||
import com.android.systemui.settings.UserTracker;
|
||||
import com.android.systemui.shared.plugins.PluginManager;
|
||||
@@ -89,7 +87,6 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
|
||||
private final Context mContext;
|
||||
private final LinkedHashMap<String, QSTile> mTiles = new LinkedHashMap<>();
|
||||
protected final ArrayList<String> mTileSpecs = new ArrayList<>();
|
||||
private final TileServices mServices;
|
||||
private final TunerService mTunerService;
|
||||
private final PluginManager mPluginManager;
|
||||
private final DumpManager mDumpManager;
|
||||
@@ -111,6 +108,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
|
||||
private SecureSettings mSecureSettings;
|
||||
|
||||
private final TileServiceRequestController mTileServiceRequestController;
|
||||
private TileLifecycleManager.Factory mTileLifeCycleManagerFactory;
|
||||
|
||||
@Inject
|
||||
public QSTileHost(Context context,
|
||||
@@ -129,7 +127,8 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
|
||||
UserTracker userTracker,
|
||||
SecureSettings secureSettings,
|
||||
CustomTileStatePersister customTileStatePersister,
|
||||
TileServiceRequestController.Builder tileServiceRequestControllerBuilder
|
||||
TileServiceRequestController.Builder tileServiceRequestControllerBuilder,
|
||||
TileLifecycleManager.Factory tileLifecycleManagerFactory
|
||||
) {
|
||||
mIconController = iconController;
|
||||
mContext = context;
|
||||
@@ -141,9 +140,9 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
|
||||
mUiEventLogger = uiEventLogger;
|
||||
mBroadcastDispatcher = broadcastDispatcher;
|
||||
mTileServiceRequestController = tileServiceRequestControllerBuilder.create(this);
|
||||
mTileLifeCycleManagerFactory = tileLifecycleManagerFactory;
|
||||
|
||||
mInstanceIdSequence = new InstanceIdSequence(MAX_QS_INSTANCE_ID);
|
||||
mServices = new TileServices(this, bgLooper, mBroadcastDispatcher, userTracker);
|
||||
mStatusBarOptional = statusBarOptional;
|
||||
|
||||
mQsFactories.add(defaultFactory);
|
||||
@@ -177,7 +176,6 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
|
||||
mTiles.values().forEach(tile -> tile.destroy());
|
||||
mAutoTiles.destroy();
|
||||
mTunerService.removeTunable(this);
|
||||
mServices.destroy();
|
||||
mPluginManager.removePluginListener(this);
|
||||
mDumpManager.unregisterDumpable(TAG);
|
||||
mTileServiceRequestController.destroy();
|
||||
@@ -257,11 +255,6 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
|
||||
return mCurrentUser;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileServices getTileServices() {
|
||||
return mServices;
|
||||
}
|
||||
|
||||
public int indexOf(String spec) {
|
||||
return mTileSpecs.indexOf(spec);
|
||||
}
|
||||
@@ -460,10 +453,8 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
|
||||
if (!newTiles.contains(tileSpec)) {
|
||||
ComponentName component = CustomTile.getComponentFromSpec(tileSpec);
|
||||
Intent intent = new Intent().setComponent(component);
|
||||
TileLifecycleManager lifecycleManager = new TileLifecycleManager(new Handler(),
|
||||
mContext, mServices, new Tile(), intent,
|
||||
new UserHandle(mCurrentUser),
|
||||
mBroadcastDispatcher);
|
||||
TileLifecycleManager lifecycleManager = mTileLifeCycleManagerFactory.create(
|
||||
intent, new UserHandle(mCurrentUser));
|
||||
lifecycleManager.onStopListening();
|
||||
lifecycleManager.onTileRemoved();
|
||||
mCustomTileStatePersister.removeState(new TileServiceKey(component, mCurrentUser));
|
||||
|
||||
@@ -28,6 +28,7 @@ import com.android.systemui.qs.AutoAddTracker;
|
||||
import com.android.systemui.qs.QSHost;
|
||||
import com.android.systemui.qs.QSTileHost;
|
||||
import com.android.systemui.qs.ReduceBrightColorsController;
|
||||
import com.android.systemui.qs.external.QSExternalModule;
|
||||
import com.android.systemui.statusbar.phone.AutoTileManager;
|
||||
import com.android.systemui.statusbar.phone.ManagedProfileController;
|
||||
import com.android.systemui.statusbar.policy.CastController;
|
||||
@@ -47,7 +48,7 @@ import dagger.Provides;
|
||||
* Module for QS dependencies
|
||||
*/
|
||||
@Module(subcomponents = {QSFragmentComponent.class},
|
||||
includes = {MediaModule.class, QSFlagsModule.class})
|
||||
includes = {MediaModule.class, QSExternalModule.class, QSFlagsModule.class})
|
||||
public interface QSModule {
|
||||
|
||||
@Provides
|
||||
|
||||
@@ -51,7 +51,6 @@ import androidx.annotation.WorkerThread;
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.logging.MetricsLogger;
|
||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.systemui.Dependency;
|
||||
import com.android.systemui.dagger.qualifiers.Background;
|
||||
import com.android.systemui.dagger.qualifiers.Main;
|
||||
import com.android.systemui.plugins.ActivityStarter;
|
||||
@@ -103,6 +102,7 @@ public class CustomTile extends QSTileImpl<State> implements TileChangeListener
|
||||
private final TileServiceKey mKey;
|
||||
|
||||
private final AtomicBoolean mInitialDefaultIconFetched = new AtomicBoolean(false);
|
||||
private final TileServices mTileServices;
|
||||
|
||||
private CustomTile(
|
||||
QSHost host,
|
||||
@@ -115,10 +115,12 @@ public class CustomTile extends QSTileImpl<State> implements TileChangeListener
|
||||
QSLogger qsLogger,
|
||||
String action,
|
||||
Context userContext,
|
||||
CustomTileStatePersister customTileStatePersister
|
||||
CustomTileStatePersister customTileStatePersister,
|
||||
TileServices tileServices
|
||||
) {
|
||||
super(host, backgroundLooper, mainHandler, falsingManager, metricsLogger,
|
||||
statusBarStateController, activityStarter, qsLogger);
|
||||
mTileServices = tileServices;
|
||||
mWindowManager = WindowManagerGlobal.getWindowManagerService();
|
||||
mComponent = ComponentName.unflattenFromString(action);
|
||||
mTile = new Tile();
|
||||
@@ -126,7 +128,7 @@ public class CustomTile extends QSTileImpl<State> implements TileChangeListener
|
||||
mUser = mUserContext.getUserId();
|
||||
mKey = new TileServiceKey(mComponent, mUser);
|
||||
|
||||
mServiceManager = host.getTileServices().getTileWrapper(this);
|
||||
mServiceManager = tileServices.getTileWrapper(this);
|
||||
mService = mServiceManager.getTileService();
|
||||
mCustomTileStatePersister = customTileStatePersister;
|
||||
}
|
||||
@@ -349,7 +351,7 @@ public class CustomTile extends QSTileImpl<State> implements TileChangeListener
|
||||
} catch (RemoteException e) {
|
||||
}
|
||||
}
|
||||
mHost.getTileServices().freeService(this, mServiceManager);
|
||||
mTileServices.freeService(this, mServiceManager);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -473,7 +475,7 @@ public class CustomTile extends QSTileImpl<State> implements TileChangeListener
|
||||
}
|
||||
|
||||
public void startUnlockAndRun() {
|
||||
Dependency.get(ActivityStarter.class).postQSRunnableDismissingKeyguard(() -> {
|
||||
mActivityStarter.postQSRunnableDismissingKeyguard(() -> {
|
||||
try {
|
||||
mService.onUnlockComplete();
|
||||
} catch (RemoteException e) {
|
||||
@@ -529,6 +531,7 @@ public class CustomTile extends QSTileImpl<State> implements TileChangeListener
|
||||
final ActivityStarter mActivityStarter;
|
||||
final QSLogger mQSLogger;
|
||||
final CustomTileStatePersister mCustomTileStatePersister;
|
||||
private TileServices mTileServices;
|
||||
|
||||
Context mUserContext;
|
||||
String mSpec = "";
|
||||
@@ -543,7 +546,8 @@ public class CustomTile extends QSTileImpl<State> implements TileChangeListener
|
||||
StatusBarStateController statusBarStateController,
|
||||
ActivityStarter activityStarter,
|
||||
QSLogger qsLogger,
|
||||
CustomTileStatePersister customTileStatePersister
|
||||
CustomTileStatePersister customTileStatePersister,
|
||||
TileServices tileServices
|
||||
) {
|
||||
mQSHostLazy = hostLazy;
|
||||
mBackgroundLooper = backgroundLooper;
|
||||
@@ -554,6 +558,7 @@ public class CustomTile extends QSTileImpl<State> implements TileChangeListener
|
||||
mActivityStarter = activityStarter;
|
||||
mQSLogger = qsLogger;
|
||||
mCustomTileStatePersister = customTileStatePersister;
|
||||
mTileServices = tileServices;
|
||||
}
|
||||
|
||||
Builder setSpec(@NonNull String spec) {
|
||||
@@ -583,7 +588,8 @@ public class CustomTile extends QSTileImpl<State> implements TileChangeListener
|
||||
mQSLogger,
|
||||
action,
|
||||
mUserContext,
|
||||
mCustomTileStatePersister
|
||||
mCustomTileStatePersister,
|
||||
mTileServices
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,8 @@ import android.content.pm.PackageManager;
|
||||
import android.content.pm.ServiceInfo;
|
||||
import android.os.RemoteException;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
// Adapter that wraps calls to PackageManager or IPackageManager for {@link TileLifecycleManager}.
|
||||
// TODO: This is very much an intermediate step to allow for PackageManager mocking and should be
|
||||
// abstracted into something more useful for other tests in systemui.
|
||||
@@ -37,6 +39,7 @@ public class PackageManagerAdapter {
|
||||
|
||||
// Uses the PackageManager for the provided context.
|
||||
// When necessary, uses the IPackagemanger in AppGlobals.
|
||||
@Inject
|
||||
public PackageManagerAdapter(Context context) {
|
||||
mPackageManager = context.getPackageManager();
|
||||
mIPackageManager = AppGlobals.getPackageManager();
|
||||
|
||||
27
packages/SystemUI/src/com/android/systemui/qs/external/QSExternalModule.kt
vendored
Normal file
27
packages/SystemUI/src/com/android/systemui/qs/external/QSExternalModule.kt
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Copyright (C) 2022 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.qs.external
|
||||
|
||||
import android.service.quicksettings.IQSService
|
||||
import dagger.Binds
|
||||
import dagger.Module
|
||||
|
||||
@Module
|
||||
interface QSExternalModule {
|
||||
@Binds
|
||||
fun bindsIQSService(impl: TileServices): IQSService
|
||||
}
|
||||
@@ -31,21 +31,24 @@ import android.os.RemoteException;
|
||||
import android.os.UserHandle;
|
||||
import android.service.quicksettings.IQSService;
|
||||
import android.service.quicksettings.IQSTileService;
|
||||
import android.service.quicksettings.Tile;
|
||||
import android.service.quicksettings.TileService;
|
||||
import android.util.ArraySet;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||
import com.android.systemui.dagger.qualifiers.Main;
|
||||
|
||||
import java.util.NoSuchElementException;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
import dagger.assisted.Assisted;
|
||||
import dagger.assisted.AssistedFactory;
|
||||
import dagger.assisted.AssistedInject;
|
||||
|
||||
/**
|
||||
* Manages the lifecycle of a TileService.
|
||||
* <p>
|
||||
@@ -102,16 +105,10 @@ public class TileLifecycleManager extends BroadcastReceiver implements
|
||||
// Return value from bindServiceAsUser, determines whether safe to call unbind.
|
||||
private boolean mIsBound;
|
||||
|
||||
public TileLifecycleManager(Handler handler, Context context, IQSService service, Tile tile,
|
||||
Intent intent, UserHandle user, BroadcastDispatcher broadcastDispatcher) {
|
||||
this(handler, context, service, tile, intent, user, new PackageManagerAdapter(context),
|
||||
broadcastDispatcher);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
TileLifecycleManager(Handler handler, Context context, IQSService service, Tile tile,
|
||||
Intent intent, UserHandle user, PackageManagerAdapter packageManagerAdapter,
|
||||
BroadcastDispatcher broadcastDispatcher) {
|
||||
@AssistedInject
|
||||
TileLifecycleManager(@Main Handler handler, Context context, IQSService service,
|
||||
PackageManagerAdapter packageManagerAdapter, BroadcastDispatcher broadcastDispatcher,
|
||||
@Assisted Intent intent, @Assisted UserHandle user) {
|
||||
mContext = context;
|
||||
mHandler = handler;
|
||||
mIntent = intent;
|
||||
@@ -123,6 +120,13 @@ public class TileLifecycleManager extends BroadcastReceiver implements
|
||||
if (DEBUG) Log.d(TAG, "Creating " + mIntent + " " + mUser);
|
||||
}
|
||||
|
||||
/** Injectable factory for TileLifecycleManager. */
|
||||
@AssistedFactory
|
||||
public interface Factory {
|
||||
/** */
|
||||
TileLifecycleManager create(Intent intent, UserHandle userHandle);
|
||||
}
|
||||
|
||||
public ComponentName getComponent() {
|
||||
return mIntent.getComponent();
|
||||
}
|
||||
|
||||
@@ -26,7 +26,6 @@ import android.net.Uri;
|
||||
import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
import android.service.quicksettings.IQSTileService;
|
||||
import android.service.quicksettings.Tile;
|
||||
import android.service.quicksettings.TileService;
|
||||
import android.util.Log;
|
||||
|
||||
@@ -73,10 +72,11 @@ public class TileServiceManager {
|
||||
private boolean mStarted = false;
|
||||
|
||||
TileServiceManager(TileServices tileServices, Handler handler, ComponentName component,
|
||||
Tile tile, BroadcastDispatcher broadcastDispatcher, UserTracker userTracker) {
|
||||
BroadcastDispatcher broadcastDispatcher, UserTracker userTracker) {
|
||||
this(tileServices, handler, userTracker, new TileLifecycleManager(handler,
|
||||
tileServices.getContext(), tileServices, tile, new Intent().setComponent(component),
|
||||
userTracker.getUserHandle(), broadcastDispatcher));
|
||||
tileServices.getContext(), tileServices,
|
||||
new PackageManagerAdapter(tileServices.getContext()), broadcastDispatcher,
|
||||
new Intent().setComponent(component), userTracker.getUserHandle()));
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
|
||||
@@ -38,8 +38,8 @@ import android.util.Log;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.internal.statusbar.StatusBarIcon;
|
||||
import com.android.systemui.Dependency;
|
||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||
import com.android.systemui.dagger.qualifiers.Main;
|
||||
import com.android.systemui.qs.QSTileHost;
|
||||
import com.android.systemui.settings.UserTracker;
|
||||
import com.android.systemui.statusbar.phone.StatusBarIconController;
|
||||
@@ -50,6 +50,8 @@ import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Objects;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/**
|
||||
* Runs the day-to-day operations of which tiles should be bound and when.
|
||||
*/
|
||||
@@ -65,14 +67,21 @@ public class TileServices extends IQSService.Stub {
|
||||
private final Handler mHandler;
|
||||
private final Handler mMainHandler;
|
||||
private final QSTileHost mHost;
|
||||
private final KeyguardStateController mKeyguardStateController;
|
||||
private final BroadcastDispatcher mBroadcastDispatcher;
|
||||
private final UserTracker mUserTracker;
|
||||
|
||||
private int mMaxBound = DEFAULT_MAX_BOUND;
|
||||
|
||||
public TileServices(QSTileHost host, Looper looper, BroadcastDispatcher broadcastDispatcher,
|
||||
UserTracker userTracker) {
|
||||
@Inject
|
||||
public TileServices(
|
||||
QSTileHost host,
|
||||
@Main Looper looper,
|
||||
BroadcastDispatcher broadcastDispatcher,
|
||||
UserTracker userTracker,
|
||||
KeyguardStateController keyguardStateController) {
|
||||
mHost = host;
|
||||
mKeyguardStateController = keyguardStateController;
|
||||
mContext = mHost.getContext();
|
||||
mBroadcastDispatcher = broadcastDispatcher;
|
||||
mHandler = new Handler(looper);
|
||||
@@ -96,8 +105,7 @@ public class TileServices extends IQSService.Stub {
|
||||
|
||||
public TileServiceManager getTileWrapper(CustomTile tile) {
|
||||
ComponentName component = tile.getComponent();
|
||||
TileServiceManager service = onCreateTileService(component, tile.getQsTile(),
|
||||
mBroadcastDispatcher);
|
||||
TileServiceManager service = onCreateTileService(component, mBroadcastDispatcher);
|
||||
synchronized (mServices) {
|
||||
mServices.put(tile, service);
|
||||
mTiles.put(component, tile);
|
||||
@@ -108,9 +116,9 @@ public class TileServices extends IQSService.Stub {
|
||||
return service;
|
||||
}
|
||||
|
||||
protected TileServiceManager onCreateTileService(ComponentName component, Tile tile,
|
||||
protected TileServiceManager onCreateTileService(ComponentName component,
|
||||
BroadcastDispatcher broadcastDispatcher) {
|
||||
return new TileServiceManager(this, mHandler, component, tile,
|
||||
return new TileServiceManager(this, mHandler, component,
|
||||
broadcastDispatcher, mUserTracker);
|
||||
}
|
||||
|
||||
@@ -321,16 +329,12 @@ public class TileServices extends IQSService.Stub {
|
||||
|
||||
@Override
|
||||
public boolean isLocked() {
|
||||
KeyguardStateController keyguardStateController =
|
||||
Dependency.get(KeyguardStateController.class);
|
||||
return keyguardStateController.isShowing();
|
||||
return mKeyguardStateController.isShowing();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSecure() {
|
||||
KeyguardStateController keyguardStateController =
|
||||
Dependency.get(KeyguardStateController.class);
|
||||
return keyguardStateController.isMethodSecure() && keyguardStateController.isShowing();
|
||||
return mKeyguardStateController.isMethodSecure() && mKeyguardStateController.isShowing();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
@@ -50,7 +50,7 @@ public class DumpTruck {
|
||||
private static final int BUFSIZ = 1024 * 1024; // 1MB
|
||||
|
||||
private final Context context;
|
||||
private GarbageMonitor mGarbageMonitor;
|
||||
private final GarbageMonitor mGarbageMonitor;
|
||||
private Uri hprofUri;
|
||||
private long rss;
|
||||
final StringBuilder body = new StringBuilder();
|
||||
|
||||
@@ -47,6 +47,7 @@ import com.android.systemui.plugins.FalsingManager;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.qs.dagger.QSFragmentComponent;
|
||||
import com.android.systemui.qs.external.CustomTileStatePersister;
|
||||
import com.android.systemui.qs.external.TileLifecycleManager;
|
||||
import com.android.systemui.qs.external.TileServiceRequestController;
|
||||
import com.android.systemui.qs.logging.QSLogger;
|
||||
import com.android.systemui.qs.tileimpl.QSFactoryImpl;
|
||||
@@ -136,6 +137,7 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
|
||||
QSFragment qs = (QSFragment) mFragment;
|
||||
mFragments.dispatchResume();
|
||||
processAllMessages();
|
||||
|
||||
QSTileHost host = new QSTileHost(mContext, mock(StatusBarIconController.class),
|
||||
mock(QSFactoryImpl.class), new Handler(), Looper.myLooper(),
|
||||
mock(PluginManager.class), mock(TunerService.class),
|
||||
@@ -143,7 +145,7 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
|
||||
mock(BroadcastDispatcher.class), Optional.of(mock(StatusBar.class)),
|
||||
mock(QSLogger.class), mock(UiEventLogger.class), mock(UserTracker.class),
|
||||
mock(SecureSettings.class), mock(CustomTileStatePersister.class),
|
||||
mTileServiceRequestControllerBuilder);
|
||||
mTileServiceRequestControllerBuilder, mock(TileLifecycleManager.Factory.class));
|
||||
qs.setHost(host);
|
||||
|
||||
qs.setListening(true);
|
||||
|
||||
@@ -34,6 +34,7 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.UserHandle;
|
||||
import android.testing.AndroidTestingRunner;
|
||||
import android.testing.TestableLooper;
|
||||
import android.testing.TestableLooper.RunWithLooper;
|
||||
@@ -50,13 +51,13 @@ import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||
import com.android.systemui.classifier.FalsingManagerFake;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.flags.FeatureFlags;
|
||||
import com.android.systemui.plugins.ActivityStarter;
|
||||
import com.android.systemui.plugins.qs.QSFactory;
|
||||
import com.android.systemui.plugins.qs.QSTile;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.qs.external.CustomTile;
|
||||
import com.android.systemui.qs.external.CustomTileStatePersister;
|
||||
import com.android.systemui.qs.external.TileLifecycleManager;
|
||||
import com.android.systemui.qs.external.TileServiceKey;
|
||||
import com.android.systemui.qs.external.TileServiceRequestController;
|
||||
import com.android.systemui.qs.logging.QSLogger;
|
||||
@@ -127,6 +128,10 @@ public class QSTileHostTest extends SysuiTestCase {
|
||||
private TileServiceRequestController.Builder mTileServiceRequestControllerBuilder;
|
||||
@Mock
|
||||
private TileServiceRequestController mTileServiceRequestController;
|
||||
@Mock
|
||||
private TileLifecycleManager.Factory mTileLifecycleManagerFactory;
|
||||
@Mock
|
||||
private TileLifecycleManager mTileLifecycleManager;
|
||||
|
||||
private Handler mHandler;
|
||||
private TestableLooper mLooper;
|
||||
@@ -139,6 +144,8 @@ public class QSTileHostTest extends SysuiTestCase {
|
||||
mHandler = new Handler(mLooper.getLooper());
|
||||
when(mTileServiceRequestControllerBuilder.create(any()))
|
||||
.thenReturn(mTileServiceRequestController);
|
||||
when(mTileLifecycleManagerFactory.create(any(Intent.class), any(UserHandle.class)))
|
||||
.thenReturn(mTileLifecycleManager);
|
||||
|
||||
mSecureSettings = new FakeSettings();
|
||||
mSecureSettings.putStringForUser(
|
||||
@@ -146,7 +153,8 @@ public class QSTileHostTest extends SysuiTestCase {
|
||||
mQSTileHost = new TestQSTileHost(mContext, mIconController, mDefaultFactory, mHandler,
|
||||
mLooper.getLooper(), mPluginManager, mTunerService, mAutoTiles, mDumpManager,
|
||||
mBroadcastDispatcher, mStatusBar, mQSLogger, mUiEventLogger, mUserTracker,
|
||||
mSecureSettings, mCustomTileStatePersister, mTileServiceRequestControllerBuilder);
|
||||
mSecureSettings, mCustomTileStatePersister, mTileServiceRequestControllerBuilder,
|
||||
mTileLifecycleManagerFactory);
|
||||
setUpTileFactory();
|
||||
}
|
||||
|
||||
@@ -432,11 +440,13 @@ public class QSTileHostTest extends SysuiTestCase {
|
||||
BroadcastDispatcher broadcastDispatcher, StatusBar statusBar, QSLogger qsLogger,
|
||||
UiEventLogger uiEventLogger, UserTracker userTracker,
|
||||
SecureSettings secureSettings, CustomTileStatePersister customTileStatePersister,
|
||||
TileServiceRequestController.Builder tileServiceRequestControllerBuilder) {
|
||||
TileServiceRequestController.Builder tileServiceRequestControllerBuilder,
|
||||
TileLifecycleManager.Factory tileLifecycleManagerFactory) {
|
||||
super(context, iconController, defaultFactory, mainHandler, bgLooper, pluginManager,
|
||||
tunerService, autoTiles, dumpManager, broadcastDispatcher,
|
||||
Optional.of(statusBar), qsLogger, uiEventLogger, userTracker, secureSettings,
|
||||
customTileStatePersister, tileServiceRequestControllerBuilder);
|
||||
customTileStatePersister, tileServiceRequestControllerBuilder,
|
||||
tileLifecycleManagerFactory);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -92,7 +92,6 @@ class CustomTileTest : SysuiTestCase() {
|
||||
|
||||
mContext.addMockSystemService("window", windowService)
|
||||
mContext.setMockPackageManager(packageManager)
|
||||
`when`(tileHost.tileServices).thenReturn(tileServices)
|
||||
`when`(tileHost.context).thenReturn(mContext)
|
||||
`when`(tileServices.getTileWrapper(any(CustomTile::class.java)))
|
||||
.thenReturn(tileServiceManager)
|
||||
@@ -113,7 +112,8 @@ class CustomTileTest : SysuiTestCase() {
|
||||
statusBarStateController,
|
||||
activityStarter,
|
||||
qsLogger,
|
||||
customTileStatePersister
|
||||
customTileStatePersister,
|
||||
tileServices
|
||||
)
|
||||
|
||||
customTile = CustomTile.create(customTileBuilder, TILE_SPEC, mContext)
|
||||
|
||||
@@ -43,7 +43,6 @@ import android.os.HandlerThread;
|
||||
import android.os.UserHandle;
|
||||
import android.service.quicksettings.IQSService;
|
||||
import android.service.quicksettings.IQSTileService;
|
||||
import android.service.quicksettings.Tile;
|
||||
import android.service.quicksettings.TileService;
|
||||
import android.test.suitebuilder.annotation.SmallTest;
|
||||
|
||||
@@ -96,11 +95,11 @@ public class TileLifecycleManagerTest extends SysuiTestCase {
|
||||
mThread.start();
|
||||
mHandler = Handler.createAsync(mThread.getLooper());
|
||||
mStateManager = new TileLifecycleManager(mHandler, mWrappedContext,
|
||||
Mockito.mock(IQSService.class), new Tile(),
|
||||
mTileServiceIntent,
|
||||
mUser,
|
||||
Mockito.mock(IQSService.class),
|
||||
mMockPackageManagerAdapter,
|
||||
mMockBroadcastDispatcher);
|
||||
mMockBroadcastDispatcher,
|
||||
mTileServiceIntent,
|
||||
mUser);
|
||||
}
|
||||
|
||||
@After
|
||||
|
||||
@@ -34,7 +34,6 @@ import android.content.IntentFilter;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.UserHandle;
|
||||
import android.service.quicksettings.Tile;
|
||||
import android.service.quicksettings.TileService;
|
||||
import android.test.suitebuilder.annotation.SmallTest;
|
||||
import android.testing.AndroidTestingRunner;
|
||||
@@ -54,6 +53,7 @@ import com.android.systemui.statusbar.phone.AutoTileManager;
|
||||
import com.android.systemui.statusbar.phone.StatusBar;
|
||||
import com.android.systemui.statusbar.phone.StatusBarIconController;
|
||||
import com.android.systemui.statusbar.policy.BluetoothController;
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||
import com.android.systemui.tuner.TunerService;
|
||||
import com.android.systemui.util.settings.SecureSettings;
|
||||
|
||||
@@ -104,6 +104,12 @@ public class TileServicesTest extends SysuiTestCase {
|
||||
private TileServiceRequestController.Builder mTileServiceRequestControllerBuilder;
|
||||
@Mock
|
||||
private TileServiceRequestController mTileServiceRequestController;
|
||||
@Mock
|
||||
private KeyguardStateController mKeyguardStateController;
|
||||
@Mock
|
||||
private TileLifecycleManager.Factory mTileLifecycleManagerFactory;
|
||||
@Mock
|
||||
private TileLifecycleManager mTileLifecycleManager;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
@@ -113,6 +119,8 @@ public class TileServicesTest extends SysuiTestCase {
|
||||
|
||||
when(mTileServiceRequestControllerBuilder.create(any()))
|
||||
.thenReturn(mTileServiceRequestController);
|
||||
when(mTileLifecycleManagerFactory.create(any(Intent.class), any(UserHandle.class)))
|
||||
.thenReturn(mTileLifecycleManager);
|
||||
|
||||
QSTileHost host = new QSTileHost(mContext,
|
||||
mStatusBarIconController,
|
||||
@@ -130,14 +138,16 @@ public class TileServicesTest extends SysuiTestCase {
|
||||
mUserTracker,
|
||||
mSecureSettings,
|
||||
mock(CustomTileStatePersister.class),
|
||||
mTileServiceRequestControllerBuilder);
|
||||
mTileServiceRequestControllerBuilder,
|
||||
mTileLifecycleManagerFactory);
|
||||
mTileService = new TestTileServices(host, Looper.getMainLooper(), mBroadcastDispatcher,
|
||||
mUserTracker);
|
||||
mUserTracker, mKeyguardStateController);
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {
|
||||
mTileService.getHost().destroy();
|
||||
mTileService.destroy();
|
||||
TestableLooper.get(this).processAllMessages();
|
||||
}
|
||||
|
||||
@@ -217,13 +227,14 @@ public class TileServicesTest extends SysuiTestCase {
|
||||
|
||||
private class TestTileServices extends TileServices {
|
||||
TestTileServices(QSTileHost host, Looper looper,
|
||||
BroadcastDispatcher broadcastDispatcher, UserTracker userTracker) {
|
||||
super(host, looper, broadcastDispatcher, userTracker);
|
||||
BroadcastDispatcher broadcastDispatcher, UserTracker userTracker,
|
||||
KeyguardStateController keyguardStateController) {
|
||||
super(host, looper, broadcastDispatcher, userTracker, keyguardStateController);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected TileServiceManager onCreateTileService(ComponentName component, Tile qsTile,
|
||||
BroadcastDispatcher broadcastDispatcher) {
|
||||
protected TileServiceManager onCreateTileService(
|
||||
ComponentName component, BroadcastDispatcher broadcastDispatcher) {
|
||||
TileServiceManager manager = mock(TileServiceManager.class);
|
||||
mManagers.add(manager);
|
||||
when(manager.isLifecycleStarted()).thenReturn(true);
|
||||
|
||||
Reference in New Issue
Block a user