Merge "Improve dream logs." into udc-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
a46f7d773d
@@ -19,7 +19,6 @@ package com.android.systemui.dreams;
|
|||||||
import static com.android.systemui.dreams.dagger.DreamModule.DREAM_OVERLAY_ENABLED;
|
import static com.android.systemui.dreams.dagger.DreamModule.DREAM_OVERLAY_ENABLED;
|
||||||
|
|
||||||
import android.service.dreams.DreamService;
|
import android.service.dreams.DreamService;
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
@@ -52,7 +51,6 @@ import javax.inject.Named;
|
|||||||
public class DreamOverlayStateController implements
|
public class DreamOverlayStateController implements
|
||||||
CallbackController<DreamOverlayStateController.Callback> {
|
CallbackController<DreamOverlayStateController.Callback> {
|
||||||
private static final String TAG = "DreamOverlayStateCtlr";
|
private static final String TAG = "DreamOverlayStateCtlr";
|
||||||
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
|
|
||||||
|
|
||||||
public static final int STATE_DREAM_OVERLAY_ACTIVE = 1 << 0;
|
public static final int STATE_DREAM_OVERLAY_ACTIVE = 1 << 0;
|
||||||
public static final int STATE_LOW_LIGHT_ACTIVE = 1 << 1;
|
public static final int STATE_LOW_LIGHT_ACTIVE = 1 << 1;
|
||||||
@@ -110,13 +108,17 @@ public class DreamOverlayStateController implements
|
|||||||
|
|
||||||
private final int mSupportedTypes;
|
private final int mSupportedTypes;
|
||||||
|
|
||||||
|
private final DreamLogger mLogger;
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@Inject
|
@Inject
|
||||||
public DreamOverlayStateController(@Main Executor executor,
|
public DreamOverlayStateController(@Main Executor executor,
|
||||||
@Named(DREAM_OVERLAY_ENABLED) boolean overlayEnabled,
|
@Named(DREAM_OVERLAY_ENABLED) boolean overlayEnabled,
|
||||||
FeatureFlags featureFlags) {
|
FeatureFlags featureFlags,
|
||||||
|
DreamLogger dreamLogger) {
|
||||||
mExecutor = executor;
|
mExecutor = executor;
|
||||||
mOverlayEnabled = overlayEnabled;
|
mOverlayEnabled = overlayEnabled;
|
||||||
|
mLogger = dreamLogger;
|
||||||
mFeatureFlags = featureFlags;
|
mFeatureFlags = featureFlags;
|
||||||
if (mFeatureFlags.isEnabled(Flags.ALWAYS_SHOW_HOME_CONTROLS_ON_DREAMS)) {
|
if (mFeatureFlags.isEnabled(Flags.ALWAYS_SHOW_HOME_CONTROLS_ON_DREAMS)) {
|
||||||
mSupportedTypes = Complication.COMPLICATION_TYPE_NONE
|
mSupportedTypes = Complication.COMPLICATION_TYPE_NONE
|
||||||
@@ -124,9 +126,7 @@ public class DreamOverlayStateController implements
|
|||||||
} else {
|
} else {
|
||||||
mSupportedTypes = Complication.COMPLICATION_TYPE_NONE;
|
mSupportedTypes = Complication.COMPLICATION_TYPE_NONE;
|
||||||
}
|
}
|
||||||
if (DEBUG) {
|
mLogger.d(TAG, "Dream overlay enabled: " + mOverlayEnabled);
|
||||||
Log.d(TAG, "Dream overlay enabled:" + mOverlayEnabled);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -134,18 +134,14 @@ public class DreamOverlayStateController implements
|
|||||||
*/
|
*/
|
||||||
public void addComplication(Complication complication) {
|
public void addComplication(Complication complication) {
|
||||||
if (!mOverlayEnabled) {
|
if (!mOverlayEnabled) {
|
||||||
if (DEBUG) {
|
mLogger.d(TAG,
|
||||||
Log.d(TAG,
|
"Ignoring adding complication due to overlay disabled: " + complication);
|
||||||
"Ignoring adding complication due to overlay disabled:" + complication);
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mExecutor.execute(() -> {
|
mExecutor.execute(() -> {
|
||||||
if (mComplications.add(complication)) {
|
if (mComplications.add(complication)) {
|
||||||
if (DEBUG) {
|
mLogger.d(TAG, "Added dream complication: " + complication);
|
||||||
Log.d(TAG, "addComplication: added " + complication);
|
|
||||||
}
|
|
||||||
mCallbacks.stream().forEach(callback -> callback.onComplicationsChanged());
|
mCallbacks.stream().forEach(callback -> callback.onComplicationsChanged());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -156,18 +152,14 @@ public class DreamOverlayStateController implements
|
|||||||
*/
|
*/
|
||||||
public void removeComplication(Complication complication) {
|
public void removeComplication(Complication complication) {
|
||||||
if (!mOverlayEnabled) {
|
if (!mOverlayEnabled) {
|
||||||
if (DEBUG) {
|
mLogger.d(TAG,
|
||||||
Log.d(TAG,
|
"Ignoring removing complication due to overlay disabled: " + complication);
|
||||||
"Ignoring removing complication due to overlay disabled:" + complication);
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mExecutor.execute(() -> {
|
mExecutor.execute(() -> {
|
||||||
if (mComplications.remove(complication)) {
|
if (mComplications.remove(complication)) {
|
||||||
if (DEBUG) {
|
mLogger.d(TAG, "Removed dream complication: " + complication);
|
||||||
Log.d(TAG, "removeComplication: removed " + complication);
|
|
||||||
}
|
|
||||||
mCallbacks.stream().forEach(callback -> callback.onComplicationsChanged());
|
mCallbacks.stream().forEach(callback -> callback.onComplicationsChanged());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -313,6 +305,7 @@ public class DreamOverlayStateController implements
|
|||||||
* @param active {@code true} if overlay is active, {@code false} otherwise.
|
* @param active {@code true} if overlay is active, {@code false} otherwise.
|
||||||
*/
|
*/
|
||||||
public void setOverlayActive(boolean active) {
|
public void setOverlayActive(boolean active) {
|
||||||
|
mLogger.d(TAG, "Dream overlay active: " + active);
|
||||||
modifyState(active ? OP_SET_STATE : OP_CLEAR_STATE, STATE_DREAM_OVERLAY_ACTIVE);
|
modifyState(active ? OP_SET_STATE : OP_CLEAR_STATE, STATE_DREAM_OVERLAY_ACTIVE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -321,6 +314,8 @@ public class DreamOverlayStateController implements
|
|||||||
* @param active {@code true} if low light mode is active, {@code false} otherwise.
|
* @param active {@code true} if low light mode is active, {@code false} otherwise.
|
||||||
*/
|
*/
|
||||||
public void setLowLightActive(boolean active) {
|
public void setLowLightActive(boolean active) {
|
||||||
|
mLogger.d(TAG, "Low light mode active: " + active);
|
||||||
|
|
||||||
if (isLowLightActive() && !active) {
|
if (isLowLightActive() && !active) {
|
||||||
// Notify that we're exiting low light only on the transition from active to not active.
|
// Notify that we're exiting low light only on the transition from active to not active.
|
||||||
mCallbacks.forEach(Callback::onExitLowLight);
|
mCallbacks.forEach(Callback::onExitLowLight);
|
||||||
@@ -351,6 +346,7 @@ public class DreamOverlayStateController implements
|
|||||||
* @param hasAttention {@code true} if has the user's attention, {@code false} otherwise.
|
* @param hasAttention {@code true} if has the user's attention, {@code false} otherwise.
|
||||||
*/
|
*/
|
||||||
public void setHasAssistantAttention(boolean hasAttention) {
|
public void setHasAssistantAttention(boolean hasAttention) {
|
||||||
|
mLogger.d(TAG, "Dream overlay has Assistant attention: " + hasAttention);
|
||||||
modifyState(hasAttention ? OP_SET_STATE : OP_CLEAR_STATE, STATE_HAS_ASSISTANT_ATTENTION);
|
modifyState(hasAttention ? OP_SET_STATE : OP_CLEAR_STATE, STATE_HAS_ASSISTANT_ATTENTION);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -359,6 +355,7 @@ public class DreamOverlayStateController implements
|
|||||||
* @param visible {@code true} if the status bar is visible, {@code false} otherwise.
|
* @param visible {@code true} if the status bar is visible, {@code false} otherwise.
|
||||||
*/
|
*/
|
||||||
public void setDreamOverlayStatusBarVisible(boolean visible) {
|
public void setDreamOverlayStatusBarVisible(boolean visible) {
|
||||||
|
mLogger.d(TAG, "Dream overlay status bar visible: " + visible);
|
||||||
modifyState(
|
modifyState(
|
||||||
visible ? OP_SET_STATE : OP_CLEAR_STATE, STATE_DREAM_OVERLAY_STATUS_BAR_VISIBLE);
|
visible ? OP_SET_STATE : OP_CLEAR_STATE, STATE_DREAM_OVERLAY_STATUS_BAR_VISIBLE);
|
||||||
}
|
}
|
||||||
@@ -376,6 +373,7 @@ public class DreamOverlayStateController implements
|
|||||||
*/
|
*/
|
||||||
public void setAvailableComplicationTypes(@Complication.ComplicationType int types) {
|
public void setAvailableComplicationTypes(@Complication.ComplicationType int types) {
|
||||||
mExecutor.execute(() -> {
|
mExecutor.execute(() -> {
|
||||||
|
mLogger.d(TAG, "Available complication types: " + types);
|
||||||
mAvailableComplicationTypes = types;
|
mAvailableComplicationTypes = types;
|
||||||
mCallbacks.forEach(Callback::onAvailableComplicationTypesChanged);
|
mCallbacks.forEach(Callback::onAvailableComplicationTypesChanged);
|
||||||
});
|
});
|
||||||
@@ -393,6 +391,7 @@ public class DreamOverlayStateController implements
|
|||||||
*/
|
*/
|
||||||
public void setShouldShowComplications(boolean shouldShowComplications) {
|
public void setShouldShowComplications(boolean shouldShowComplications) {
|
||||||
mExecutor.execute(() -> {
|
mExecutor.execute(() -> {
|
||||||
|
mLogger.d(TAG, "Should show complications: " + shouldShowComplications);
|
||||||
mShouldShowComplications = shouldShowComplications;
|
mShouldShowComplications = shouldShowComplications;
|
||||||
mCallbacks.forEach(Callback::onAvailableComplicationTypesChanged);
|
mCallbacks.forEach(Callback::onAvailableComplicationTypesChanged);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -141,6 +141,20 @@ public class DreamOverlayStatusBarView extends ConstraintLayout {
|
|||||||
mExtraSystemStatusViewGroup = findViewById(R.id.dream_overlay_extra_items);
|
mExtraSystemStatusViewGroup = findViewById(R.id.dream_overlay_extra_items);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected static String getLoggableStatusIconType(@StatusIconType int type) {
|
||||||
|
return switch (type) {
|
||||||
|
case STATUS_ICON_NOTIFICATIONS -> "notifications";
|
||||||
|
case STATUS_ICON_WIFI_UNAVAILABLE -> "wifi_unavailable";
|
||||||
|
case STATUS_ICON_ALARM_SET -> "alarm_set";
|
||||||
|
case STATUS_ICON_CAMERA_DISABLED -> "camera_disabled";
|
||||||
|
case STATUS_ICON_MIC_DISABLED -> "mic_disabled";
|
||||||
|
case STATUS_ICON_MIC_CAMERA_DISABLED -> "mic_camera_disabled";
|
||||||
|
case STATUS_ICON_PRIORITY_MODE_ON -> "priority_mode_on";
|
||||||
|
case STATUS_ICON_ASSISTANT_ATTENTION_ACTIVE -> "assistant_attention_active";
|
||||||
|
default -> type + "(unknown)";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
void showIcon(@StatusIconType int iconType, boolean show, @Nullable String contentDescription) {
|
void showIcon(@StatusIconType int iconType, boolean show, @Nullable String contentDescription) {
|
||||||
View icon = mStatusIcons.get(iconType);
|
View icon = mStatusIcons.get(iconType);
|
||||||
if (icon == null) {
|
if (icon == null) {
|
||||||
|
|||||||
@@ -61,6 +61,8 @@ import javax.inject.Inject;
|
|||||||
*/
|
*/
|
||||||
@DreamOverlayComponent.DreamOverlayScope
|
@DreamOverlayComponent.DreamOverlayScope
|
||||||
public class DreamOverlayStatusBarViewController extends ViewController<DreamOverlayStatusBarView> {
|
public class DreamOverlayStatusBarViewController extends ViewController<DreamOverlayStatusBarView> {
|
||||||
|
private static final String TAG = "DreamStatusBarCtrl";
|
||||||
|
|
||||||
private final ConnectivityManager mConnectivityManager;
|
private final ConnectivityManager mConnectivityManager;
|
||||||
private final TouchInsetManager.TouchInsetSession mTouchInsetSession;
|
private final TouchInsetManager.TouchInsetSession mTouchInsetSession;
|
||||||
private final NextAlarmController mNextAlarmController;
|
private final NextAlarmController mNextAlarmController;
|
||||||
@@ -78,6 +80,7 @@ public class DreamOverlayStatusBarViewController extends ViewController<DreamOve
|
|||||||
private final Executor mMainExecutor;
|
private final Executor mMainExecutor;
|
||||||
private final List<DreamOverlayStatusBarItemsProvider.StatusBarItem> mExtraStatusBarItems =
|
private final List<DreamOverlayStatusBarItemsProvider.StatusBarItem> mExtraStatusBarItems =
|
||||||
new ArrayList<>();
|
new ArrayList<>();
|
||||||
|
private final DreamLogger mLogger;
|
||||||
|
|
||||||
private boolean mIsAttached;
|
private boolean mIsAttached;
|
||||||
|
|
||||||
@@ -157,7 +160,8 @@ public class DreamOverlayStatusBarViewController extends ViewController<DreamOve
|
|||||||
StatusBarWindowStateController statusBarWindowStateController,
|
StatusBarWindowStateController statusBarWindowStateController,
|
||||||
DreamOverlayStatusBarItemsProvider statusBarItemsProvider,
|
DreamOverlayStatusBarItemsProvider statusBarItemsProvider,
|
||||||
DreamOverlayStateController dreamOverlayStateController,
|
DreamOverlayStateController dreamOverlayStateController,
|
||||||
UserTracker userTracker) {
|
UserTracker userTracker,
|
||||||
|
DreamLogger dreamLogger) {
|
||||||
super(view);
|
super(view);
|
||||||
mResources = resources;
|
mResources = resources;
|
||||||
mMainExecutor = mainExecutor;
|
mMainExecutor = mainExecutor;
|
||||||
@@ -173,6 +177,7 @@ public class DreamOverlayStatusBarViewController extends ViewController<DreamOve
|
|||||||
mZenModeController = zenModeController;
|
mZenModeController = zenModeController;
|
||||||
mDreamOverlayStateController = dreamOverlayStateController;
|
mDreamOverlayStateController = dreamOverlayStateController;
|
||||||
mUserTracker = userTracker;
|
mUserTracker = userTracker;
|
||||||
|
mLogger = dreamLogger;
|
||||||
|
|
||||||
// Register to receive show/hide updates for the system status bar. Our custom status bar
|
// Register to receive show/hide updates for the system status bar. Our custom status bar
|
||||||
// needs to hide when the system status bar is showing to ovoid overlapping status bars.
|
// needs to hide when the system status bar is showing to ovoid overlapping status bars.
|
||||||
@@ -341,6 +346,8 @@ public class DreamOverlayStatusBarViewController extends ViewController<DreamOve
|
|||||||
@Nullable String contentDescription) {
|
@Nullable String contentDescription) {
|
||||||
mMainExecutor.execute(() -> {
|
mMainExecutor.execute(() -> {
|
||||||
if (mIsAttached) {
|
if (mIsAttached) {
|
||||||
|
mLogger.d(TAG, (show ? "Showing" : "Hiding") + " dream status bar item: "
|
||||||
|
+ DreamOverlayStatusBarView.getLoggableStatusIconType(iconType));
|
||||||
mView.showIcon(iconType, show, contentDescription);
|
mView.showIcon(iconType, show, contentDescription);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import androidx.lifecycle.Observer;
|
|||||||
import androidx.test.filters.SmallTest;
|
import androidx.test.filters.SmallTest;
|
||||||
|
|
||||||
import com.android.systemui.SysuiTestCase;
|
import com.android.systemui.SysuiTestCase;
|
||||||
|
import com.android.systemui.dreams.DreamLogger;
|
||||||
import com.android.systemui.dreams.DreamOverlayStateController;
|
import com.android.systemui.dreams.DreamOverlayStateController;
|
||||||
import com.android.systemui.flags.FakeFeatureFlags;
|
import com.android.systemui.flags.FakeFeatureFlags;
|
||||||
import com.android.systemui.flags.Flags;
|
import com.android.systemui.flags.Flags;
|
||||||
@@ -56,6 +57,8 @@ public class ComplicationCollectionLiveDataTest extends SysuiTestCase {
|
|||||||
private FakeFeatureFlags mFeatureFlags;
|
private FakeFeatureFlags mFeatureFlags;
|
||||||
@Mock
|
@Mock
|
||||||
private Observer mObserver;
|
private Observer mObserver;
|
||||||
|
@Mock
|
||||||
|
private DreamLogger mLogger;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
@@ -66,7 +69,8 @@ public class ComplicationCollectionLiveDataTest extends SysuiTestCase {
|
|||||||
mStateController = new DreamOverlayStateController(
|
mStateController = new DreamOverlayStateController(
|
||||||
mExecutor,
|
mExecutor,
|
||||||
/* overlayEnabled= */ true,
|
/* overlayEnabled= */ true,
|
||||||
mFeatureFlags);
|
mFeatureFlags,
|
||||||
|
mLogger);
|
||||||
mLiveData = new ComplicationCollectionLiveData(mStateController);
|
mLiveData = new ComplicationCollectionLiveData(mStateController);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -58,6 +58,9 @@ public class DreamOverlayStateControllerTest extends SysuiTestCase {
|
|||||||
@Mock
|
@Mock
|
||||||
private FeatureFlags mFeatureFlags;
|
private FeatureFlags mFeatureFlags;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private DreamLogger mLogger;
|
||||||
|
|
||||||
final FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock());
|
final FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock());
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
@@ -405,6 +408,6 @@ public class DreamOverlayStateControllerTest extends SysuiTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private DreamOverlayStateController getDreamOverlayStateController(boolean overlayEnabled) {
|
private DreamOverlayStateController getDreamOverlayStateController(boolean overlayEnabled) {
|
||||||
return new DreamOverlayStateController(mExecutor, overlayEnabled, mFeatureFlags);
|
return new DreamOverlayStateController(mExecutor, overlayEnabled, mFeatureFlags, mLogger);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -113,6 +113,8 @@ public class DreamOverlayStatusBarViewControllerTest extends SysuiTestCase {
|
|||||||
DreamOverlayStateController mDreamOverlayStateController;
|
DreamOverlayStateController mDreamOverlayStateController;
|
||||||
@Mock
|
@Mock
|
||||||
UserTracker mUserTracker;
|
UserTracker mUserTracker;
|
||||||
|
@Mock
|
||||||
|
DreamLogger mLogger;
|
||||||
|
|
||||||
@Captor
|
@Captor
|
||||||
private ArgumentCaptor<DreamOverlayStateController.Callback> mCallbackCaptor;
|
private ArgumentCaptor<DreamOverlayStateController.Callback> mCallbackCaptor;
|
||||||
@@ -146,7 +148,8 @@ public class DreamOverlayStatusBarViewControllerTest extends SysuiTestCase {
|
|||||||
mStatusBarWindowStateController,
|
mStatusBarWindowStateController,
|
||||||
mDreamOverlayStatusBarItemsProvider,
|
mDreamOverlayStatusBarItemsProvider,
|
||||||
mDreamOverlayStateController,
|
mDreamOverlayStateController,
|
||||||
mUserTracker);
|
mUserTracker,
|
||||||
|
mLogger);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -289,7 +292,8 @@ public class DreamOverlayStatusBarViewControllerTest extends SysuiTestCase {
|
|||||||
mStatusBarWindowStateController,
|
mStatusBarWindowStateController,
|
||||||
mDreamOverlayStatusBarItemsProvider,
|
mDreamOverlayStatusBarItemsProvider,
|
||||||
mDreamOverlayStateController,
|
mDreamOverlayStateController,
|
||||||
mUserTracker);
|
mUserTracker,
|
||||||
|
mLogger);
|
||||||
controller.onViewAttached();
|
controller.onViewAttached();
|
||||||
verify(mView, never()).showIcon(
|
verify(mView, never()).showIcon(
|
||||||
eq(DreamOverlayStatusBarView.STATUS_ICON_NOTIFICATIONS), eq(true), any());
|
eq(DreamOverlayStatusBarView.STATUS_ICON_NOTIFICATIONS), eq(true), any());
|
||||||
|
|||||||
Reference in New Issue
Block a user