Start removing Dependency.get(UiOffloadThread.class)
This actually begins the process of deprecation and removing UiOffloadThread in favor of using Executors directly. This CL hits the easiest spots in the code. There are a few more remaining calls that should be in their own independent CLs. Bug: 146567476 Test: atest SystemUITests Change-Id: I2542cc61653f330a1931b15a57e3b7c77d18e2e6
This commit is contained in:
@@ -59,7 +59,6 @@ import com.android.systemui.BatteryMeterView;
|
||||
import com.android.systemui.Dependency;
|
||||
import com.android.systemui.Prefs;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.UiOffloadThread;
|
||||
import com.android.systemui.assist.AssistManager;
|
||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||
import com.android.systemui.bubbles.BubbleController;
|
||||
@@ -68,6 +67,7 @@ import com.android.systemui.car.CarDeviceProvisionedListener;
|
||||
import com.android.systemui.car.CarServiceProvider;
|
||||
import com.android.systemui.classifier.FalsingLog;
|
||||
import com.android.systemui.colorextraction.SysuiColorExtractor;
|
||||
import com.android.systemui.dagger.qualifiers.UiBackground;
|
||||
import com.android.systemui.fragments.FragmentHostManager;
|
||||
import com.android.systemui.keyguard.DismissCallbackRegistry;
|
||||
import com.android.systemui.keyguard.KeyguardViewMediator;
|
||||
@@ -141,6 +141,7 @@ import java.io.FileDescriptor;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Provider;
|
||||
@@ -273,7 +274,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
||||
NotificationAlertingManager notificationAlertingManager,
|
||||
DisplayMetrics displayMetrics,
|
||||
MetricsLogger metricsLogger,
|
||||
UiOffloadThread uiOffloadThread,
|
||||
@UiBackground Executor uiBgExecutor,
|
||||
NotificationMediaManager notificationMediaManager,
|
||||
NotificationLockscreenUserManager lockScreenUserManager,
|
||||
NotificationRemoteInputManager remoteInputManager,
|
||||
@@ -353,7 +354,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
||||
notificationAlertingManager,
|
||||
displayMetrics,
|
||||
metricsLogger,
|
||||
uiOffloadThread,
|
||||
uiBgExecutor,
|
||||
notificationMediaManager,
|
||||
lockScreenUserManager,
|
||||
remoteInputManager,
|
||||
|
||||
@@ -25,12 +25,12 @@ import android.util.DisplayMetrics;
|
||||
import com.android.internal.logging.MetricsLogger;
|
||||
import com.android.keyguard.KeyguardUpdateMonitor;
|
||||
import com.android.keyguard.ViewMediatorCallback;
|
||||
import com.android.systemui.UiOffloadThread;
|
||||
import com.android.systemui.assist.AssistManager;
|
||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||
import com.android.systemui.bubbles.BubbleController;
|
||||
import com.android.systemui.car.CarServiceProvider;
|
||||
import com.android.systemui.colorextraction.SysuiColorExtractor;
|
||||
import com.android.systemui.dagger.qualifiers.UiBackground;
|
||||
import com.android.systemui.keyguard.DismissCallbackRegistry;
|
||||
import com.android.systemui.keyguard.KeyguardViewMediator;
|
||||
import com.android.systemui.keyguard.ScreenLifecycle;
|
||||
@@ -96,6 +96,7 @@ import com.android.systemui.statusbar.policy.UserSwitcherController;
|
||||
import com.android.systemui.volume.VolumeComponent;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Provider;
|
||||
@@ -143,7 +144,7 @@ public class CarStatusBarModule {
|
||||
NotificationAlertingManager notificationAlertingManager,
|
||||
DisplayMetrics displayMetrics,
|
||||
MetricsLogger metricsLogger,
|
||||
UiOffloadThread uiOffloadThread,
|
||||
@UiBackground Executor uiBgExecutor,
|
||||
NotificationMediaManager notificationMediaManager,
|
||||
NotificationLockscreenUserManager lockScreenUserManager,
|
||||
NotificationRemoteInputManager remoteInputManager,
|
||||
@@ -222,7 +223,7 @@ public class CarStatusBarModule {
|
||||
notificationAlertingManager,
|
||||
displayMetrics,
|
||||
metricsLogger,
|
||||
uiOffloadThread,
|
||||
uiBgExecutor,
|
||||
notificationMediaManager,
|
||||
lockScreenUserManager,
|
||||
remoteInputManager,
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
* 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
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui;
|
||||
@@ -36,7 +36,7 @@ public class UiOffloadThread {
|
||||
public UiOffloadThread() {
|
||||
}
|
||||
|
||||
public Future<?> submit(Runnable runnable) {
|
||||
public Future<?> execute(Runnable runnable) {
|
||||
return mExecutorService.submit(runnable);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,8 +37,8 @@ import com.android.internal.logging.MetricsLogger;
|
||||
import com.android.keyguard.KeyguardUpdateMonitor;
|
||||
import com.android.keyguard.KeyguardUpdateMonitorCallback;
|
||||
import com.android.systemui.Dependency;
|
||||
import com.android.systemui.UiOffloadThread;
|
||||
import com.android.systemui.analytics.DataCollector;
|
||||
import com.android.systemui.dagger.qualifiers.UiBackground;
|
||||
import com.android.systemui.plugins.FalsingManager;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener;
|
||||
@@ -46,6 +46,7 @@ import com.android.systemui.statusbar.StatusBarState;
|
||||
import com.android.systemui.util.sensors.AsyncSensorManager;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
/**
|
||||
* When the phone is locked, listens to touch, sensor and phone events and sends them to
|
||||
@@ -77,7 +78,7 @@ public class FalsingManagerImpl implements FalsingManager {
|
||||
private final DataCollector mDataCollector;
|
||||
private final HumanInteractionClassifier mHumanInteractionClassifier;
|
||||
private final AccessibilityManager mAccessibilityManager;
|
||||
private final UiOffloadThread mUiOffloadThread;
|
||||
private final Executor mUiBgExecutor;
|
||||
|
||||
private boolean mEnforceBouncer = false;
|
||||
private boolean mBouncerOn = false;
|
||||
@@ -137,13 +138,13 @@ public class FalsingManagerImpl implements FalsingManager {
|
||||
}
|
||||
};
|
||||
|
||||
FalsingManagerImpl(Context context) {
|
||||
FalsingManagerImpl(Context context, @UiBackground Executor uiBgExecutor) {
|
||||
mContext = context;
|
||||
mSensorManager = Dependency.get(AsyncSensorManager.class);
|
||||
mAccessibilityManager = context.getSystemService(AccessibilityManager.class);
|
||||
mDataCollector = DataCollector.getInstance(mContext);
|
||||
mHumanInteractionClassifier = HumanInteractionClassifier.getInstance(mContext);
|
||||
mUiOffloadThread = Dependency.get(UiOffloadThread.class);
|
||||
mUiBgExecutor = uiBgExecutor;
|
||||
mScreenOn = context.getSystemService(PowerManager.class).isInteractive();
|
||||
mMetricsLogger = new MetricsLogger();
|
||||
|
||||
@@ -196,7 +197,7 @@ public class FalsingManagerImpl implements FalsingManager {
|
||||
}
|
||||
|
||||
// This can be expensive, and doesn't need to happen on the main thread.
|
||||
mUiOffloadThread.submit(() -> {
|
||||
mUiBgExecutor.execute(() -> {
|
||||
mSensorManager.unregisterListener(mSensorEventListener);
|
||||
});
|
||||
}
|
||||
@@ -237,7 +238,7 @@ public class FalsingManagerImpl implements FalsingManager {
|
||||
if (s != null) {
|
||||
|
||||
// This can be expensive, and doesn't need to happen on the main thread.
|
||||
mUiOffloadThread.submit(() -> {
|
||||
mUiBgExecutor.execute(() -> {
|
||||
mSensorManager.registerListener(
|
||||
mSensorEventListener, s, SensorManager.SENSOR_DELAY_GAME);
|
||||
});
|
||||
|
||||
@@ -31,6 +31,7 @@ import com.android.systemui.Dependency;
|
||||
import com.android.systemui.classifier.brightline.BrightLineFalsingManager;
|
||||
import com.android.systemui.classifier.brightline.FalsingDataProvider;
|
||||
import com.android.systemui.dagger.qualifiers.Main;
|
||||
import com.android.systemui.dagger.qualifiers.UiBackground;
|
||||
import com.android.systemui.plugins.FalsingManager;
|
||||
import com.android.systemui.plugins.FalsingPlugin;
|
||||
import com.android.systemui.plugins.PluginListener;
|
||||
@@ -39,6 +40,7 @@ import com.android.systemui.util.DeviceConfigProxy;
|
||||
import com.android.systemui.util.sensors.ProximitySensor;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
@@ -58,13 +60,16 @@ public class FalsingManagerProxy implements FalsingManager {
|
||||
private DeviceConfig.OnPropertiesChangedListener mDeviceConfigListener;
|
||||
private final DeviceConfigProxy mDeviceConfig;
|
||||
private boolean mBrightlineEnabled;
|
||||
private Executor mUiBgExecutor;
|
||||
|
||||
@Inject
|
||||
FalsingManagerProxy(Context context, PluginManager pluginManager,
|
||||
@Main Handler handler,
|
||||
ProximitySensor proximitySensor,
|
||||
DeviceConfigProxy deviceConfig) {
|
||||
DeviceConfigProxy deviceConfig,
|
||||
@UiBackground Executor uiBgExecutor) {
|
||||
mProximitySensor = proximitySensor;
|
||||
mUiBgExecutor = uiBgExecutor;
|
||||
mProximitySensor.setTag(PROXIMITY_SENSOR_TAG);
|
||||
mProximitySensor.setSensorDelay(SensorManager.SENSOR_DELAY_GAME);
|
||||
mDeviceConfig = deviceConfig;
|
||||
@@ -87,7 +92,7 @@ public class FalsingManagerProxy implements FalsingManager {
|
||||
}
|
||||
|
||||
public void onPluginDisconnected(FalsingPlugin plugin) {
|
||||
mInternalFalsingManager = new FalsingManagerImpl(context);
|
||||
mInternalFalsingManager = new FalsingManagerImpl(context, mUiBgExecutor);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -117,7 +122,7 @@ public class FalsingManagerProxy implements FalsingManager {
|
||||
mInternalFalsingManager.cleanup();
|
||||
}
|
||||
if (!brightlineEnabled) {
|
||||
mInternalFalsingManager = new FalsingManagerImpl(context);
|
||||
mInternalFalsingManager = new FalsingManagerImpl(context, mUiBgExecutor);
|
||||
} else {
|
||||
mInternalFalsingManager = new BrightLineFalsingManager(
|
||||
new FalsingDataProvider(context.getResources().getDisplayMetrics()),
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright (C) 2019 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.dagger.qualifiers;
|
||||
|
||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.Retention;
|
||||
|
||||
import javax.inject.Qualifier;
|
||||
|
||||
|
||||
/**
|
||||
* An annotation for injecting instances related to UI operations off the main-thread.
|
||||
*/
|
||||
@Qualifier
|
||||
@Documented
|
||||
@Retention(RUNTIME)
|
||||
public @interface UiBackground {
|
||||
}
|
||||
@@ -11,16 +11,16 @@
|
||||
* 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
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.keyguard;
|
||||
|
||||
import com.android.internal.policy.IKeyguardDismissCallback;
|
||||
import com.android.systemui.Dependency;
|
||||
import com.android.systemui.UiOffloadThread;
|
||||
import com.android.systemui.dagger.qualifiers.UiBackground;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
@@ -32,10 +32,12 @@ import javax.inject.Singleton;
|
||||
public class DismissCallbackRegistry {
|
||||
|
||||
private final ArrayList<DismissCallbackWrapper> mDismissCallbacks = new ArrayList<>();
|
||||
private final UiOffloadThread mUiOffloadThread = Dependency.get(UiOffloadThread.class);
|
||||
private final Executor mUiBgExecutor;
|
||||
|
||||
@Inject
|
||||
public DismissCallbackRegistry() {}
|
||||
public DismissCallbackRegistry(@UiBackground Executor uiBgExecutor) {
|
||||
mUiBgExecutor = uiBgExecutor;
|
||||
}
|
||||
|
||||
public void addCallback(IKeyguardDismissCallback callback) {
|
||||
mDismissCallbacks.add(new DismissCallbackWrapper(callback));
|
||||
@@ -44,7 +46,7 @@ public class DismissCallbackRegistry {
|
||||
public void notifyDismissCancelled() {
|
||||
for (int i = mDismissCallbacks.size() - 1; i >= 0; i--) {
|
||||
DismissCallbackWrapper callback = mDismissCallbacks.get(i);
|
||||
mUiOffloadThread.submit(callback::notifyDismissCancelled);
|
||||
mUiBgExecutor.execute(callback::notifyDismissCancelled);
|
||||
}
|
||||
mDismissCallbacks.clear();
|
||||
}
|
||||
@@ -52,7 +54,7 @@ public class DismissCallbackRegistry {
|
||||
public void notifyDismissSucceeded() {
|
||||
for (int i = mDismissCallbacks.size() - 1; i >= 0; i--) {
|
||||
DismissCallbackWrapper callback = mDismissCallbacks.get(i);
|
||||
mUiOffloadThread.submit(callback::notifyDismissSucceeded);
|
||||
mUiBgExecutor.execute(callback::notifyDismissSucceeded);
|
||||
}
|
||||
mDismissCallbacks.clear();
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
* 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
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.keyguard;
|
||||
@@ -81,8 +81,8 @@ import com.android.systemui.Dependency;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.SystemUI;
|
||||
import com.android.systemui.SystemUIFactory;
|
||||
import com.android.systemui.UiOffloadThread;
|
||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||
import com.android.systemui.dagger.qualifiers.UiBackground;
|
||||
import com.android.systemui.plugins.FalsingManager;
|
||||
import com.android.systemui.statusbar.phone.BiometricUnlockController;
|
||||
import com.android.systemui.statusbar.phone.KeyguardBypassController;
|
||||
@@ -95,6 +95,7 @@ import com.android.systemui.util.InjectionInflationController;
|
||||
import java.io.FileDescriptor;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
@@ -211,7 +212,7 @@ public class KeyguardViewMediator extends SystemUI {
|
||||
private AudioManager mAudioManager;
|
||||
private StatusBarManager mStatusBarManager;
|
||||
private final StatusBarWindowController mStatusBarWindowController;
|
||||
private final UiOffloadThread mUiOffloadThread = Dependency.get(UiOffloadThread.class);
|
||||
private final Executor mUiBgExecutor;
|
||||
|
||||
private boolean mSystemReady;
|
||||
private boolean mBootCompleted;
|
||||
@@ -689,7 +690,8 @@ public class KeyguardViewMediator extends SystemUI {
|
||||
BroadcastDispatcher broadcastDispatcher,
|
||||
StatusBarWindowController statusBarWindowController,
|
||||
Lazy<StatusBarKeyguardViewManager> statusBarKeyguardViewManagerLazy,
|
||||
DismissCallbackRegistry dismissCallbackRegistry) {
|
||||
DismissCallbackRegistry dismissCallbackRegistry,
|
||||
@UiBackground Executor uiBgExecutor) {
|
||||
super(context);
|
||||
mFalsingManager = falsingManager;
|
||||
mLockPatternUtils = lockPatternUtils;
|
||||
@@ -697,6 +699,7 @@ public class KeyguardViewMediator extends SystemUI {
|
||||
mStatusBarWindowController = statusBarWindowController;
|
||||
mStatusBarKeyguardViewManagerLazy = statusBarKeyguardViewManagerLazy;
|
||||
mDismissCallbackRegistry = dismissCallbackRegistry;
|
||||
mUiBgExecutor = uiBgExecutor;
|
||||
}
|
||||
|
||||
public void userActivity() {
|
||||
@@ -1662,7 +1665,7 @@ public class KeyguardViewMediator extends SystemUI {
|
||||
private void handleKeyguardDone() {
|
||||
Trace.beginSection("KeyguardViewMediator#handleKeyguardDone");
|
||||
final int currentUser = KeyguardUpdateMonitor.getCurrentUser();
|
||||
mUiOffloadThread.submit(() -> {
|
||||
mUiBgExecutor.execute(() -> {
|
||||
if (mLockPatternUtils.isSecure(currentUser)) {
|
||||
mLockPatternUtils.getDevicePolicyManager().reportKeyguardDismissed(currentUser);
|
||||
}
|
||||
@@ -1705,7 +1708,7 @@ public class KeyguardViewMediator extends SystemUI {
|
||||
final UserHandle currentUser = new UserHandle(currentUserId);
|
||||
final UserManager um = (UserManager) mContext.getSystemService(
|
||||
Context.USER_SERVICE);
|
||||
mUiOffloadThread.submit(() -> {
|
||||
mUiBgExecutor.execute(() -> {
|
||||
for (int profileId : um.getProfileIdsWithDisabled(currentUser.getIdentifier())) {
|
||||
mContext.sendBroadcastAsUser(USER_PRESENT_INTENT, UserHandle.of(profileId));
|
||||
}
|
||||
@@ -1756,7 +1759,7 @@ public class KeyguardViewMediator extends SystemUI {
|
||||
mUiSoundsStreamType = mAudioManager.getUiSoundsStreamType();
|
||||
}
|
||||
|
||||
mUiOffloadThread.submit(() -> {
|
||||
mUiBgExecutor.execute(() -> {
|
||||
// If the stream is muted, don't play the sound
|
||||
if (mAudioManager.isStreamMute(mUiSoundsStreamType)) return;
|
||||
|
||||
@@ -1775,7 +1778,7 @@ public class KeyguardViewMediator extends SystemUI {
|
||||
}
|
||||
|
||||
private void updateActivityLockScreenState(boolean showing, boolean aodShowing) {
|
||||
mUiOffloadThread.submit(() -> {
|
||||
mUiBgExecutor.execute(() -> {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "updateActivityLockScreenState(" + showing + ", " + aodShowing + ")");
|
||||
}
|
||||
@@ -1854,7 +1857,7 @@ public class KeyguardViewMediator extends SystemUI {
|
||||
// Posting to mUiOffloadThread to ensure that calls to ActivityTaskManager will be in
|
||||
// order.
|
||||
final int keyguardFlag = flags;
|
||||
mUiOffloadThread.submit(() -> {
|
||||
mUiBgExecutor.execute(() -> {
|
||||
try {
|
||||
ActivityTaskManager.getService().keyguardGoingAway(keyguardFlag);
|
||||
} catch (RemoteException e) {
|
||||
@@ -2217,7 +2220,7 @@ public class KeyguardViewMediator extends SystemUI {
|
||||
}
|
||||
});
|
||||
updateInputRestrictedLocked();
|
||||
mUiOffloadThread.submit(() -> {
|
||||
mUiBgExecutor.execute(() -> {
|
||||
mTrustManager.reportKeyguardShowingChanged();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -100,7 +100,7 @@ public class PipManager implements BasePipManager {
|
||||
mMenuController.onActivityPinned();
|
||||
mAppOpsListener.onActivityPinned(packageName);
|
||||
|
||||
Dependency.get(UiOffloadThread.class).submit(() -> {
|
||||
Dependency.get(UiOffloadThread.class).execute(() -> {
|
||||
WindowManagerWrapper.getInstance().setPipVisibility(true);
|
||||
});
|
||||
}
|
||||
@@ -114,7 +114,7 @@ public class PipManager implements BasePipManager {
|
||||
mTouchHandler.onActivityUnpinned(topActivity);
|
||||
mAppOpsListener.onActivityUnpinned();
|
||||
|
||||
Dependency.get(UiOffloadThread.class).submit(() -> {
|
||||
Dependency.get(UiOffloadThread.class).execute(() -> {
|
||||
WindowManagerWrapper.getInstance().setPipVisibility(topActivity != null);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -750,7 +750,7 @@ public class PipManager implements BasePipManager {
|
||||
}
|
||||
|
||||
private void updatePipVisibility(final boolean visible) {
|
||||
Dependency.get(UiOffloadThread.class).submit(() -> {
|
||||
Dependency.get(UiOffloadThread.class).execute(() -> {
|
||||
WindowManagerWrapper.getInstance().setPipVisibility(visible);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -54,12 +54,13 @@ import com.android.systemui.Dependency;
|
||||
import com.android.systemui.DockedStackExistsListener;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.SystemUI;
|
||||
import com.android.systemui.UiOffloadThread;
|
||||
import com.android.systemui.dagger.qualifiers.UiBackground;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||
import com.android.systemui.util.NotificationChannels;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
@@ -74,16 +75,18 @@ public class InstantAppNotifier extends SystemUI
|
||||
public static final int NUM_TASKS_FOR_INSTANT_APP_INFO = 5;
|
||||
|
||||
private final Handler mHandler = new Handler();
|
||||
private final UiOffloadThread mUiOffloadThread = Dependency.get(UiOffloadThread.class);
|
||||
private final Executor mUiBgExecutor;
|
||||
private final ArraySet<Pair<String, Integer>> mCurrentNotifs = new ArraySet<>();
|
||||
private final CommandQueue mCommandQueue;
|
||||
private boolean mDockedStackExists;
|
||||
private KeyguardStateController mKeyguardStateController;
|
||||
|
||||
@Inject
|
||||
public InstantAppNotifier(Context context, CommandQueue commandQueue) {
|
||||
public InstantAppNotifier(Context context, CommandQueue commandQueue,
|
||||
@UiBackground Executor uiBgExecutor) {
|
||||
super(context);
|
||||
mCommandQueue = commandQueue;
|
||||
mUiBgExecutor = uiBgExecutor;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -151,7 +154,7 @@ public class InstantAppNotifier extends SystemUI
|
||||
private void updateForegroundInstantApps() {
|
||||
NotificationManager noMan = mContext.getSystemService(NotificationManager.class);
|
||||
IPackageManager pm = AppGlobals.getPackageManager();
|
||||
mUiOffloadThread.submit(
|
||||
mUiBgExecutor.execute(
|
||||
() -> {
|
||||
ArraySet<Pair<String, Integer>> notifs = new ArraySet<>(mCurrentNotifs);
|
||||
try {
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
* 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
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.android.systemui.statusbar.notification.logging;
|
||||
|
||||
@@ -32,7 +32,7 @@ import androidx.annotation.Nullable;
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.statusbar.IStatusBarService;
|
||||
import com.android.internal.statusbar.NotificationVisibility;
|
||||
import com.android.systemui.UiOffloadThread;
|
||||
import com.android.systemui.dagger.qualifiers.UiBackground;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener;
|
||||
import com.android.systemui.statusbar.NotificationListener;
|
||||
@@ -47,6 +47,7 @@ import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
@@ -68,7 +69,7 @@ public class NotificationLogger implements StateListener {
|
||||
|
||||
// Dependencies:
|
||||
private final NotificationListenerService mNotificationListener;
|
||||
private final UiOffloadThread mUiOffloadThread;
|
||||
private final Executor mUiBgExecutor;
|
||||
private final NotificationEntryManager mEntryManager;
|
||||
private HeadsUpManager mHeadsUpManager;
|
||||
private final ExpansionStateLogger mExpansionStateLogger;
|
||||
@@ -193,12 +194,12 @@ public class NotificationLogger implements StateListener {
|
||||
|
||||
@Inject
|
||||
public NotificationLogger(NotificationListener notificationListener,
|
||||
UiOffloadThread uiOffloadThread,
|
||||
@UiBackground Executor uiBgExecutor,
|
||||
NotificationEntryManager entryManager,
|
||||
StatusBarStateController statusBarStateController,
|
||||
ExpansionStateLogger expansionStateLogger) {
|
||||
mNotificationListener = notificationListener;
|
||||
mUiOffloadThread = uiOffloadThread;
|
||||
mUiBgExecutor = uiBgExecutor;
|
||||
mEntryManager = entryManager;
|
||||
mBarService = IStatusBarService.Stub.asInterface(
|
||||
ServiceManager.getService(Context.STATUS_BAR_SERVICE));
|
||||
@@ -319,7 +320,7 @@ public class NotificationLogger implements StateListener {
|
||||
final NotificationVisibility[] newlyVisibleAr = cloneVisibilitiesAsArr(newlyVisible);
|
||||
final NotificationVisibility[] noLongerVisibleAr = cloneVisibilitiesAsArr(noLongerVisible);
|
||||
|
||||
mUiOffloadThread.submit(() -> {
|
||||
mUiBgExecutor.execute(() -> {
|
||||
try {
|
||||
mBarService.onNotificationVisibilityChanged(newlyVisibleAr, noLongerVisibleAr);
|
||||
} catch (RemoteException e) {
|
||||
@@ -429,13 +430,13 @@ public class NotificationLogger implements StateListener {
|
||||
* Notification key -> last logged expansion state, should be accessed in UI thread only.
|
||||
*/
|
||||
private final Map<String, Boolean> mLoggedExpansionState = new ArrayMap<>();
|
||||
private final UiOffloadThread mUiOffloadThread;
|
||||
private final Executor mUiBgExecutor;
|
||||
@VisibleForTesting
|
||||
IStatusBarService mBarService;
|
||||
|
||||
@Inject
|
||||
public ExpansionStateLogger(UiOffloadThread uiOffloadThread) {
|
||||
mUiOffloadThread = uiOffloadThread;
|
||||
public ExpansionStateLogger(@UiBackground Executor uiBgExecutor) {
|
||||
mUiBgExecutor = uiBgExecutor;
|
||||
mBarService =
|
||||
IStatusBarService.Stub.asInterface(
|
||||
ServiceManager.getService(Context.STATUS_BAR_SERVICE));
|
||||
@@ -513,7 +514,7 @@ public class NotificationLogger implements StateListener {
|
||||
}
|
||||
mLoggedExpansionState.put(key, state.mIsExpanded);
|
||||
final State stateToBeLogged = new State(state);
|
||||
mUiOffloadThread.submit(() -> {
|
||||
mUiBgExecutor.execute(() -> {
|
||||
try {
|
||||
mBarService.onNotificationExpansionChanged(key, stateToBeLogged.mIsUserAction,
|
||||
stateToBeLogged.mIsExpanded, stateToBeLogged.mLocation.ordinal());
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
* 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
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.statusbar.notification.row.wrapper;
|
||||
@@ -244,17 +244,18 @@ public class NotificationTemplateViewWrapper extends NotificationHeaderViewWrapp
|
||||
mUiOffloadThread = Dependency.get(UiOffloadThread.class);
|
||||
}
|
||||
if (view.isAttachedToWindow()) {
|
||||
mUiOffloadThread.submit(() -> pendingIntent.registerCancelListener(listener));
|
||||
mUiOffloadThread.execute(() -> pendingIntent.registerCancelListener(listener));
|
||||
}
|
||||
view.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
|
||||
@Override
|
||||
public void onViewAttachedToWindow(View v) {
|
||||
mUiOffloadThread.submit(() -> pendingIntent.registerCancelListener(listener));
|
||||
mUiOffloadThread.execute(() -> pendingIntent.registerCancelListener(listener));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewDetachedFromWindow(View v) {
|
||||
mUiOffloadThread.submit(() -> pendingIntent.unregisterCancelListener(listener));
|
||||
mUiOffloadThread.execute(
|
||||
() -> pendingIntent.unregisterCancelListener(listener));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ import android.util.Log;
|
||||
import android.util.SparseBooleanArray;
|
||||
|
||||
import com.android.systemui.Dumpable;
|
||||
import com.android.systemui.UiOffloadThread;
|
||||
import com.android.systemui.dagger.qualifiers.UiBackground;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
|
||||
|
||||
@@ -61,6 +61,7 @@ import java.io.FileDescriptor;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
@@ -82,7 +83,7 @@ public class NavigationModeController implements Dumpable {
|
||||
private Context mCurrentUserContext;
|
||||
private final IOverlayManager mOverlayManager;
|
||||
private final DeviceProvisionedController mDeviceProvisionedController;
|
||||
private final UiOffloadThread mUiOffloadThread;
|
||||
private final Executor mUiBgExecutor;
|
||||
|
||||
private SparseBooleanArray mRestoreGesturalNavBarMode = new SparseBooleanArray();
|
||||
|
||||
@@ -146,12 +147,12 @@ public class NavigationModeController implements Dumpable {
|
||||
@Inject
|
||||
public NavigationModeController(Context context,
|
||||
DeviceProvisionedController deviceProvisionedController,
|
||||
UiOffloadThread uiOffloadThread) {
|
||||
@UiBackground Executor uiBgExecutor) {
|
||||
mContext = context;
|
||||
mCurrentUserContext = context;
|
||||
mOverlayManager = IOverlayManager.Stub.asInterface(
|
||||
ServiceManager.getService(Context.OVERLAY_SERVICE));
|
||||
mUiOffloadThread = uiOffloadThread;
|
||||
mUiBgExecutor = uiBgExecutor;
|
||||
mDeviceProvisionedController = deviceProvisionedController;
|
||||
mDeviceProvisionedController.addCallback(mDeviceProvisionedCallback);
|
||||
|
||||
@@ -242,7 +243,7 @@ public class NavigationModeController implements Dumpable {
|
||||
mCurrentUserContext = getCurrentUserContext();
|
||||
int mode = getCurrentInteractionMode(mCurrentUserContext);
|
||||
mMode = mode;
|
||||
mUiOffloadThread.submit(() -> {
|
||||
mUiBgExecutor.execute(() -> {
|
||||
Settings.Secure.putString(mCurrentUserContext.getContentResolver(),
|
||||
Secure.NAVIGATION_MODE, String.valueOf(mode));
|
||||
});
|
||||
@@ -379,7 +380,7 @@ public class NavigationModeController implements Dumpable {
|
||||
}
|
||||
|
||||
public void setModeOverlay(String overlayPkg, int userId) {
|
||||
mUiOffloadThread.submit(() -> {
|
||||
mUiBgExecutor.execute(() -> {
|
||||
try {
|
||||
mOverlayManager.setEnabledExclusiveInCategory(overlayPkg, userId);
|
||||
if (DEBUG) {
|
||||
|
||||
@@ -40,8 +40,8 @@ import android.util.Log;
|
||||
import com.android.internal.telephony.TelephonyIntents;
|
||||
import com.android.systemui.Dependency;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.UiOffloadThread;
|
||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||
import com.android.systemui.dagger.qualifiers.UiBackground;
|
||||
import com.android.systemui.qs.tiles.DndTile;
|
||||
import com.android.systemui.qs.tiles.RotationLockTile;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
@@ -63,6 +63,7 @@ import com.android.systemui.statusbar.policy.UserInfoController;
|
||||
import com.android.systemui.statusbar.policy.ZenModeController;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
/**
|
||||
* This class contains all of the policy about which icons are installed in the status bar at boot
|
||||
@@ -114,7 +115,7 @@ public class PhoneStatusBarPolicy
|
||||
private final DeviceProvisionedController mProvisionedController;
|
||||
private final KeyguardStateController mKeyguardStateController;
|
||||
private final LocationController mLocationController;
|
||||
private final UiOffloadThread mUiOffloadThread = Dependency.get(UiOffloadThread.class);
|
||||
private final Executor mUiBgExecutor;
|
||||
private final SensorPrivacyController mSensorPrivacyController;
|
||||
|
||||
// Assume it's all good unless we hear otherwise. We don't always seem
|
||||
@@ -131,7 +132,8 @@ public class PhoneStatusBarPolicy
|
||||
private AlarmManager.AlarmClockInfo mNextAlarm;
|
||||
|
||||
public PhoneStatusBarPolicy(Context context, StatusBarIconController iconController,
|
||||
CommandQueue commandQueue, BroadcastDispatcher broadcastDispatcher) {
|
||||
CommandQueue commandQueue, BroadcastDispatcher broadcastDispatcher,
|
||||
@UiBackground Executor uiBgExecutor) {
|
||||
mContext = context;
|
||||
mIconController = iconController;
|
||||
mCast = Dependency.get(CastController.class);
|
||||
@@ -148,6 +150,7 @@ public class PhoneStatusBarPolicy
|
||||
mKeyguardStateController = Dependency.get(KeyguardStateController.class);
|
||||
mLocationController = Dependency.get(LocationController.class);
|
||||
mSensorPrivacyController = Dependency.get(SensorPrivacyController.class);
|
||||
mUiBgExecutor = uiBgExecutor;
|
||||
|
||||
mSlotCast = context.getString(com.android.internal.R.string.status_bar_cast);
|
||||
mSlotHotspot = context.getString(com.android.internal.R.string.status_bar_hotspot);
|
||||
@@ -452,7 +455,7 @@ public class PhoneStatusBarPolicy
|
||||
// getLastResumedActivityUserId needds to acquire the AM lock, which may be contended in
|
||||
// some cases. Since it doesn't really matter here whether it's updated in this frame
|
||||
// or in the next one, we call this method from our UI offload thread.
|
||||
mUiOffloadThread.submit(() -> {
|
||||
mUiBgExecutor.execute(() -> {
|
||||
final int userId;
|
||||
try {
|
||||
userId = ActivityTaskManager.getService().getLastResumedActivityUserId();
|
||||
|
||||
@@ -136,13 +136,13 @@ import com.android.systemui.Prefs;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.SystemUI;
|
||||
import com.android.systemui.SystemUIFactory;
|
||||
import com.android.systemui.UiOffloadThread;
|
||||
import com.android.systemui.assist.AssistManager;
|
||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||
import com.android.systemui.bubbles.BubbleController;
|
||||
import com.android.systemui.charging.WirelessChargingAnimation;
|
||||
import com.android.systemui.classifier.FalsingLog;
|
||||
import com.android.systemui.colorextraction.SysuiColorExtractor;
|
||||
import com.android.systemui.dagger.qualifiers.UiBackground;
|
||||
import com.android.systemui.fragments.ExtensionFragmentListener;
|
||||
import com.android.systemui.fragments.FragmentHostManager;
|
||||
import com.android.systemui.keyguard.DismissCallbackRegistry;
|
||||
@@ -232,6 +232,7 @@ import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Provider;
|
||||
@@ -471,7 +472,7 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
private ViewMediatorCallback mKeyguardViewMediatorCallback;
|
||||
private final ScrimController mScrimController;
|
||||
protected DozeScrimController mDozeScrimController;
|
||||
private final UiOffloadThread mUiOffloadThread;
|
||||
private final Executor mUiBgExecutor;
|
||||
|
||||
protected boolean mDozing;
|
||||
|
||||
@@ -634,7 +635,7 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
NotificationAlertingManager notificationAlertingManager,
|
||||
DisplayMetrics displayMetrics,
|
||||
MetricsLogger metricsLogger,
|
||||
UiOffloadThread uiOffloadThread,
|
||||
@UiBackground Executor uiBgExecutor,
|
||||
NotificationMediaManager notificationMediaManager,
|
||||
NotificationLockscreenUserManager lockScreenUserManager,
|
||||
NotificationRemoteInputManager remoteInputManager,
|
||||
@@ -708,7 +709,7 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
mNotificationAlertingManager = notificationAlertingManager;
|
||||
mDisplayMetrics = displayMetrics;
|
||||
mMetricsLogger = metricsLogger;
|
||||
mUiOffloadThread = uiOffloadThread;
|
||||
mUiBgExecutor = uiBgExecutor;
|
||||
mMediaManager = notificationMediaManager;
|
||||
mLockscreenUserManager = lockScreenUserManager;
|
||||
mRemoteInputManager = remoteInputManager;
|
||||
@@ -885,7 +886,7 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
|
||||
// Lastly, call to the icon policy to install/update all the icons.
|
||||
mIconPolicy = new PhoneStatusBarPolicy(mContext, mIconController, mCommandQueue,
|
||||
mBroadcastDispatcher);
|
||||
mBroadcastDispatcher, mUiBgExecutor);
|
||||
mSignalPolicy = new StatusBarSignalPolicy(mContext, mIconController);
|
||||
|
||||
mKeyguardStateController.addCallback(this);
|
||||
@@ -2840,7 +2841,7 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
notificationLoad = 1;
|
||||
}
|
||||
final int finalNotificationLoad = notificationLoad;
|
||||
mUiOffloadThread.submit(() -> {
|
||||
mUiBgExecutor.execute(() -> {
|
||||
try {
|
||||
mBarService.onPanelRevealed(clearNotificationEffects,
|
||||
finalNotificationLoad);
|
||||
@@ -2849,7 +2850,7 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
}
|
||||
});
|
||||
} else {
|
||||
mUiOffloadThread.submit(() -> {
|
||||
mUiBgExecutor.execute(() -> {
|
||||
try {
|
||||
mBarService.onPanelHidden();
|
||||
} catch (RemoteException ex) {
|
||||
@@ -4019,7 +4020,7 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
}
|
||||
|
||||
void awakenDreams() {
|
||||
Dependency.get(UiOffloadThread.class).submit(() -> {
|
||||
mUiBgExecutor.execute(() -> {
|
||||
try {
|
||||
mDreamManager.awaken();
|
||||
} catch (RemoteException e) {
|
||||
|
||||
@@ -27,11 +27,11 @@ import androidx.annotation.Nullable;
|
||||
import com.android.internal.logging.MetricsLogger;
|
||||
import com.android.keyguard.KeyguardUpdateMonitor;
|
||||
import com.android.keyguard.ViewMediatorCallback;
|
||||
import com.android.systemui.UiOffloadThread;
|
||||
import com.android.systemui.assist.AssistManager;
|
||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||
import com.android.systemui.bubbles.BubbleController;
|
||||
import com.android.systemui.colorextraction.SysuiColorExtractor;
|
||||
import com.android.systemui.dagger.qualifiers.UiBackground;
|
||||
import com.android.systemui.keyguard.DismissCallbackRegistry;
|
||||
import com.android.systemui.keyguard.KeyguardViewMediator;
|
||||
import com.android.systemui.keyguard.ScreenLifecycle;
|
||||
@@ -75,6 +75,7 @@ import com.android.systemui.statusbar.policy.UserSwitcherController;
|
||||
import com.android.systemui.volume.VolumeComponent;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Provider;
|
||||
@@ -122,7 +123,7 @@ public class StatusBarModule {
|
||||
NotificationAlertingManager notificationAlertingManager,
|
||||
DisplayMetrics displayMetrics,
|
||||
MetricsLogger metricsLogger,
|
||||
UiOffloadThread uiOffloadThread,
|
||||
@UiBackground Executor uiBgExecutor,
|
||||
NotificationMediaManager notificationMediaManager,
|
||||
NotificationLockscreenUserManager lockScreenUserManager,
|
||||
NotificationRemoteInputManager remoteInputManager,
|
||||
@@ -197,7 +198,7 @@ public class StatusBarModule {
|
||||
notificationAlertingManager,
|
||||
displayMetrics,
|
||||
metricsLogger,
|
||||
uiOffloadThread,
|
||||
uiBgExecutor,
|
||||
notificationMediaManager,
|
||||
lockScreenUserManager,
|
||||
remoteInputManager,
|
||||
|
||||
@@ -47,13 +47,12 @@ import com.android.internal.statusbar.IStatusBarService;
|
||||
import com.android.internal.statusbar.NotificationVisibility;
|
||||
import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.systemui.ActivityIntentHelper;
|
||||
import com.android.systemui.Dependency;
|
||||
import com.android.systemui.EventLogTags;
|
||||
import com.android.systemui.UiOffloadThread;
|
||||
import com.android.systemui.assist.AssistManager;
|
||||
import com.android.systemui.bubbles.BubbleController;
|
||||
import com.android.systemui.dagger.qualifiers.Background;
|
||||
import com.android.systemui.dagger.qualifiers.Main;
|
||||
import com.android.systemui.dagger.qualifiers.UiBackground;
|
||||
import com.android.systemui.plugins.ActivityStarter;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
@@ -74,6 +73,8 @@ import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
|
||||
import com.android.systemui.statusbar.policy.HeadsUpUtil;
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
@@ -115,6 +116,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit
|
||||
private final Handler mBackgroundHandler;
|
||||
private final ActivityIntentHelper mActivityIntentHelper;
|
||||
private final BubbleController mBubbleController;
|
||||
private final Executor mUiBgExecutor;
|
||||
|
||||
private boolean mIsCollapsingToShowActivityOverLockscreen;
|
||||
|
||||
@@ -133,7 +135,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit
|
||||
KeyguardStateController keyguardStateController,
|
||||
NotificationInterruptionStateProvider notificationInterruptionStateProvider,
|
||||
MetricsLogger metricsLogger, LockPatternUtils lockPatternUtils,
|
||||
Handler mainThreadHandler, Handler backgroundHandler,
|
||||
Handler mainThreadHandler, Handler backgroundHandler, Executor uiBgExecutor,
|
||||
ActivityIntentHelper activityIntentHelper, BubbleController bubbleController) {
|
||||
mContext = context;
|
||||
mNotificationPanel = panel;
|
||||
@@ -160,6 +162,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit
|
||||
mGroupManager = groupManager;
|
||||
mLockPatternUtils = lockPatternUtils;
|
||||
mBackgroundHandler = backgroundHandler;
|
||||
mUiBgExecutor = uiBgExecutor;
|
||||
mEntryManager.addNotificationEntryListener(new NotificationEntryListener() {
|
||||
@Override
|
||||
public void onPendingEntryAdded(NotificationEntry entry) {
|
||||
@@ -418,7 +421,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit
|
||||
} else {
|
||||
// Stop screensaver if the notification has a fullscreen intent.
|
||||
// (like an incoming phone call)
|
||||
Dependency.get(UiOffloadThread.class).submit(() -> {
|
||||
mUiBgExecutor.execute(() -> {
|
||||
try {
|
||||
mDreamManager.awaken();
|
||||
} catch (RemoteException e) {
|
||||
@@ -521,6 +524,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit
|
||||
private final LockPatternUtils mLockPatternUtils;
|
||||
private final Handler mMainThreadHandler;
|
||||
private final Handler mBackgroundHandler;
|
||||
private final Executor mUiBgExecutor;
|
||||
private final ActivityIntentHelper mActivityIntentHelper;
|
||||
private final BubbleController mBubbleController;
|
||||
private final SuperStatusBarViewFactory mSuperStatusBarViewFactory;
|
||||
@@ -551,6 +555,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit
|
||||
LockPatternUtils lockPatternUtils,
|
||||
@Main Handler mainThreadHandler,
|
||||
@Background Handler backgroundHandler,
|
||||
@UiBackground Executor uiBgExecutor,
|
||||
ActivityIntentHelper activityIntentHelper,
|
||||
BubbleController bubbleController,
|
||||
ShadeController shadeController,
|
||||
@@ -576,6 +581,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit
|
||||
mLockPatternUtils = lockPatternUtils;
|
||||
mMainThreadHandler = mainThreadHandler;
|
||||
mBackgroundHandler = backgroundHandler;
|
||||
mUiBgExecutor = uiBgExecutor;
|
||||
mActivityIntentHelper = activityIntentHelper;
|
||||
mBubbleController = bubbleController;
|
||||
mShadeController = shadeController;
|
||||
@@ -624,6 +630,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit
|
||||
mLockPatternUtils,
|
||||
mMainThreadHandler,
|
||||
mBackgroundHandler,
|
||||
mUiBgExecutor,
|
||||
mActivityIntentHelper,
|
||||
mBubbleController);
|
||||
}
|
||||
|
||||
@@ -24,8 +24,10 @@ import android.os.Process;
|
||||
|
||||
import com.android.systemui.dagger.qualifiers.Background;
|
||||
import com.android.systemui.dagger.qualifiers.Main;
|
||||
import com.android.systemui.dagger.qualifiers.UiBackground;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
@@ -128,4 +130,16 @@ public abstract class ConcurrencyModule {
|
||||
public static DelayableExecutor provideMainDelayableExecutor(@Main Looper looper) {
|
||||
return new ExecutorImpl(new Handler(looper));
|
||||
}
|
||||
|
||||
/**
|
||||
* Provide an Executor specifically for running UI operations on a separate thread.
|
||||
*
|
||||
* Keep submitted runnables short and to the point, just as with any other UI code.
|
||||
*/
|
||||
@Provides
|
||||
@Singleton
|
||||
@UiBackground
|
||||
public static Executor provideUiBackgroundExecutor() {
|
||||
return Executors.newSingleThreadExecutor();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -117,7 +117,7 @@ public abstract class SysuiTestCase {
|
||||
}
|
||||
|
||||
protected void waitForUiOffloadThread() {
|
||||
Future<?> future = Dependency.get(UiOffloadThread.class).submit(() -> {});
|
||||
Future<?> future = Dependency.get(UiOffloadThread.class).execute(() -> { });
|
||||
try {
|
||||
future.get();
|
||||
} catch (InterruptedException | ExecutionException e) {
|
||||
|
||||
@@ -34,7 +34,9 @@ import com.android.systemui.classifier.brightline.BrightLineFalsingManager;
|
||||
import com.android.systemui.shared.plugins.PluginManager;
|
||||
import com.android.systemui.util.DeviceConfigProxy;
|
||||
import com.android.systemui.util.DeviceConfigProxyFake;
|
||||
import com.android.systemui.util.concurrency.FakeExecutor;
|
||||
import com.android.systemui.util.sensors.ProximitySensor;
|
||||
import com.android.systemui.util.time.FakeSystemClock;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
@@ -55,6 +57,7 @@ public class FalsingManagerProxyTest extends SysuiTestCase {
|
||||
private FalsingManagerProxy mProxy;
|
||||
private DeviceConfigProxy mDeviceConfig;
|
||||
private TestableLooper mTestableLooper;
|
||||
private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock());
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
@@ -77,7 +80,7 @@ public class FalsingManagerProxyTest extends SysuiTestCase {
|
||||
@Test
|
||||
public void test_brightLineFalsingManagerDisabled() {
|
||||
mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mHandler, mProximitySensor,
|
||||
mDeviceConfig);
|
||||
mDeviceConfig, mUiBgExecutor);
|
||||
assertThat(mProxy.getInternalFalsingManager(), instanceOf(FalsingManagerImpl.class));
|
||||
}
|
||||
|
||||
@@ -87,14 +90,14 @@ public class FalsingManagerProxyTest extends SysuiTestCase {
|
||||
BRIGHTLINE_FALSING_MANAGER_ENABLED, "true", false);
|
||||
mTestableLooper.processAllMessages();
|
||||
mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mHandler, mProximitySensor,
|
||||
mDeviceConfig);
|
||||
mDeviceConfig, mUiBgExecutor);
|
||||
assertThat(mProxy.getInternalFalsingManager(), instanceOf(BrightLineFalsingManager.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_brightLineFalsingManagerToggled() throws InterruptedException {
|
||||
mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mHandler, mProximitySensor,
|
||||
mDeviceConfig);
|
||||
mDeviceConfig, mUiBgExecutor);
|
||||
assertThat(mProxy.getInternalFalsingManager(), instanceOf(FalsingManagerImpl.class));
|
||||
|
||||
mDeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
* 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
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.keyguard;
|
||||
@@ -24,6 +24,8 @@ import androidx.test.runner.AndroidJUnit4;
|
||||
|
||||
import com.android.internal.policy.IKeyguardDismissCallback;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.util.concurrency.FakeExecutor;
|
||||
import com.android.systemui.util.time.FakeSystemClock;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -41,10 +43,11 @@ public class DismissCallbackRegistryTest extends SysuiTestCase {
|
||||
private DismissCallbackRegistry mDismissCallbackRegistry;
|
||||
private @Mock IKeyguardDismissCallback mMockCallback;
|
||||
private @Mock IKeyguardDismissCallback mMockCallback2;
|
||||
private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock());
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
mDismissCallbackRegistry = new DismissCallbackRegistry();
|
||||
mDismissCallbackRegistry = new DismissCallbackRegistry(mUiBgExecutor);
|
||||
MockitoAnnotations.initMocks(this);
|
||||
}
|
||||
|
||||
@@ -52,7 +55,7 @@ public class DismissCallbackRegistryTest extends SysuiTestCase {
|
||||
public void testCancelled() throws Exception {
|
||||
mDismissCallbackRegistry.addCallback(mMockCallback);
|
||||
mDismissCallbackRegistry.notifyDismissCancelled();
|
||||
waitForUiOffloadThread();
|
||||
mUiBgExecutor.runAllReady();
|
||||
verify(mMockCallback).onDismissCancelled();
|
||||
}
|
||||
|
||||
@@ -61,7 +64,7 @@ public class DismissCallbackRegistryTest extends SysuiTestCase {
|
||||
mDismissCallbackRegistry.addCallback(mMockCallback);
|
||||
mDismissCallbackRegistry.addCallback(mMockCallback2);
|
||||
mDismissCallbackRegistry.notifyDismissCancelled();
|
||||
waitForUiOffloadThread();
|
||||
mUiBgExecutor.runAllReady();
|
||||
verify(mMockCallback).onDismissCancelled();
|
||||
verify(mMockCallback2).onDismissCancelled();
|
||||
}
|
||||
@@ -70,7 +73,7 @@ public class DismissCallbackRegistryTest extends SysuiTestCase {
|
||||
public void testSucceeded() throws Exception {
|
||||
mDismissCallbackRegistry.addCallback(mMockCallback);
|
||||
mDismissCallbackRegistry.notifyDismissSucceeded();
|
||||
waitForUiOffloadThread();
|
||||
mUiBgExecutor.runAllReady();
|
||||
verify(mMockCallback).onDismissSucceeded();
|
||||
}
|
||||
|
||||
@@ -79,7 +82,7 @@ public class DismissCallbackRegistryTest extends SysuiTestCase {
|
||||
mDismissCallbackRegistry.addCallback(mMockCallback);
|
||||
mDismissCallbackRegistry.addCallback(mMockCallback2);
|
||||
mDismissCallbackRegistry.notifyDismissSucceeded();
|
||||
waitForUiOffloadThread();
|
||||
mUiBgExecutor.runAllReady();
|
||||
verify(mMockCallback).onDismissSucceeded();
|
||||
verify(mMockCallback2).onDismissSucceeded();
|
||||
}
|
||||
@@ -89,7 +92,7 @@ public class DismissCallbackRegistryTest extends SysuiTestCase {
|
||||
mDismissCallbackRegistry.addCallback(mMockCallback);
|
||||
mDismissCallbackRegistry.notifyDismissSucceeded();
|
||||
mDismissCallbackRegistry.notifyDismissSucceeded();
|
||||
waitForUiOffloadThread();
|
||||
mUiBgExecutor.runAllReady();
|
||||
verify(mMockCallback, times(1)).onDismissSucceeded();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,6 +38,8 @@ import com.android.systemui.classifier.FalsingManagerFake;
|
||||
import com.android.systemui.plugins.FalsingManager;
|
||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
|
||||
import com.android.systemui.statusbar.phone.StatusBarWindowController;
|
||||
import com.android.systemui.util.concurrency.FakeExecutor;
|
||||
import com.android.systemui.util.time.FakeSystemClock;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -58,6 +60,7 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
|
||||
private @Mock StatusBarWindowController mStatusBarWindowController;
|
||||
private @Mock BroadcastDispatcher mBroadcastDispatcher;
|
||||
private @Mock DismissCallbackRegistry mDismissCallbackRegistry;
|
||||
private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock());
|
||||
|
||||
private FalsingManagerFake mFalsingManager;
|
||||
|
||||
@@ -75,7 +78,7 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
|
||||
mViewMediator = new KeyguardViewMediator(
|
||||
mContext, mFalsingManager, mLockPatternUtils, mBroadcastDispatcher,
|
||||
mStatusBarWindowController, () -> mStatusBarKeyguardViewManager,
|
||||
mDismissCallbackRegistry);
|
||||
mDismissCallbackRegistry, mUiBgExecutor);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -29,10 +29,10 @@ import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.internal.statusbar.IStatusBarService;
|
||||
import com.android.internal.statusbar.NotificationVisibility;
|
||||
import com.android.systemui.Dependency;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.UiOffloadThread;
|
||||
import com.android.systemui.statusbar.notification.stack.ExpandableViewState;
|
||||
import com.android.systemui.util.concurrency.FakeExecutor;
|
||||
import com.android.systemui.util.time.FakeSystemClock;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -52,12 +52,12 @@ public class ExpansionStateLoggerTest extends SysuiTestCase {
|
||||
private NotificationLogger.ExpansionStateLogger mLogger;
|
||||
@Mock
|
||||
private IStatusBarService mBarService;
|
||||
private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock());
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mLogger = new NotificationLogger.ExpansionStateLogger(
|
||||
Dependency.get(UiOffloadThread.class));
|
||||
mLogger = new NotificationLogger.ExpansionStateLogger(mUiBgExecutor);
|
||||
mLogger.mBarService = mBarService;
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ public class ExpansionStateLoggerTest extends SysuiTestCase {
|
||||
mLogger.onVisibilityChanged(
|
||||
Collections.singletonList(createNotificationVisibility(NOTIFICATION_KEY, true)),
|
||||
Collections.emptyList());
|
||||
waitForUiOffloadThread();
|
||||
mUiBgExecutor.runAllReady();
|
||||
|
||||
verify(mBarService, Mockito.never()).onNotificationExpansionChanged(
|
||||
eq(NOTIFICATION_KEY), anyBoolean(), anyBoolean(), anyInt());
|
||||
@@ -76,7 +76,7 @@ public class ExpansionStateLoggerTest extends SysuiTestCase {
|
||||
public void testExpanded() throws RemoteException {
|
||||
mLogger.onExpansionChanged(NOTIFICATION_KEY, false, true,
|
||||
NotificationVisibility.NotificationLocation.LOCATION_UNKNOWN);
|
||||
waitForUiOffloadThread();
|
||||
mUiBgExecutor.runAllReady();
|
||||
|
||||
verify(mBarService, Mockito.never()).onNotificationExpansionChanged(
|
||||
eq(NOTIFICATION_KEY), anyBoolean(), anyBoolean(), anyInt());
|
||||
@@ -89,7 +89,7 @@ public class ExpansionStateLoggerTest extends SysuiTestCase {
|
||||
mLogger.onVisibilityChanged(
|
||||
Collections.singletonList(createNotificationVisibility(NOTIFICATION_KEY, true)),
|
||||
Collections.emptyList());
|
||||
waitForUiOffloadThread();
|
||||
mUiBgExecutor.runAllReady();
|
||||
|
||||
verify(mBarService, Mockito.never()).onNotificationExpansionChanged(
|
||||
eq(NOTIFICATION_KEY), anyBoolean(), anyBoolean(), anyInt());
|
||||
@@ -102,7 +102,7 @@ public class ExpansionStateLoggerTest extends SysuiTestCase {
|
||||
mLogger.onVisibilityChanged(
|
||||
Collections.singletonList(createNotificationVisibility(NOTIFICATION_KEY, true)),
|
||||
Collections.emptyList());
|
||||
waitForUiOffloadThread();
|
||||
mUiBgExecutor.runAllReady();
|
||||
|
||||
verify(mBarService).onNotificationExpansionChanged(
|
||||
NOTIFICATION_KEY, true, true,
|
||||
@@ -117,7 +117,7 @@ public class ExpansionStateLoggerTest extends SysuiTestCase {
|
||||
Collections.singletonList(createNotificationVisibility(NOTIFICATION_KEY, true,
|
||||
NotificationVisibility.NotificationLocation.LOCATION_MAIN_AREA)),
|
||||
Collections.emptyList());
|
||||
waitForUiOffloadThread();
|
||||
mUiBgExecutor.runAllReady();
|
||||
|
||||
verify(mBarService).onNotificationExpansionChanged(
|
||||
NOTIFICATION_KEY, false, true,
|
||||
@@ -133,7 +133,7 @@ public class ExpansionStateLoggerTest extends SysuiTestCase {
|
||||
Collections.emptyList());
|
||||
mLogger.onExpansionChanged(NOTIFICATION_KEY, false, true,
|
||||
NotificationVisibility.NotificationLocation.LOCATION_FIRST_HEADS_UP);
|
||||
waitForUiOffloadThread();
|
||||
mUiBgExecutor.runAllReady();
|
||||
|
||||
verify(mBarService).onNotificationExpansionChanged(
|
||||
NOTIFICATION_KEY, false, true,
|
||||
@@ -150,7 +150,7 @@ public class ExpansionStateLoggerTest extends SysuiTestCase {
|
||||
NotificationVisibility.NotificationLocation.LOCATION_UNKNOWN);
|
||||
mLogger.onExpansionChanged(NOTIFICATION_KEY, false, true,
|
||||
NotificationVisibility.NotificationLocation.LOCATION_UNKNOWN);
|
||||
waitForUiOffloadThread();
|
||||
mUiBgExecutor.runAllReady();
|
||||
|
||||
verify(mBarService).onNotificationExpansionChanged(
|
||||
NOTIFICATION_KEY, false, true,
|
||||
@@ -164,7 +164,7 @@ public class ExpansionStateLoggerTest extends SysuiTestCase {
|
||||
mLogger.onVisibilityChanged(
|
||||
Collections.singletonList(createNotificationVisibility(NOTIFICATION_KEY, true)),
|
||||
Collections.emptyList());
|
||||
waitForUiOffloadThread();
|
||||
mUiBgExecutor.runAllReady();
|
||||
verify(mBarService).onNotificationExpansionChanged(
|
||||
NOTIFICATION_KEY, true, true, ExpandableViewState.LOCATION_UNKNOWN);
|
||||
|
||||
@@ -172,7 +172,7 @@ public class ExpansionStateLoggerTest extends SysuiTestCase {
|
||||
mLogger.onVisibilityChanged(
|
||||
Collections.singletonList(createNotificationVisibility(NOTIFICATION_KEY, true)),
|
||||
Collections.emptyList());
|
||||
waitForUiOffloadThread();
|
||||
mUiBgExecutor.runAllReady();
|
||||
// onNotificationExpansionChanged is called the second time.
|
||||
verify(mBarService, times(2)).onNotificationExpansionChanged(
|
||||
NOTIFICATION_KEY, true, true, ExpandableViewState.LOCATION_UNKNOWN);
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
* 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
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.statusbar.notification.logging;
|
||||
@@ -36,9 +36,7 @@ import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.internal.statusbar.IStatusBarService;
|
||||
import com.android.internal.statusbar.NotificationVisibility;
|
||||
import com.android.systemui.Dependency;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.UiOffloadThread;
|
||||
import com.android.systemui.statusbar.NotificationListener;
|
||||
import com.android.systemui.statusbar.StatusBarStateControllerImpl;
|
||||
import com.android.systemui.statusbar.notification.NotificationEntryListener;
|
||||
@@ -47,6 +45,8 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry;
|
||||
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
|
||||
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
|
||||
import com.android.systemui.statusbar.notification.stack.NotificationListContainer;
|
||||
import com.android.systemui.util.concurrency.FakeExecutor;
|
||||
import com.android.systemui.util.time.FakeSystemClock;
|
||||
|
||||
import com.google.android.collect.Lists;
|
||||
|
||||
@@ -60,6 +60,7 @@ import org.mockito.Mockito;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
@SmallTest
|
||||
@RunWith(AndroidTestingRunner.class)
|
||||
@@ -82,6 +83,7 @@ public class NotificationLoggerTest extends SysuiTestCase {
|
||||
private TestableNotificationLogger mLogger;
|
||||
private NotificationEntryListener mNotificationEntryListener;
|
||||
private ConcurrentLinkedQueue<AssertionError> mErrorQueue = new ConcurrentLinkedQueue<>();
|
||||
private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock());
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
@@ -98,7 +100,7 @@ public class NotificationLoggerTest extends SysuiTestCase {
|
||||
.build();
|
||||
mEntry.setRow(mRow);
|
||||
|
||||
mLogger = new TestableNotificationLogger(mListener, Dependency.get(UiOffloadThread.class),
|
||||
mLogger = new TestableNotificationLogger(mListener, mUiBgExecutor,
|
||||
mEntryManager, mock(StatusBarStateControllerImpl.class), mBarService,
|
||||
mExpansionStateLogger);
|
||||
mLogger.setUpWithContainer(mListContainer);
|
||||
@@ -130,7 +132,7 @@ public class NotificationLoggerTest extends SysuiTestCase {
|
||||
when(mEntryManager.getVisibleNotifications()).thenReturn(Lists.newArrayList(mEntry));
|
||||
mLogger.getChildLocationsChangedListenerForTest().onChildLocationsChanged();
|
||||
TestableLooper.get(this).processAllMessages();
|
||||
waitForUiOffloadThread();
|
||||
mUiBgExecutor.runAllReady();
|
||||
|
||||
if(!mErrorQueue.isEmpty()) {
|
||||
throw mErrorQueue.poll();
|
||||
@@ -140,7 +142,7 @@ public class NotificationLoggerTest extends SysuiTestCase {
|
||||
Mockito.reset(mBarService);
|
||||
mLogger.getChildLocationsChangedListenerForTest().onChildLocationsChanged();
|
||||
TestableLooper.get(this).processAllMessages();
|
||||
waitForUiOffloadThread();
|
||||
mUiBgExecutor.runAllReady();
|
||||
|
||||
verify(mBarService, never()).onNotificationVisibilityChanged(any(), any());
|
||||
}
|
||||
@@ -152,11 +154,11 @@ public class NotificationLoggerTest extends SysuiTestCase {
|
||||
when(mEntryManager.getVisibleNotifications()).thenReturn(Lists.newArrayList(mEntry));
|
||||
mLogger.getChildLocationsChangedListenerForTest().onChildLocationsChanged();
|
||||
TestableLooper.get(this).processAllMessages();
|
||||
waitForUiOffloadThread();
|
||||
mUiBgExecutor.runAllReady();
|
||||
Mockito.reset(mBarService);
|
||||
|
||||
mLogger.stopNotificationLogging();
|
||||
waitForUiOffloadThread();
|
||||
mUiBgExecutor.runAllReady();
|
||||
// The visibility objects are recycled by NotificationLogger, so we can't use specific
|
||||
// matchers here.
|
||||
verify(mBarService, times(1)).onNotificationVisibilityChanged(any(), any());
|
||||
@@ -165,12 +167,12 @@ public class NotificationLoggerTest extends SysuiTestCase {
|
||||
private class TestableNotificationLogger extends NotificationLogger {
|
||||
|
||||
TestableNotificationLogger(NotificationListener notificationListener,
|
||||
UiOffloadThread uiOffloadThread,
|
||||
Executor uiBgExecutor,
|
||||
NotificationEntryManager entryManager,
|
||||
StatusBarStateControllerImpl statusBarStateController,
|
||||
IStatusBarService barService,
|
||||
ExpansionStateLogger expansionStateLogger) {
|
||||
super(notificationListener, uiOffloadThread, entryManager, statusBarStateController,
|
||||
super(notificationListener, uiBgExecutor, entryManager, statusBarStateController,
|
||||
expansionStateLogger);
|
||||
mBarService = barService;
|
||||
// Make this on the current thread so we can wait for it during tests.
|
||||
|
||||
@@ -72,6 +72,8 @@ import com.android.systemui.statusbar.notification.NotificationInterruptionState
|
||||
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
|
||||
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||
import com.android.systemui.util.concurrency.FakeExecutor;
|
||||
import com.android.systemui.util.time.FakeSystemClock;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -126,6 +128,7 @@ public class StatusBarNotificationActivityStarterTest extends SysuiTestCase {
|
||||
private SuperStatusBarViewFactory mSuperStatusBarViewFactory;
|
||||
@Mock
|
||||
private NotificationPanelView mNotificationPanelView;
|
||||
private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock());
|
||||
|
||||
private NotificationTestHelper mNotificationTestHelper;
|
||||
private ExpandableNotificationRow mNotificationRow;
|
||||
@@ -178,8 +181,9 @@ public class StatusBarNotificationActivityStarterTest extends SysuiTestCase {
|
||||
mock(NotificationLockscreenUserManager.class),
|
||||
mKeyguardStateController,
|
||||
mock(NotificationInterruptionStateProvider.class), mock(MetricsLogger.class),
|
||||
mock(LockPatternUtils.class), mHandler, mHandler, mActivityIntentHelper,
|
||||
mBubbleController, mShadeController, mSuperStatusBarViewFactory))
|
||||
mock(LockPatternUtils.class), mHandler, mHandler, mUiBgExecutor,
|
||||
mActivityIntentHelper, mBubbleController, mShadeController,
|
||||
mSuperStatusBarViewFactory))
|
||||
.setStatusBar(mStatusBar)
|
||||
.setNotificationPresenter(mock(NotificationPresenter.class))
|
||||
.setActivityLaunchAnimator(mock(ActivityLaunchAnimator.class))
|
||||
|
||||
@@ -78,7 +78,6 @@ import com.android.systemui.Dependency;
|
||||
import com.android.systemui.InitController;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.UiOffloadThread;
|
||||
import com.android.systemui.assist.AssistManager;
|
||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||
import com.android.systemui.bubbles.BubbleController;
|
||||
@@ -133,6 +132,8 @@ import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
|
||||
import com.android.systemui.statusbar.policy.RemoteInputUriController;
|
||||
import com.android.systemui.statusbar.policy.UserSwitcherController;
|
||||
import com.android.systemui.statusbar.policy.ZenModeController;
|
||||
import com.android.systemui.util.concurrency.FakeExecutor;
|
||||
import com.android.systemui.util.time.FakeSystemClock;
|
||||
import com.android.systemui.volume.VolumeComponent;
|
||||
|
||||
import org.junit.Before;
|
||||
@@ -245,6 +246,7 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
@Mock private StatusBarNotificationActivityStarter.Builder
|
||||
mStatusBarNotificationActivityStarterBuilder;
|
||||
private ShadeController mShadeController;
|
||||
private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock());
|
||||
|
||||
@Before
|
||||
public void setup() throws Exception {
|
||||
@@ -266,7 +268,7 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
|
||||
mMetricsLogger = new FakeMetricsLogger();
|
||||
NotificationLogger notificationLogger = new NotificationLogger(mNotificationListener,
|
||||
Dependency.get(UiOffloadThread.class), mEntryManager, mStatusBarStateController,
|
||||
mUiBgExecutor, mEntryManager, mStatusBarStateController,
|
||||
mExpansionStateLogger);
|
||||
notificationLogger.setVisibilityReporter(mock(Runnable.class));
|
||||
|
||||
@@ -349,7 +351,7 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
mNotificationAlertingManager,
|
||||
new DisplayMetrics(),
|
||||
mMetricsLogger,
|
||||
Dependency.get(UiOffloadThread.class),
|
||||
mUiBgExecutor,
|
||||
mNotificationMediaManager,
|
||||
mLockscreenUserManager,
|
||||
mRemoteInputManager,
|
||||
@@ -641,7 +643,7 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
public void testLogHidden() {
|
||||
try {
|
||||
mStatusBar.handleVisibleToUserChanged(false);
|
||||
waitForUiOffloadThread();
|
||||
mUiBgExecutor.runAllReady();
|
||||
verify(mBarService, times(1)).onPanelHidden();
|
||||
verify(mBarService, never()).onPanelRevealed(anyBoolean(), anyInt());
|
||||
} catch (RemoteException e) {
|
||||
@@ -659,7 +661,7 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
|
||||
try {
|
||||
mStatusBar.handleVisibleToUserChanged(true);
|
||||
waitForUiOffloadThread();
|
||||
mUiBgExecutor.runAllReady();
|
||||
verify(mBarService, never()).onPanelHidden();
|
||||
verify(mBarService, times(1)).onPanelRevealed(false, 1);
|
||||
} catch (RemoteException e) {
|
||||
@@ -678,7 +680,7 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
|
||||
try {
|
||||
mStatusBar.handleVisibleToUserChanged(true);
|
||||
waitForUiOffloadThread();
|
||||
mUiBgExecutor.runAllReady();
|
||||
verify(mBarService, never()).onPanelHidden();
|
||||
verify(mBarService, times(1)).onPanelRevealed(true, 5);
|
||||
} catch (RemoteException e) {
|
||||
@@ -696,7 +698,7 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
|
||||
try {
|
||||
mStatusBar.handleVisibleToUserChanged(true);
|
||||
waitForUiOffloadThread();
|
||||
mUiBgExecutor.runAllReady();
|
||||
verify(mBarService, never()).onPanelHidden();
|
||||
verify(mBarService, times(1)).onPanelRevealed(false, 5);
|
||||
} catch (RemoteException e) {
|
||||
|
||||
Reference in New Issue
Block a user