Merge "Add skeleton Growth Framework nudge controller." into main
This commit is contained in:
@@ -139,6 +139,7 @@ import com.android.launcher3.taskbar.bubbles.stashing.PersistentBubbleStashContr
|
||||
import com.android.launcher3.taskbar.bubbles.stashing.TransientBubbleStashController;
|
||||
import com.android.launcher3.taskbar.customization.TaskbarFeatureEvaluator;
|
||||
import com.android.launcher3.taskbar.customization.TaskbarSpecsEvaluator;
|
||||
import com.android.launcher3.taskbar.growth.NudgeController;
|
||||
import com.android.launcher3.taskbar.navbutton.NearestTouchFrame;
|
||||
import com.android.launcher3.taskbar.overlay.TaskbarOverlayController;
|
||||
import com.android.launcher3.testing.TestLogging;
|
||||
@@ -381,7 +382,8 @@ public class TaskbarActivityContext extends BaseTaskbarContext {
|
||||
new TaskbarPinningController(this),
|
||||
bubbleControllersOptional,
|
||||
new TaskbarDesktopModeController(this,
|
||||
DesktopVisibilityController.INSTANCE.get(this)));
|
||||
DesktopVisibilityController.INSTANCE.get(this)),
|
||||
new NudgeController(this));
|
||||
|
||||
mLauncherPrefs = LauncherPrefs.get(this);
|
||||
onViewCreated();
|
||||
|
||||
@@ -25,6 +25,7 @@ import androidx.annotation.VisibleForTesting;
|
||||
import com.android.launcher3.anim.AnimatedFloat;
|
||||
import com.android.launcher3.taskbar.allapps.TaskbarAllAppsController;
|
||||
import com.android.launcher3.taskbar.bubbles.BubbleControllers;
|
||||
import com.android.launcher3.taskbar.growth.NudgeController;
|
||||
import com.android.launcher3.taskbar.overlay.TaskbarOverlayController;
|
||||
import com.android.systemui.shared.rotation.RotationButtonController;
|
||||
import com.android.wm.shell.shared.bubbles.BubbleBarLocation;
|
||||
@@ -67,6 +68,7 @@ public class TaskbarControllers {
|
||||
public final TaskbarPinningController taskbarPinningController;
|
||||
public final Optional<BubbleControllers> bubbleControllers;
|
||||
public final TaskbarDesktopModeController taskbarDesktopModeController;
|
||||
public final NudgeController nudgeController;
|
||||
|
||||
@Nullable private LoggableTaskbarController[] mControllersToLog = null;
|
||||
@Nullable private BackgroundRendererController[] mBackgroundRendererControllers = null;
|
||||
@@ -115,7 +117,8 @@ public class TaskbarControllers {
|
||||
KeyboardQuickSwitchController keyboardQuickSwitchController,
|
||||
TaskbarPinningController taskbarPinningController,
|
||||
Optional<BubbleControllers> bubbleControllers,
|
||||
TaskbarDesktopModeController taskbarDesktopModeController) {
|
||||
TaskbarDesktopModeController taskbarDesktopModeController,
|
||||
NudgeController nudgeController) {
|
||||
this.taskbarActivityContext = taskbarActivityContext;
|
||||
this.taskbarDragController = taskbarDragController;
|
||||
this.navButtonController = navButtonController;
|
||||
@@ -143,6 +146,7 @@ public class TaskbarControllers {
|
||||
this.taskbarPinningController = taskbarPinningController;
|
||||
this.bubbleControllers = bubbleControllers;
|
||||
this.taskbarDesktopModeController = taskbarDesktopModeController;
|
||||
this.nudgeController = nudgeController;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -179,6 +183,7 @@ public class TaskbarControllers {
|
||||
keyboardQuickSwitchController.init(this);
|
||||
taskbarPinningController.init(this, mSharedState);
|
||||
taskbarDesktopModeController.init(this, mSharedState);
|
||||
nudgeController.init(this);
|
||||
|
||||
mControllersToLog = new LoggableTaskbarController[] {
|
||||
taskbarDragController, navButtonController, navbarButtonsViewController,
|
||||
@@ -189,6 +194,7 @@ public class TaskbarControllers {
|
||||
voiceInteractionWindowController, taskbarRecentAppsController,
|
||||
taskbarTranslationController, taskbarEduTooltipController,
|
||||
keyboardQuickSwitchController, taskbarPinningController,
|
||||
nudgeController
|
||||
};
|
||||
mBackgroundRendererControllers = new BackgroundRendererController[] {
|
||||
taskbarDragLayerController, taskbarScrimViewController,
|
||||
@@ -344,7 +350,7 @@ public class TaskbarControllers {
|
||||
return taskbarActivityContext;
|
||||
}
|
||||
|
||||
protected interface LoggableTaskbarController {
|
||||
public interface LoggableTaskbarController {
|
||||
void dumpLogs(String prefix, PrintWriter pw);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
* Copyright (C) 2025 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.growth
|
||||
|
||||
import android.content.Context
|
||||
import com.android.launcher3.Utilities
|
||||
import com.android.launcher3.taskbar.TaskbarActivityContext
|
||||
import com.android.launcher3.taskbar.TaskbarControllers
|
||||
import com.android.launcher3.taskbar.TaskbarControllers.LoggableTaskbarController
|
||||
import com.android.launcher3.util.DisplayController
|
||||
import com.android.launcher3.views.ActivityContext
|
||||
import java.io.PrintWriter
|
||||
|
||||
/** Controls nudge lifecycles. */
|
||||
class NudgeController(context: Context) : LoggableTaskbarController {
|
||||
|
||||
protected val activityContext: TaskbarActivityContext = ActivityContext.lookupContext(context)
|
||||
|
||||
private val isNudgeEnabled: Boolean
|
||||
get() {
|
||||
return !Utilities.isRunningInTestHarness() &&
|
||||
!activityContext.isPhoneMode &&
|
||||
!activityContext.isTinyTaskbar
|
||||
}
|
||||
|
||||
private lateinit var controllers: TaskbarControllers
|
||||
|
||||
fun init(controllers: TaskbarControllers) {
|
||||
this.controllers = controllers
|
||||
}
|
||||
|
||||
fun maybeShow(payload: NudgePayload) {
|
||||
if (!isNudgeEnabled || !DisplayController.isTransientTaskbar(activityContext)) {
|
||||
return
|
||||
}
|
||||
// TODO: b/398033012 - create and show nudge view based on the payload.
|
||||
}
|
||||
|
||||
/** Closes the current [nudgeView]. */
|
||||
fun hide() {
|
||||
// TODO: b/398033012 - hide the nudge view.
|
||||
}
|
||||
|
||||
override fun dumpLogs(prefix: String?, pw: PrintWriter?) {
|
||||
pw?.println(prefix + "NudgeController:")
|
||||
pw?.println("$prefix\tisNudgeEnabled=$isNudgeEnabled")
|
||||
}
|
||||
}
|
||||
+3
@@ -17,6 +17,7 @@ package com.android.launcher3.taskbar
|
||||
|
||||
import com.android.launcher3.taskbar.allapps.TaskbarAllAppsController
|
||||
import com.android.launcher3.taskbar.bubbles.BubbleControllers
|
||||
import com.android.launcher3.taskbar.growth.NudgeController
|
||||
import com.android.launcher3.taskbar.overlay.TaskbarOverlayController
|
||||
import com.android.systemui.shared.rotation.RotationButtonController
|
||||
import java.util.Optional
|
||||
@@ -58,6 +59,7 @@ abstract class TaskbarBaseTestCase {
|
||||
@Mock lateinit var taskbarPinningController: TaskbarPinningController
|
||||
@Mock lateinit var optionalBubbleControllers: Optional<BubbleControllers>
|
||||
@Mock lateinit var taskbarDesktopModeController: TaskbarDesktopModeController
|
||||
@Mock lateinit var nudgeController: NudgeController
|
||||
|
||||
lateinit var taskbarControllers: TaskbarControllers
|
||||
|
||||
@@ -100,6 +102,7 @@ abstract class TaskbarBaseTestCase {
|
||||
taskbarPinningController,
|
||||
optionalBubbleControllers,
|
||||
taskbarDesktopModeController,
|
||||
nudgeController,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user