bcc12470b7
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
125 lines
4.5 KiB
Java
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;
|
|
}
|