Files
Lawnchair/quickstep/src/com/android/launcher3/taskbar/TaskbarSharedState.java
T
Ats Jenk bcc12470b7 Handle suppressed bubbles
Hide or show bubble based on suppression signals from shell.
If this is the only bubble, hides or shows the bubble bar.

Bug: 273316505
Test: have a single bubble in the bubble bar, suppress the bubble,
  observe that bubble is hidden and bubble bar is not shown,
  unsuppress the bubble, check that bubble bar and bubble is shown
  again, perform check with transient and persistent taskbar
Test: have multiple bubbles, suppress one bubble, check that this bubble
  is not shown, but the bubble bar remains visible with other bubbles,
  perform the check with transient and persistent taskbar
Test: have a single bubble in bubble bar that is suppressed, receive
  notifications to trigger new bubbles, observe bubble bar is shown for
  new bubbles, check that after unsuppressing bubble, it is added back,
  perform the checks with tranient and persistent taskbar
Test: suppress a bubble and rotate the device to trigger launcher
  recreation, check that after unsuppress, the bubble is added back

Flag: com.android.wm.shell.enable_bubble_bar

Change-Id: I17e5cec750a2666feecc62213a3e8fc204ee510a
2024-12-11 16:02:32 -08:00

125 lines
4.5 KiB
Java

/*
* Copyright (C) 2021 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.launcher3.taskbar;
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.InsetsFrameProvider.SOURCE_DISPLAY;
import static android.view.WindowInsets.Type.mandatorySystemGestures;
import static android.view.WindowInsets.Type.navigationBars;
import static android.view.WindowInsets.Type.systemGestures;
import static android.view.WindowInsets.Type.tappableElement;
import static com.android.launcher3.taskbar.LauncherTaskbarUIController.DISPLAY_PROGRESS_COUNT;
import android.app.PendingIntent;
import android.os.Binder;
import android.os.IBinder;
import android.view.InsetsFrameProvider;
import com.android.systemui.shared.system.QuickStepContract.SystemUiStateFlags;
import com.android.wm.shell.shared.bubbles.BubbleBarLocation;
import com.android.wm.shell.shared.bubbles.BubbleInfo;
import java.util.List;
/**
* State shared across different taskbar instance
*/
public class TaskbarSharedState {
private final IBinder mInsetsOwner = new Binder();
private static int INDEX_LEFT = 0;
private static int INDEX_RIGHT = 1;
// TaskbarManager#onSystemUiFlagsChanged
@SystemUiStateFlags
public long sysuiStateFlags;
// TaskbarManager#disableNavBarElements()
public int disableNavBarDisplayId;
public int disableNavBarState1;
public int disableNavBarState2;
// TaskbarManager#onSystemBarAttributesChanged()
public int systemBarAttrsDisplayId;
public int systemBarAttrsBehavior;
// TaskbarManager#onNavButtonsDarkIntensityChanged()
public float navButtonsDarkIntensity;
// TaskbarManager#onTransitionModeUpdated()
public int barMode;
// TaskbarManager#onNavigationBarLumaSamplingEnabled()
public int mLumaSamplingDisplayId = DEFAULT_DISPLAY;
public boolean mIsLumaSamplingEnabled = true;
public boolean setupUIVisible = false;
public boolean wallpaperVisible = false;
public boolean allAppsVisible = false;
public BubbleBarLocation bubbleBarLocation;
public List<BubbleInfo> bubbleInfoItems;
public List<BubbleInfo> suppressedBubbleInfoItems;
/** Returns whether there are a saved bubbles. */
public boolean hasSavedBubbles() {
return bubbleInfoItems != null && !bubbleInfoItems.isEmpty();
}
// LauncherTaskbarUIController#mTaskbarInAppDisplayProgressMultiProp
public float[] inAppDisplayProgressMultiPropValues = new float[DISPLAY_PROGRESS_COUNT];
// Taskbar System Action
public PendingIntent taskbarSystemActionPendingIntent;
public final InsetsFrameProvider[] insetsFrameProviders = new InsetsFrameProvider[] {
new InsetsFrameProvider(mInsetsOwner, 0, navigationBars()),
new InsetsFrameProvider(mInsetsOwner, 0, tappableElement()),
new InsetsFrameProvider(mInsetsOwner, 0, mandatorySystemGestures()),
new InsetsFrameProvider(mInsetsOwner, INDEX_LEFT, systemGestures())
.setSource(SOURCE_DISPLAY),
new InsetsFrameProvider(mInsetsOwner, INDEX_RIGHT, systemGestures())
.setSource(SOURCE_DISPLAY)
};
// Allows us to shift translation logic when doing taskbar pinning animation.
public boolean startTaskbarVariantIsTransient = true;
// To track if taskbar was pinned using taskbar pinning feature at the time of recreate,
// so we can unstash transient taskbar when we un-pinning taskbar.
private boolean mTaskbarWasPinned = false;
public boolean getTaskbarWasPinned() {
return mTaskbarWasPinned;
}
public void setTaskbarWasPinned(boolean taskbarWasPinned) {
mTaskbarWasPinned = taskbarWasPinned;
}
// To track if taskbar was stashed / unstashed between configuration changes (which recreates
// the task bar).
public boolean taskbarWasStashedAuto = true;
// should show corner radius on persistent taskbar when in desktop mode.
public boolean showCornerRadiusInDesktopMode = false;
}